编程语言在2011年中的起起落落

原文链接:http://drdobbs.com/mobile/232400093,编译:51cto

随着移动设备成为主流开发平台,脚本语言开始逐渐失势。在过去的一年里,编程领域迎来了翻天覆地的变化:移动设备成为编程工作的主要平台,而另一方面云也成为数据及应用程序的一大特定平台。

在过去的一年里,编程领域迎来了翻天覆地的变化:移动设备成为编程工作的主要平台,而另一方面云也成为数据及应用程序的一大特定平台。在二者之间,台式机与笔记本电脑则在内存容量及处理器核心数方面突飞猛进。可以预见的是,上述变化将给开发语言的选择带来深远影响。

极负盛名的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在代码使用规模方面达到了06年以来的最低水平——只有08年鼎盛时期的五分之一。我认为这种现象的出现,部分原因在于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则遭遇到完全相反的事态,即多种具有互操作性的备用语言逐渐占据上风)。

一年还不足以使一种趋势成为常态,因此上述变化将以何种方式收尾目前还无法得到定论。然而非脚本语言的发展由于其遍地开花的良好势头,可能真的预示着长期以来束缚着开发者们的固定习惯即将动摇。尽管执行平台在性能与接合的严密程度方面难免有所损失,但相比之下似乎一切都是值得的。结局会怎样?让我们拭目以待吧。

收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部