`

D语言的现状与前途

阅读更多
 D语言是被设计用来取代C/C++进行系统级开发的语言,由著名的C/C++编译器大牛Walter Bright设计和实现。D语言借鉴了C、C++、Java和C#等静态类型语言以及LISP、Python和Ruby等动态类型语言的优点,具有一系列非常吸引人的特性:它具有C/C++语言的进行底层开发的能力(能够直接嵌入汇编),又具有大量Java和C#的开发特性(比如自动垃圾回收,delegate等),还可以进行函数式编程,同时在语言级别支持一些数据结构(比如哈希字典,复数和元组等),软件工程方面的契约编程和单元测试等也引入其中。

这种种特性让D语言看起来非常吸引人,仿佛看到了系统开发的救世主,很多厌烦了C++和Java等的程序员投入到它的社区中,创立了很多相关的项目,主要是把C/C++的库移植到D语言中来,也有人进行正式的项目开发。

D语言的是由Walter Bright一个人设计和实现的,它的编译器DMD只开放了前端部分的源代码,可能是因为后端部分是他认为最后技术含量的部分,毕竟是从十几年的C/C++编辑器开发中积累起来的。D语言规范和DMD实现是典型的个人项目,一条单一的开发主线,版本好不停往上涨,变化频繁。他在2007年年初的时候发布了1.0版,本以为会是一个里程碑似的版本,给D语言的发展注入新的活力。可在1.0发布之后又在快速更新,现在已经更新到1.013版,从更新日志来看,语言本身的变化依然非常频繁,甚至关键字和操作符的变化都很快。

由于D语言本身和DMD编译器的过于不稳定,让一些热心的D语言开发者很郁闷,为了解决某个Bug而跟新编译器后,却使得原本在1.0下能够编译通过的代码在新版本的DMD下不能编译。3月11日,D语言的长期用户Chris Miller不得不再次在D语言的新闻组中发言要求DMD和D语言规范增加分支(DMD needs branches),以获得一个相对稳定的D语言版本,引来大水滔天,几乎所有人都支持这个请求。可Walter这个老顽固却死活不开窍,坚持使用他传统的C/C++项目开发方式,以为只要每次发布前都保证通过所有测试用例可以保证版本的向前兼容,甚至使用了-v1参数来获得一个相对稳定的1.0版本支持,其事实上效果相当差,还会给代码维护带来很大问题。为了让他明白创建分支的好处,很多人跳出来动之以情晓之以理,而他总是抱着解决某几个Bug就能解决稳定性的思路来回答。无奈决定权掌握在他一个人手里,大伙只能干着急,甚至有人提出了要单立门户的想法,可是没有后端部分的源代码,同时还要受到版权的限制,只能放弃。

Walter Bright是编译器的高手,这一点毋庸置疑,可他单枪匹马想独自一人创立一个被广泛使用的语言,还是相当难的,尤其是现在这种半开放源码方式和一根筋的不合作作风,要想D语言盛行几乎不可能。回想一下当前一些非常成功的项目,比如Linux和Python等,虽然当初只是一个人的创意,后来的发展也主要由创始人来把握方向,但它们在已开始就是一种完全开放的姿态,很快的吸引到大量的志同道合之式来合作开发,形成庞大的社区,最后走向了成功。

D语言本是非常有前途的,C/C++和Java等的众多弊病注定了需要一个新的更好的语言来取代,可由于Walter Bright的个人因素会导致他终究只能是少部分人的玩具,难以大面积推广应用。另外,随着JIT(实时编译)等优化技术的发展,并非要将静态类型语言编译成本地可执行代码才能够获得足够高的执行效率,动态语言同样可以用来进行对性能要求较高的系统开发,就更没有D语言的生存空间了,将是Python等动态语言的天下,非常看好和期待PyPy的进一步发展。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics