现在的位置: 首页 > 综合 > 正文

编程语言大趋势——评2007年11月TIOBE 排行榜

2013年10月04日 ⁄ 综合 ⁄ 共 4309字 ⁄ 字号 评论关闭

对于TIOBE本月发布的编程语言流行度排行榜,笔者总体的感觉是它更加明确地展示了过去几年来编程语言发展的态势。之前的排行榜显示的更多是战场的局部,或者一种暗流汹涌的不稳定状态,而本期排行榜可以看作是一个阶段性调整的完成,对于开发人员未来的选择有较大的指导意义。


Position
Nov 2007
Position
Nov 2006
Delta in Position Programming Language Ratings
Nov 2007
Delta
Nov 2006
Status
1 1 Java 20.542% +0.14%   A
2 2 C 13.969% -3.23%   A
3 4 (Visual) Basic 10.228% +0.76%   A
4 3 C++ 8.750% -2.30%   A
5 5 PHP 8.687% -0.52%   A
6 6 Perl 4.738% -1.49%   A
7 7 Python 4.227% +0.59%   A
8 8 C# 3.917% +0.89%   A
9 12 Ruby 3.084% +1.37%   A
10 9 JavaScript 2.928% +0.62%   A
11 10 Delphi 2.456% +0.20%   A
12 14 D 1.704% +1.02%   A
13 13 PL/SQL 1.179% -0.04%   A
14 11 SAS 1.129% -1.08%   A
15 16 Lisp/Scheme 0.754% +0.17%   A--
16 48 Lua 0.746% +0.66%   A--
17 17 COBOL 0.708% +0.14%   A--
18 15 ABAP 0.647% +0.01%   A--
19 19 Pascal 0.639% +0.12%   B
20 18 Ada 0.613% +0.07%   B

A

 

A

 

       首先看表A,目前领跑的5个编程语言Java, C, VB, C++ PHP 处于第一方阵。它们的份额都远远超过排在第6名的Perl,而且相互之间没有严重的应用领域重合,在未来的3-4年内很难被超越,对于追求稳定的企业市场,目前仍是第一选择。

通过图A2004-2005年的剧烈波动是由于Google搜索算法的改变引起的,可以忽略这一段的数据)可以看到,Java2001年以来一直在缓慢衰退。这似乎和发生在我们身边的情况不符,在中国的这7年时间里,软件业人员增长最大的一块是外包相关产业,而使用Java的项目至少占据了半壁江山。这说明了什么?这说明国内的软件业基本上以快速跟随领先者为特征,但对其发展方向影响甚微,类似于股市上追涨杀跌的散户,数量众多但没有话语权。

Java的另一个奇特的现象是,在Java平台上大多数的标志性发展都是在这个缓慢衰退期完成的,比如应用程序服务器的普及,MVC框架,关系数据库的O/R映射库,Ajax界面库的流行,以及其他大量“能够提高开发、维护效率”的开源项目。为什么没有更多的开发人员跟上来?没有必要的复杂性!一个Java程序员要差不多2年的时间才可以熟练配置应用服务器和有效整合各种“框架”。利用启动WebSphere的时间来冲一杯不错的咖啡如何?当人们发现即使是在世界500强企业的核心系统中,也不一定要用Java的各种“企业级特性”的时候,一窝风的奔向了LAMPPHP就是这样当了Java的新邻居,在Web 2.0的新兴市场赢得了巨大的成功。

       CC++似乎应该合并。它们的使用者大多是同一批人,用的是同样的开发工具。如果合并的来看,C/C++应当是最流行的编程语言。可是似乎我们身边的C/C++程序员不多?哦,只要数一数微软、SunOracle、以及做游戏软件的人就行了。C/C++在操作系统、编译器、数据库引擎、设备驱动、需要对硬件直接操作的嵌入式设备、对性能要求较强的图形游戏等等“系统软件”领域内,基本上是一种垄断的语言。C/C++份额的降低主要是来自于“应用软件”开发领域,尤其是桌面软件相对于网络软件的不断减少。然而C/C++将是有着非常长久生命力的语言,至少新的高级语言要用C/C++来写编译器或虚拟机。

       VB有些特殊,显示出了稳中有升的趋势。这只是表面现象。VB这个条目实际上包含了早期的Quick Basic等多个变种, 通常人们提及VB所指的VB6, 以及最新的VB.NET等的数据统计之和。我相信VB6 的曲线应该与C/C++类似,缓慢下降,VB.NET则与C#类似,缓慢上升。VB可以说是学习起来最容易的通用编程语言,在企业的内部开发人员中很受欢迎,因为这部分用户对新技术不是很热情,需要的是快速地解决业务问题,多数项目规模都不大。VB也很适合中小学教育机构用来教授学生基本的编程概念。不管怎么说,VB通过牺牲版本间的兼容,不断吸收业界的最佳语言设计元素,以及最重要的——保持简单性,一直拥有着一个独特的用户群。

       第一方阵中唯一的新面孔是PHP(也不是特别的新)。可以看到PHP2006年前的走势非常强劲,近2年来走势则相对平稳。PHP的成功在于专注于迅猛发展的web领域,其文本处理能力很强大,与Apache搭配后性能及稳定性非常优越。PHP也是最容易学的网络编程语言,其语法与CJava等“大括号”语言相像,可以很容易的吸引打算进入Web领域的大批以前使用C++的桌面软件开发人员。有什么好的想法?用10分钟装上PHP就开工吧!对于近期的发展有些停滞,笔者认为主要是缺乏广泛认可的应用程序框架。很多早期的PHP应用没有采用任何框架,很难维护,目前已经有了很多选择,但得到行业的认可仍然需要时间。

       排行榜的第二方阵由PerlC#PythonRubyJavaScript组成。

       PerlUnix上非常流行的控制台脚本语言,在web编程的早期更获得了不菲的成就。然而岁月不饶人,在本身改进不大的情况下,遇到了后来者的强大挑战。Java并不是Perl的真正敌人,只是抢走了web编程的部分份额,但PythonRuby则是和Perl的应用领域完全重合。三者之间的战争可以用你死我活来形容。虽然Perl在积极地酝酿新的版本,但笔者认为Perl的时代不会再来了,历史已经给足了Perl时间,但它没有抓住机会。换个名字加入革命阵营吧,或许可以重头再来。

       C# 保持着稳健的上升趋势。实际上C#代表了微软.NET平台的进展。如果把开发者分为微软阵营和非微软阵营,C#则是微软阵营的旗舰。把VBC#加起来大概可以看作微软.NET平台的份额,可以说仅次于Java平台。笔者相信很长时间内两个阵营都会继续扩大,C#没有强劲的阵营内敌手,采用率仍将继续目前趋势。

       PythonRuby的近期走势最为迅猛,两者都是动态类型语言,产生于开源社区,备受业界资深专家的青睐,俨然一副新一代代言者的架势。如果说哪怕一年之前去评论二者的前途,恐怕还需要谨慎的观察,甚者怀疑是否它们足够成熟,是否只是昙花一现。目前可以说它们先后超越了JavaScript, 已经确认了自己的地位,未来的发展将非常光明。Python尽管比较低调,但在西方教育领域不断深耕,“从娃娃抓起”。Ruby则高调宣传其web编程的杀手Rails,同时在计算机图书销售上凌驾于所有语言之上,“占领书架”。笔者认为Python的发展会弱于Ruby,一个原因是Python进入大众视野已经较久,仍然让同质的Ruby快步赶上,声势上就输了一节;在web编程上框架的选择虽比Ruby多,但热点散乱,不利于集中社区的力量,尤其在社区较新、规模远远小于Java.NET的情况下。另有一个非技术的猜测:Python的大蟒蛇形象虽然被社区反复澄清不是其名字的原意,但还是被用在了书籍的封面上,在基督教占大多数的美国,蛇可是万恶之源的形象,天生是来盅惑人类的,是否这个原因影响了Python的发展不得而知。这可比中国人不用Ruby仅仅因为其发明人是日本人严重太多了。

       有人写书说JavaScript是一种被人严重误解的语言。或许是吧。在多数程序员看来,JavaScript是一种讨厌但又不得不用的语言。Ajax会让JavaScript火上一段时间,或许很久。但我希望这个语言早点死去。只是为了在浏览器里搞出点花样,就得多学一种语言,实在是浪费。可能这也是Rails流行的一个理由,用RubyAjax用户界面,Rails自动转换成JavaScript, 很好!

       11名到20名形势相对简明。

       DelphiSASCOBOLPascalAda是没什么戏了,苟延残喘而已。

PL/SQL只要关系数据库还在就不会死,但随着各种语言将数据操纵部分集成进关键字或者二次封装,长期来说对开发人员的可见度将会降低,类似IDL的情况。

ABAPSAP系统的内置语言,相信SAP不会永远使用它,其命运将类似COBOLIBM系统里的命运。

Lisp/Scheme是老树开新花。随着动态语言的流行,函数型语言因为具有类似的灵活性而重新被认识。但函数型语言虽然强大,却过于学术化,始终没有被主流市场接受。Lisp/Scheme可能仍将是一种精英的语言。

D语言和Lua语言可以说是榜上的明星。D语言的目的是成为C++的继承者。其语法尽量接近C/C++,但进行了很多小的但实用的改进,并引入了垃圾收集等现代语言的特性。考虑到C++以前的巨大市场,还是可以吸引到很多不愿意转到JavaC#的开发人员。

Lua是一个可以嵌入在其他语言中的脚本语言。比如在一些游戏软件中,Lua被用来设计关卡和NPC人物的行为等等,而游戏的引擎部分则完全不带有具体游戏的情节等内容。如果你的软件需要给用户提供一个类似Office中的宏语言,让用户不只可以改变一些静态配置,还能改变或增加一些系统的行为,Lua是一个很好的选择。之前的一些游戏也有使用Python的,但Lua更小、更快、更简单、与宿主语言的集成更自然,更适合作为一种宏语言。

DLua的超速成长基本上都没有遇到很大的阻力。D的成功策略是对一个稍显落后但用户忠诚度很高的产品进行低成本的现代化改造。Lua的策略是明确的定位于一个小的独特市场并取得了相对的领先优势。对于初创的小公司来说,这些策略都是非常好的例子。

以上一口气评述了20个目前最流行的编程语言,是对是错将来自有分晓。笔者并不看重自己对于未来走势的预测。笔者真正在意的是,希望本文能让读者在选择编程工具时多一些思考。盲目的追随主流或人云亦云从来都是弱者的行为,不能带来最大的价值,特立独行需要勇气和思考,但勇气和思考对于成功者必不可少。 

 

 

抱歉!评论已关闭.