操作系统:Linux

编译器:gdc

在本文中,将使用三种方法实现Hello Word,分别使用D标准库,C标准库,和系统调用,以展示D语言的基本外观和系统编程能力,仅做抛砖引玉,至于语言方面的知识在后面的文章中会详细介绍


使用D标准库 writeln 函数版本

import std.stdio;

void main()
{
    writeln("Hello ", "World!");
}


使用C标准库 puts 函数

extern(C) int puts(const char *);

void main()
{
    puts("Hello World!\n".ptr);
}


直接使用系统调用 write

extern(C) int write(int fildes, const void *buf, size_t nbyte);

void main()
{
    write(1, "hello world\n".ptr, 12);
}


如果你有其它语言基础,那么D语言的语法看上去应该不陌生,感觉像C++有没有,不过这只是冰山一角,跟C++的区别还是相当的大的,不过从这三个版本我们可以看出D语言的以下特点

有包的概念

支持可变参数函数(实际上支持非常好,写一个支持可变参数的函数也非常简单)

支持直接调用C函数,只需要有C函数原型的声明即可,当然如果要调用标准C和系统调用以外的C函数只要加编译函数 -lxx 指定要链接的库名即可,与C语言一致。从这一点上可以看出,D在系统编程方面是不输C++的


如果你对C语言不熟悉或者对Linux不熟悉,理解上面的例子可能很困难,首先要想学习D语言,最好要先学习C语言,任何一个定位为系统编程的语言都不能摆脱C语言,对于D对C的兼容是二进制兼容,就是说D可以直接使用C语言编译后的二进制文件,这样做的好处是语法上不必兼容C,可以重新设计语言结构而不会有C语言的问题,C++就是因为从源码上兼容C,所以C的问题C++都有,而且还带来了更多的问题,从这个角度上讲C++的设计有很大的问题,而D的设计就是更好的系统编程语言。

有人可能会问,D语言能做web开发吗,当然能,PHP这么简单的语言都能做D一定是可以的,只不过目前还没有特别全面的框架和相关库程序,如果要做可能考虑直接使用FastCGI,或者使用vibe.d(一个异步IO网络库,看上去有点像Node.js的设计,目前已经做的很好了 详情请关注 http://vibed.org)