D入门

本文介绍了D语言的基础配置方法,包括官方编译器DMDDM的使用、IDE配置、开源项目资源,以及如何调用WINAPI和C代码。此外,文章还讨论了D语言在实际应用中的优缺点。

1. D语言排名一直在增长,  他的目标应该是一门实用的语言. 具体介绍下载它的D language .reference看看.

2. 有用资源

官方编译器链接器DMD DM不同版本. 大版本1和2有一定语法的区别, 笔者使用的是DMD2.

http://ftp.digitalmars.com/ 

开源D项目http://www.dsource.org/projects/ 

里面一个比较像样的IDE, Descent 是Eclipse的插件, 支持代码弹出;

还有一个就是build的程序bud.exe, 两者整合一起还比较好用;

3. IDE 配置

Descent 只需要到Eclipse -> Windows->Preferences->D 设置好DMD的路径, 打开Windows->perspetive->D即可.

Build的设置

Run->External tools->Open external tool dialog

添加一个新的program 路径指向BUD.exe的路径

设置Working dir as ${project_loc}/src 也就是当前工作目录, bud.exe 默认从project src这个目录找源代码, 当然也可以改为自己的source目录.

Argument: 似乎不用添加${resource_loc}   具体参数可以命令行查看bud.exe帮助.

${resource_loc} -names mpr.lib  advapi32.lib

建议在机器的系统环境变量添加PATH指向DMD的BIN目录那样,在Eclipse就不用配置Environment了

因为BUD.EXE要找到DMD.exe来编译和链接. 如果不添加则可在Environment tag增加.

Build就选择相应的D文件, 之后点工具栏的 >|  绿色的右三角右下角是灰色条的按钮(下拉找到bud这个external tool的名字), 就可以直接build。 Run exe的时候就右键选择exe点击Run as D application 

 4. D调用WIN API 和 C

private import std.c.windows.windows;

windows.d 定义了一些window数据类型,保持和windows风格一致.

extern(Windows) {

export LPVOID HeapAlloc(HANDLE hHeap, DWORD dwFlags, DWORD dwBytes);

}

extern (C) {
 export int access(in char* path, int mode);
}

注意到链接的时候,可能需要相应的LIB文件, 使用BUD.EXE build的时候请注意在Eclipse external tool argument里面添加相应的LIB文件.

要注意的是直接从VC或VS2003拷贝过来的LIB是没法给DMD直接使用的, 因为它的格式是COFF,  而BORLAND C里面使用的就是OMF格式的, DMD使用的库文件应该是兼容OMF的, 使用MS的LIB链接时会提示库文件非法, 转换LIB这个问题让笔者郁闷了两天.

解决办法是下载http://ftp.digitalmars.com/coffimplib.zip 使用这个就可以把MS的LIB转换成OMF的. 如果你有VC的库就用这个工具转吧. 有BC或者里面的库就可以直接使用吧?

网上似乎说使用IMPLIB.EXE可以把DLL转成LIB, digitalmars ftp下有个bup.zip里面有个IMPLIB但是笔者试过

导system32下的mpr.dll为mpr.lib但是无法使用.

里面还有个coff2omf.exe似乎说也是可以转COFF的到OMF格式, 但是笔者转了的库只有几K, 纳闷, 只好使用coffimplib.exe了。

 5. 学习了D一阵子, 它的编译速度是没话说的, 能编译出来个exe做些小工具的时候总比java写要打个虚拟机实在.

不过它release的exe还是蛮大的, 200KB, 可能是有虚拟机垃圾回收支持的原因吧。

phobos这个库基本的东西还是有的, 但对于实际应用来说tango这个库会是更好的选择, D作者确实鬼才, 但是希望D的作者能和这些库的作者多合作下, 没一个相对统一的库, 对语言普及还是有点影响的. JAVA还是.NET或者是PHP基本的库还是比较完备的.  直接用D来调用winapi做一个界面或做应用的时候挺累人. 而tango似乎只能在DMD1使用, 一些语法的变化例如alias invariant char*  string; 等等, 语法要稳定了向下兼容的.

开源的Eclipse超越了单干的JBUILDER.  如果有库的统一和IDE的支持, D能发展得更好.

 

 

 

 

D语言(Dlang)是由Digital Mars公司开发的编程语言,起因是为了改进C++。它与C二进制兼容(不完全),可编译为本地码,有GC也可手动管理内存,语法上借鉴多种语言,模板则 在C++的基础上做了相当大的扩充。D 语言既有 C 语言的强大威力,又有 Python 和 Ruby 的开发效率。它是一种集垃圾回收、手工内存操作、契约式设计、高级模板技术、内嵌汇编、内置单元测试、Mixin 风格多继承、类 Java 包管理机制、内置同步机制、内建基本运行时信息的系统级编程语言。 D语言是一种通用的系统和应用编程语言。它是比 C++ 更高级的语言,同时还保持了生成高效代码以及直接访问操作系统API和硬件的能力。D 很适合于编写从中等规模到那些由团队合作完成、数百万行代码规模的各种程序。D 易于学习,为编程者提供了很多便利,并且适用各种野心勃勃的编译器优化技术。 D 不是脚本语言,也不是一种解释型语言。它不需要虚拟机、宗教、或者高于一切的哲学。它是给实际的编程者使用的实际的语言,它帮助编程者快速、可靠的完成易于维护、易于理解的代码。 D 是数十年来实现多种语言编译器的经验的积累,是用那些语言构造大型工程的尝试的积累。D 从那些语言(主要是 C++ )那里获得了灵感,并使用经验和现实世界中的实用性来驯服它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值