【IT168 资讯】Tiobe近日公布了2009年5月的编程语言排行榜,本期榜单前十名没有变化,Java、C、C++依然以绝对优势占据前三甲的位 置;VisualBasic在4月出现了1.16%的下滑,但依旧以8.631%的占有率守住前五名的关口。本期前十名的语言分别是:Java、C、 C++、PHP、VisualBasic、Python、C#、t、Perl、Ruby。
2009年5月TIOBE编程语言排行榜前20名榜单
本期排行榜我们将把视线转移到榜单的前20名,关注D语言的大幅下滑。2007年1月推出正式版的D语言以C++替代者的形象出现在程序员的视野,成长 迅速,在08年下半年到09年4月间的编程语言排行榜中一直保持着第十二名的位置,08年底还表现出冲击前十的趋势;而在本期排行榜中,D语言急速下滑, 跌至第十七位。本文将结合本期榜单,与您一起回顾D语言的迅速崛起与没落。
D语言是由 DigitalMars公司的WalterBcenter所开发的面向对象、指令式、多范型系统程式设计语言。D语言起源自C++,并受到C++很大的影 响,不过D语言并不是C++的变种。D语言对C++的部分特性重新设计,并受到其它编程语言观念的影响,如Java、C#以及Eiffel。D语言从 2004年开始开发,2007年1月2日释出1.0稳定版本。实验性版本2.0 释出于2007年1月17日。
D语言的设计来自实际的C++ 用法的经验教训,而不是从理论的角度。尽管D 用到很多C/C++观念,D同时也废除了某部分,因此D语言并不完全向后相容C/C++ 源代码。D加入了 C++的功能,也实作了契约式设计(designbycontract)、单元测试、真正的模组性、自动化内存管理(垃圾回收)、第一类阵列 (firstclassarray)、关联阵列、动态阵列、阵列切片、嵌套函式(巢状函式)、内部类别、闭包的限制形式、匿名函式、编译时期函式执行、惰 性计算以及革新的模板语法。D保有C++ 的性能以进行低阶程式设计,并加入完整的内联组译器支援。C++ 的多重继承改以 Java单继承与接口混合的风格取代。D的宣告、语句和表达式语法几乎和 C++ 一样。
内联组译器(inline assembler)象征著 D 和Java、C#等应用编程语言的不同。内联组译器让程式员输入机器特定的组合语言码,如同标准D代码—通常由系统程式员使用的技术,以存取处理器的低阶 功能,直接以硬件下的界面执行程式,如操作系统以及驱动程式。
D语言内建文档支持,不过目前为止,只有 Digital Mars 实作版本提供文件产生器。
程式设计范型-D语言支援三种主要的程式设计范型—指令式、面向对象以及元程式设计。
指令式-指令式程式设计几乎和C语言一样。函式、资料、语句、宣告以及表达式的运作就如同 C 一般,且可直接存取 C 执行时期程式库。
面向对象-在D语言里面的面向对象程式设计,是以单继承分层结构,配合所有类别衍伸自类别物件为基础。多重继承可使用界面(界面很像C++的抽象类别)。
元程式设计-以模板组合、编译时期函式执行、多元组以及字串混合来支援元程式设计。
内存管理-内存通常以垃圾回收管理,不过当这些物件超出作用域时,可立即结束指定的物件。还是可以使用重载运算子 new和delete,以及简单的直接呼叫 C 的 malloc 和free以进行显示的内存管理。垃圾回收可禁用个别的物件或事件,以健全整个程式,如果在内存管理上有更多的控制,则更为理想。当垃圾回收在程式中有所 不足时,手册还提供许多如何实作不同的高度非常好的化内存管理方案的范例。
与其它系统的相互作用-支援 C 的应用程式二进制接口(ABI),以及 C 的基本和衍伸型态,就能直接存取现有的 C 代码以及程式库。C的标准函式库也是D 标准的一部分。除非你使用非常清楚的命名空间,它可以稍微散乱的存取,因为它散布遍及于 D 模组—不过纯粹的D标准函式库也通常够用,除非要与 C 代码接合。
并未完整支援 C++ 的 ABI,尽管 D 可以存取写给 C ABI 的 C++ 代码,且可存取C++COM(元件物件模型)代码。D 语法分析器了解外部(C++)呼叫约定,以连结 C++ 物件,不过它只实作在目前的实验性D2.0。