12月編程語言排行榜:三大沒落與三大輝煌
原創(chuàng)【51CTO獨家特稿】2009年12月的TIOBE編程語言排行榜在周末推出了,這是本年度的最后一份榜單。年終排名前三甲為Java、C語言和PHP,其中Java保持了王者的位置,但占有率卻連年下滑;C語言保持了第二的地位,并且占有率相當(dāng)穩(wěn)定;PHP則是在今年的九月份超越C++而進(jìn)榜。
首先讓我們看一看今年年底和去年12月榜單相比,前二十名的變化。
對比這兩份榜單,可以看到編程語言的趨勢在過去這一年間的一些顯著變化。前二十名的榜單當(dāng)中有一些變化十分值得注意,51CTO為2009年的這一系列趨勢變化評選出了上升勢頭最強進(jìn)的三個語言,以及三門正在逐步走向死亡的三大語言。欲了解更多趨勢,可查閱51CTO的編程語言排行榜專題。
上升勢頭強勁的語言
第三名:JavaScript
在今年的六月榜單上,腳本語言JavaScript達(dá)到了4.021%的市場占有率,創(chuàng)下了一個歷史制高點。
2009年的一大趨勢是腳本語言的發(fā)展。事實上,現(xiàn)在的榜單中的PHP、Python、JavaScript、Perl和Ruby均為腳本語言,占據(jù)了前十名名單中的半壁江山(參考09年四月榜單)。
JavaScript是Web瀏覽器的語言,是一門重要的語言,流行度非常高,但也一直處于被開發(fā)者輕視的地位。這個與JavaScript門檻低,大部分代碼質(zhì)量偏低有關(guān):這往往造成安全、性能方面一系列的問題。但事實上JavaScript的特性之豐富與復(fù)雜性決定了編寫優(yōu)秀的JavaScript代碼并不是一件容易的事情,而優(yōu)秀的JavaScript可以出色的實現(xiàn)十分豐富的功能。
JavaScript還有其他的問題,比如在不同瀏覽器下的不兼容性等等(不過這個問題已經(jīng)有了初步的解決方法,詳見這篇文章)。未來幾年間,JavaScript的部分功能可能會被HTML 5所取代,然而即使是HTML 5最前沿的支持者Google也并沒有看低JavaScript;相反,Google在09年11月公開了自己的JavaScript工具Closure,在某種程度上是對JavaScript的支持,鼓勵開發(fā)者產(chǎn)出性能更高、錯誤更少的JavaScript代碼。對于Web開發(fā)者而言,無論你多么輕視它,JavaScript都是一個你無法忽視的語言。
JavaScript的最新版本將是JavaScript 2.0。
第二名:PHP
PHP自今年9月開始經(jīng)歷了一個標(biāo)志性的突破:其占有率超越了C++,擠入了TIOBE榜單的前三甲,一直保持到本月。
對于這個Web開發(fā)之王(到08年底為止,國內(nèi)網(wǎng)站中PHP網(wǎng)頁的數(shù)量是相對最多的,而在國際互聯(lián)網(wǎng)網(wǎng)站中雖然目前沒有具體數(shù)據(jù),不過PHP在網(wǎng)站開發(fā)領(lǐng)域的流行是不置可否的事實),之前的文章已經(jīng)評論了很多了,在這里就不再贅述。
對于PHP在未來Web開發(fā)中的潛力,51CTO的這個訪談專題可能會對你有一些參考價值。下一個眾人矚目的PHP版本是PHP 6,而Unicode編程則是眾人關(guān)注的焦點。
第一名:C#,被注入強心劑的微軟語言
雖然排名沒有變化,但C#的漲幅卻是最為顯著的,這使得C#極有可能成為2009年的年度語言。
C#可以說是現(xiàn)今微軟平臺上最重要的語言。.NET平臺在誕生之后的好幾年內(nèi)都呈現(xiàn)一片混亂的狀態(tài),而之后脈絡(luò)的清晰化可以說和C#語言的崛起密不可分(參考閱讀:51CTO八月編程語言排行榜)。
C#語言看起來和Java語言極像,事實上它在設(shè)計上也的確是綜合了C、C++和Java的很多優(yōu)良特性。而與很多語言在更新、添加新功能上受到很多指責(zé)不同(這其中很多是“無用的新特性令語言更加復(fù)雜臃腫”的論調(diào)),C#的每一次更新幾乎都得到了一致的贊美,特別是最新的C# 4.0(目前仍在Beta期間)由于其在動態(tài)類型上的創(chuàng)新被人贊不絕口。C#毫無疑問是一個值得關(guān)注的語言。
除了上述三個語言之外,用于iPhone應(yīng)用開發(fā)的Objective-C語言和用于Flex平臺開發(fā)的ActionScript語言也由于擠進(jìn)了前二十名榜單而被人提名。不過相比上述的三個語言,這兩個語言的應(yīng)用范圍都略顯狹隘,在本次回顧中便略微提起一下就是了。
接下來,讓我們關(guān)注一下三大正在死亡中的語言。
#p#
正在死亡的語言
第三名:D語言
D語言是一門類C++的語言,原意是打算成為C++的替代者。然而自從09年初開始,D語言開始經(jīng)歷了連續(xù)一年慘痛的下滑。
對于D語言的下滑,在09年5月的排行榜上,51CTO編輯進(jìn)行了詳細(xì)的論述。總的來說,D語言局限在對C++進(jìn)行修正并添加新功能的誤區(qū)當(dāng)中,導(dǎo)致其過分強調(diào)功能;而其自身的標(biāo)準(zhǔn)函數(shù)庫又過于簡單,無法滿足程序員的需求。
雖然D語言仍在不斷改進(jìn),但在51CTO編輯看來,如果D語言在改進(jìn)過程中不吸取教訓(xùn),設(shè)計缺乏方向性與針對性,那么恐怕會在C++之前,成為一門早早死亡的語言。
第二名:COBOL語言
COBOL語言在09年12月的前二十名榜單中已經(jīng)看不見了——它已經(jīng)下滑到了第23位。做為一個已經(jīng)五十歲高齡的老語言,COBOL語言的死亡幾乎已經(jīng)是業(yè)內(nèi)的定論。
COBOL語言的死亡早已不是什么新鮮事,早在幾年前甚至十幾年前就有人這樣宣告過了。然而COBOL語言現(xiàn)在的占有率仍然不可忽視。做為最早的高級商業(yè)語言,當(dāng)前商業(yè)領(lǐng)域的很多企業(yè)仍然在使用著這門語言。這就帶來一個值得思考的話題:一個語言的死亡應(yīng)該被如何定義?很明顯,對于COBOL而言,這不能簡單的通過“還有沒有人在使用它”來判定。COBOL語言仍然有人使用的一個很重要的原因在于拋棄這個語言將會產(chǎn)生的巨大成本,而COBOL語言如果能夠帶來一次銀彈般的創(chuàng)新,那么已經(jīng)躺在墳?zāi)估锏腃OBOL再次出來活蹦亂跳幾十年也并非沒有可能。
這個有關(guān)語言死亡的爭議性話題對于下面這位也同樣適用——
第一名:Java,正在老去的王者
Java既是一個平臺又是一個語言。沒有人質(zhì)疑Java平臺的強大與光輝前景,然而這幾年來,有關(guān)Java語言即將死亡的論調(diào)已經(jīng)吸引了越來越多的目光與爭論。
#T#Java語言崛起并占據(jù)開發(fā)領(lǐng)域王者的過程與其“一次編寫到處運行”的特性是密不可分的。當(dāng)然,Java語言的語法干凈,功能強大,這也是它能夠流行的重要原因。然而最近幾年,Java的更新速度越來越慢,已經(jīng)無法滿足日趨復(fù)雜的項目需求。謹(jǐn)慎的更新固然有其自己的道理,尤其是Java現(xiàn)在已經(jīng)相當(dāng)?shù)凝嫶笥纺[;然而Java語言越來越無法緊跟著IT界日新月異的變化已經(jīng)十分明顯。
站在風(fēng)口浪尖上的,一個是Java EE 6,一個是Java 7。自Sun被甲骨文收購之后Java EE的未來就不被看好,而Java EE 6的草案歷經(jīng)千辛萬苦之后才終于在本月初得到了通過。這時距離草案的提交已經(jīng)度過了兩年多的歲月。投票結(jié)果是12票通過1票反對(以及1票無效2票棄權(quán)),但在Java EE 6規(guī)范的背后要比投票結(jié)果更加復(fù)雜,對平臺支持注入編程的擔(dān)心以及對缺失了承諾的“充分許可條款”的不滿預(yù)示著Java EE 6的未來將充滿坎坷,并很有可能被分化并取代(參考閱讀:Java EE 6遙遙無期 預(yù)覽版兩極分化)。
另一方面Java 7的進(jìn)展也并非一帆風(fēng)順。09年愚人節(jié)有個笑話說未來可能不再有Java 7而只有JDK 7,雖然看似惡搞但內(nèi)容確實有其獨到之處。從一件事情可以看出人們對Java 7語言本身的興趣正在降低:08年Java 7被宣告不包括閉包特性之時,很多人表示失望,并仍然希望閉包特性能夠最終進(jìn)入Java 7;09年11月,Sun改變了主意,宣布Java 7將迎接閉包的加入,卻發(fā)現(xiàn)人們似乎已經(jīng)沒那么在乎了,甚至有些罵不絕口的趨勢。有人說,Java 7有沒有閉包都無所謂了,因為我照樣可以使用Groovy或Scala實現(xiàn)我需要的功能。另一方面,對于Java 7平臺的一些變化,如JVM動態(tài)語言支持,卻受到了廣泛的好評。
這一切似乎都已經(jīng)預(yù)示著Java語言正在被Java平臺拋棄。事實上,Sun也曾經(jīng)表示過對Java平臺的重視將遠(yuǎn)遠(yuǎn)超過Java語言。在51CTO編輯看來,Java語言的老去并不悲壯——Java語言被取代這一過程可能會與古代“禪讓”之禮十分類似,甚至Java平臺上將出現(xiàn)很多諸侯國百家爭鳴的局面:強靜態(tài)、合并函數(shù)式與面向?qū)ο筇匦缘?a target="_blank" >Scala語言(事實上Java之父Gosling已經(jīng)對Scala表示了認(rèn)可),敏捷的類Java動態(tài)語言Groovy,源自Ruby的JRuby,源自Python的Jython,等等等等。如果這是Java平臺未來的形式,那么Java語言將毫無疑問成為編程語言的歷史上一位真正的王者。
最后是其他排行和趨勢。
#p#
榜單21-50名:
前十名語言發(fā)展趨勢圖:
靜態(tài)語言與動態(tài)語言占有率對比: