回顾2011年编程语言领域的起起落落
英文原文:The Rise and Fall of Programming Languages in 2011
在过去的一年里,编程领域迎来了翻天覆地的变化:移动设备成为编程工作的主要平台,而另一方面云也成为数据及应用程序的一大特定平台。在二者之间,台式机与笔记本电脑则在内存容量及处理器核心数方面突飞猛进。可以预见的是,上述变化将给开发语言的选择带来深远影响。
极负盛名的 Tiobe 编程语言排名榜(一份相当权威的榜单,不仅密切关注各种语言及衍生产品,还会以百分比形式及时公布具体的变动幅度)表示,在过去一年中发展势头最强劲的语言为 Objective-C。我相信大家对这一结果应该不会太过惊讶。随着 iPhone、iPod 以及 iPad(Mac 也在一定程度上推波助澜)在全球范围内的风靡,对 Objective-C 使用技能的需求也得到了显著提高。
移动设备的兴起同样对 Java 造成冲击。尽管在过去十年中,Java 在 Tiobe 榜单上的各项数据已经处于衰退之中,但近两年却又有卷土重来之势——我相信这与 Android 开发领域的繁荣密不可分——一年来,Java 甚至成功捍卫了自己的市场占有率。根据我的分析,Android 平台的出现成功为 Java 找到了一展身手的空间,尤其是在诸如 Scala、Groovy 以及 JRuby 等 JVM 语言逐步蚕食台式机及服务器平台的大环境之下,新平台堪称是 Java 的救星。
随着移动编程的繁荣发展,开发人员们也将注意力转移到较为低级但更贴近硬件本身的编程语言上。通常情况下,由于移动设备上的应用程序往往使用较小的代码库,同时充分发挥硬件功能也需要使用特定种类的语言,因此脚本语言在这方面也显得较为疲软(苹果公司对编程语言及工具的严格控制也助长了这种趋势)。综上所述,多年以来(也可能是有史以来)各种主流脚本语言——包括 Perl、Python、Ruby 以及 PHP 等——第一次兵败滑铁卢。其中 Python 与 Ruby 则折戟沉沙得更加彻底。
根据 Ohloh.net 网站的总结,Ruby 作为一款开源编程语言赢得了开发者们广泛的关注,这从其获得的捐赠数额上可见一斑;凭借这样的人气,Ruby 占据了 Tiobe 排行榜中的榜眼位置。而去年 Ruby 在代码使用规模方面达到了 2006 年以来的最低水平——只有 2008 年鼎盛时期的五分之一。我认为这种现象的出现,部分原因在于 Ruby on Rails(简称 RoR)引发的热潮渐渐平息;另外虽然 Ruby 框架本身不存在任何固有缺陷,但必须承认它只能作为大型项目的备选解决方案之一,而无法搞定所有问题。另外,其它类型的框架也已经开始在原创优势方面痛下苦功,这进一步削弱了 RoR 的卖点。Python 在 Tiobe 排行榜中的下滑并没有反映在 Ohloh 统计数字中,这可能表明尽管 Python 用户群体并未缩水,但由于市场整体规模的迅速扩张,导致其相对份额变得更小。
我个人认为 PHP 的颓势主要源自 JavaScript 的崛起。JavaScript 虽然在 Tiobe 排行榜中的晋升幅度并不夸张,但其在开源软件项目中的使用比例却有了长足进步。PHP 与 JavaScript 在功能性方面有着一定程度的重叠,而很明显后者正慢慢成为时代的宠儿。一项新的调查(感谢 PHP 的出品公司 Zend 预先向我们透露了这份调查内容)显示,82% 的 PHP 开发人员将 JavaScript 作为第二语言(而在二者之外排到第三位的竞争者 Java 则仅占据了微不足道的 24%)。不过目前还难以判断 JavaScript 是否能够将这种优势一直保持下去。正如我在几个月前的文章中所说,我越来越认同 JavaScript 将成为一种通用型中间语言的趋势,而 Coffeescript 与 Dart 等则会成为前端语言的主流代表。就个人而言,我希望各浏览器厂商能够愿意将 JavaScript 编译化二进制程序作为未来浏览器加速机制的重要组成部分;不过我认为这同时可能会给某些浏览器在指令扩展方面走向开源,进而阻碍有针对性的性能优化。
由脚本语言转向本机语言的的流行趋势在 .NET 领域也表现得相当明显。C#的一炮而红就很说明问题(其提升幅度仅次于 Objective-C 而排在第二),这股趋势甚至一举让 C# 稳居 C++ 之上,占据了 Tiobe 排行榜的探花位置。我相信这种增幅在很大程度上与开发人员脱离 Visual Basic 有关。这种趋势非常奇怪地削弱了 .NET 的主旨,即开发者在同一平台上使用多种互操作语言的习惯。但事实上,与 .NET 相关的各类语言紧密围绕在了以 C# 为核心的中央周围,进而弱化了原有使用习惯带来的益处(具有讽刺意味的是,JVM 则遭遇到完全相反的事态,即多种具有互操作性的备用语言逐渐占据上风)。
一年还不足以使一种趋势成为常态,因此上述变化将以何种方式收尾目前还无法得到定论。然而非脚本语言的发展由于其遍地开花的良好势头,可能真的预示着长期以来束缚着开发者们的固定习惯即将动摇。尽管执行平台在性能与接合的严密程度方面难免有所损失,但相比之下似乎一切都是值得的。结局会怎样?让我们拭目以待吧。
【相关链接】
2011年 12 月编程语言排行榜:C#快取代第三名的C++
2011年 11 月编程语言排行榜:Objective-C能成为年度编程语言?
2011年 7 月编程语言排行榜:Objective-C将成为年度语言
2011年 5 月编程语言排行榜:C#与 Objective-C创新高