12月編程語言排行榜:三大沒落與三大輝煌
原創【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名:
前十名語言發展趨勢圖:
靜態語言與動態語言占有率對比: