【51CTO独家特稿】2009年12月的TIOBE编程语言排行榜在周末推出了,这是本年度的最后一份榜单。年终排名前三甲为Java、C语言和PHP,其中Java保持了王者的位置,但占有率却连年下滑;C语言保持了第二的地位,并且占有率相当稳定;PHP则是在今年的九月份超越C++而进榜。
首先让我们看一看今年年底和去年12月榜单相比,前二十名的变化。
对比这两份榜单,可以看到编程语言的趋势在过去这一年间的一些显著变化。前二十名的榜单当中有一些变化十分值得注意,51CTO为2009年的这一系列趋势变化评选出了上升势头最强进的三个语言,以及三门正在逐步走向死亡的三大语言。欲了解更多趋势,可查阅51CTO的编程语言排行榜专题。
上升势头强劲的语言
第三名:JavaScript
在今年的六月榜单上,脚本语言JavaScript达到了4.021%的市场占有率,创下了一个历史制高点。
2009年的一大趋势是脚本语言的发展。事实上,现在的榜单中的PHP、Python、JavaScript、Perl和Ruby均为脚本语言,占据了前十名名单中的半壁江山(参考09年四月榜单)。
JavaScript是Web浏览器的语言,是一门重要的语言,流行度非常高,但也一直处于被开发者轻视的地位。这个与JavaScript门槛低,大部分代码质量偏低有关:这往往造成安全、性能方面一系列的问题。但事实上JavaScript的特性之丰富与复杂性决定了编写优秀的JavaScript代码并不是一件容易的事情,而优秀的JavaScript可以出色的实现十分丰富的功能。
JavaScript还有其他的问题,比如在不同浏览器下的不兼容性等等(不过这个问题已经有了初步的解决方法,详见这篇文章)。未来几年间,JavaScript的部分功能可能会被HTML 5所取代,然而即使是HTML 5最前沿的支持者Google也并没有看低JavaScript;相反,Google在09年11月公开了自己的JavaScript工具Closure,在某种程度上是对JavaScript的支持,鼓励开发者产出性能更高、错误更少的JavaScript代码。对于Web开发者而言,无论你多么轻视它,JavaScript都是一个你无法忽视的语言。
JavaScript的最新版本将是JavaScript 2.0。
第二名:PHP
PHP自今年9月开始经历了一个标志性的突破:其占有率超越了C++,挤入了TIOBE榜单的前三甲,一直保持到本月。
对于这个Web开发之王(到08年底为止,国内网站中PHP网页的数量是相对最多的,而在国际互联网网站中虽然目前没有具体数据,不过PHP在网站开发领域的流行是不置可否的事实),之前的文章已经评论了很多了,在这里就不再赘述。
对于PHP在未来Web开发中的潜力,51CTO的这个访谈专题可能会对你有一些参考价值。下一个众人瞩目的PHP版本是PHP 6,而Unicode编程则是众人关注的焦点。
第一名:C#,被注入强心剂的微软语言
虽然排名没有变化,但C#的涨幅却是最为显著的,这使得C#极有可能成为2009年的年度语言。
C#可以说是现今微软平台上最重要的语言。.NET平台在诞生之后的好几年内都呈现一片混乱的状态,而之后脉络的清晰化可以说和C#语言的崛起密不可分(参考阅读:51CTO八月编程语言排行榜)。
C#语言看起来和Java语言极像,事实上它在设计上也的确是综合了C、C++和Java的很多优良特性。而与很多语言在更新、添加新功能上受到很多指责不同(这其中很多是“无用的新特性令语言更加复杂臃肿”的论调),C#的每一次更新几乎都得到了一致的赞美,特别是最新的C# 4.0(目前仍在Beta期间)由于其在动态类型上的创新被人赞不绝口。C#毫无疑问是一个值得关注的语言。
除了上述三个语言之外,用于iPhone应用开发的Objective-C语言和用于Flex平台开发的ActionScript语言也由于挤进了前二十名榜单而被人提名。不过相比上述的三个语言,这两个语言的应用范围都略显狭隘,在本次回顾中便略微提起一下就是了。
接下来,让我们关注一下三大正在死亡中的语言。
#p#
正在死亡的语言
第三名:D语言
D语言是一门类C++的语言,原意是打算成为C++的替代者。然而自从09年初开始,D语言开始经历了连续一年惨痛的下滑。
对于D语言的下滑,在09年5月的排行榜上,51CTO编辑进行了详细的论述。总的来说,D语言局限在对C++进行修正并添加新功能的误区当中,导致其过分强调功能;而其自身的标准函数库又过于简单,无法满足程序员的需求。
虽然D语言仍在不断改进,但在51CTO编辑看来,如果D语言在改进过程中不吸取教训,设计缺乏方向性与针对性,那么恐怕会在C++之前,成为一门早早死亡的语言。
第二名:COBOL语言
COBOL语言在09年12月的前二十名榜单中已经看不见了——它已经下滑到了第23位。做为一个已经五十岁高龄的老语言,COBOL语言的死亡几乎已经是业内的定论。
COBOL语言的死亡早已不是什么新鲜事,早在几年前甚至十几年前就有人这样宣告过了。然而COBOL语言现在的占有率仍然不可忽视。做为最早的高级商业语言,当前商业领域的很多企业仍然在使用着这门语言。这就带来一个值得思考的话题:一个语言的死亡应该被如何定义?很明显,对于COBOL而言,这不能简单的通过“还有没有人在使用它”来判定。COBOL语言仍然有人使用的一个很重要的原因在于抛弃这个语言将会产生的巨大成本,而COBOL语言如果能够带来一次银弹般的创新,那么已经躺在坟墓里的COBOL再次出来活蹦乱跳几十年也并非没有可能。
这个有关语言死亡的争议性话题对于下面这位也同样适用——
第一名:Java,正在老去的王者
Java既是一个平台又是一个语言。没有人质疑Java平台的强大与光辉前景,然而这几年来,有关Java语言即将死亡的论调已经吸引了越来越多的目光与争论。
#T#Java语言崛起并占据开发领域王者的过程与其“一次编写到处运行”的特性是密不可分的。当然,Java语言的语法干净,功能强大,这也是它能够流行的重要原因。然而最近几年,Java的更新速度越来越慢,已经无法满足日趋复杂的项目需求。谨慎的更新固然有其自己的道理,尤其是Java现在已经相当的庞大臃肿;然而Java语言越来越无法紧跟着IT界日新月异的变化已经十分明显。
站在风口浪尖上的,一个是Java EE 6,一个是Java 7。自Sun被甲骨文收购之后Java EE的未来就不被看好,而Java EE 6的草案历经千辛万苦之后才终于在本月初得到了通过。这时距离草案的提交已经度过了两年多的岁月。投票结果是12票通过1票反对(以及1票无效2票弃权),但在Java EE 6规范的背后要比投票结果更加复杂,对平台支持注入编程的担心以及对缺失了承诺的“充分许可条款”的不满预示着Java EE 6的未来将充满坎坷,并很有可能被分化并取代(参考阅读:Java EE 6遥遥无期 预览版两极分化)。
另一方面Java 7的进展也并非一帆风顺。09年愚人节有个笑话说未来可能不再有Java 7而只有JDK 7,虽然看似恶搞但内容确实有其独到之处。从一件事情可以看出人们对Java 7语言本身的兴趣正在降低:08年Java 7被宣告不包括闭包特性之时,很多人表示失望,并仍然希望闭包特性能够最终进入Java 7;09年11月,Sun改变了主意,宣布Java 7将迎接闭包的加入,却发现人们似乎已经没那么在乎了,甚至有些骂不绝口的趋势。有人说,Java 7有没有闭包都无所谓了,因为我照样可以使用Groovy或Scala实现我需要的功能。另一方面,对于Java 7平台的一些变化,如JVM动态语言支持,却受到了广泛的好评。
这一切似乎都已经预示着Java语言正在被Java平台抛弃。事实上,Sun也曾经表示过对Java平台的重视将远远超过Java语言。在51CTO编辑看来,Java语言的老去并不悲壮——Java语言被取代这一过程可能会与古代“禅让”之礼十分类似,甚至Java平台上将出现很多诸侯国百家争鸣的局面:强静态、合并函数式与面向对象特性的Scala语言(事实上Java之父Gosling已经对Scala表示了认可),敏捷的类Java动态语言Groovy,源自Ruby的JRuby,源自Python的Jython,等等等等。如果这是Java平台未来的形式,那么Java语言将毫无疑问成为编程语言的历史上一位真正的王者。
最后是其他排行和趋势。
#p#
榜单21-50名:
前十名语言发展趋势图:
静态语言与动态语言占有率对比: