作者Andrew Binstock,2013年1月8日

C++的復興并沒有出現,JAVA活的非常好,Object-C仍然原地打轉。都發生了什么?

編程語言們經常遵循這么一種生存規律:他們出生后,幸運的那部分并不會在初期就消亡,這部分有時候可以活的更久、更滋潤,然后,不可避免的進入到衰退期。和真實的生命不同,編程語言的衰退期可以持續很多年,因為很多遺留下來的代碼需要在未來若干年內進行維護。一個編程語言在過去越流行,它的消亡期也會持續的越久。

一種新編程語言的誕生總是伴隨著一個特定領域的需求而出現的,例如,Ruby的突然流行是伴隨著Ruby on Rails(一種開發框架)出現的,那時候正是2007年iPhone剛剛上市的時候。因此,理解編程語言的上升或者下降——也包括起伏的趨勢——經常會傳遞給人們一些當前編碼問題領域中有價值的觀點。

最近的處理器現象——從多核心(multicore)到眾核心(many-core)的過渡經常被認為給函數式語言的出現奠定了基礎,因為函數式語言能更好的適應并行編程,但是,在2012年中的大部分調查中,卻并沒有看到這個領域有什么突破。如果有能夠脫穎而出的函數式語言,很可能是Scala和Clojure,因為Scala目前在該領域占有的份額較大。(這個觀點的根據是,Ohloh's編程語言圖解 ,此圖覆蓋了所有的開源項目,和Google搜索流量趨勢。在比較權威的 Tiobe索引中——它會跟蹤所有包含特定編程語言的網頁的數量,Haskell, Erlang, and Scala都緊緊地跟著和壓著Clojure.)

編程語言流行度數據往往會讓一些語言的支持者和反對者都感到沮喪。多年以來,人們總是舉很多例子來預測JAVA將會衰落,但是,來自于上面提到的那三個網站的數據卻顯示了相反的趨勢。一年過了一年,JAVA的排名在最近的三年中一直沒有變過,在所有主流語言的調查中,JAVA一直保持在第一或者第二(始終在C語言附近)。這個事實可能會引起人們對于編程語言的不斷的抱怨,以及在JVM上運行多個語言的可行性(JRuby、Scala、Kotlin、Clojure、Fantom、Gosu,和一些其他的)卻沒有減少JAVA的流行度,但是,我認為更大的真相是,使用傳統架構的語言確實正處于衰落期,但是Android的興起卻恰恰彌補了這個不足。

其他的主要開發移動應用的編程語言,比如Objective-C,也做的非常好:他在Tiobe索引排名中興風作浪(搜集了很多年內編程語言的成長信息)。在Google趨向分析中,2007年之后,它一直保持在相同的排名(當iPhone第一次上市,移動應用開發變的非常有用的時候)。但是,如果Android繼續蠶食Apple在世界市場的份額,我們在未來應該可以看到Objective-C會保持穩定,而Java將會增長。

在一些通用腳本語言中,Python持續慢速增長,JavaScript和Ruby則止步不前,Perl進入到了漫長的衰弱期。根據Google趨勢分析,Perl的搜索量是2004年的19%。他在開源社區中的地位急劇下跌和它本身處于不可挽回的的衰落期密不可分。一個人應當很謹慎的宣布一個編程語言已經死亡或者正在死亡,因為編程語言的復活幾率是相當低的: 這里并不包括JavaScript和Objective-C,它倆是兩個例外。但是,由于Python更具有競爭力,并且相當流行,因此,Perl看起來并不可能在實際應用中重振雄風(相反,當Objective-C和JavaScript殺回來的時候,他們并沒有替代品,因此他們可以東山再起)。

主要的原生語言,C和C++,仍然保持原樣,在不同的調查報告中有微小的上升和下降。這些數據打破了微軟的Herb Sutter關于C++“復興“的預言。Google的搜索趨勢圖則表明了在過去的五年內,C++的搜索量一直在穩步下滑:

enter image description here

大多數已知的編程語言在過去的五年中的Google搜索量都處在一個下降的趨勢,因此,這種下降并不一定是消亡的象征——雖然如果這個語言正處在復興的階段,你可能更希望看到它能處于上升趨勢中。一些其他的指標(例如在OSS中LOCs的改變),事實上非常穩定,有些甚至稍微上漲了一些。我認為Sutter那部分關于復興的期望是建立在C++11標準已經完成的基礎上的,同時也來源于最近發行的Windows 8與最新的C++兼容的相當好的事實。但是,我卻沒并沒看到任何C++復興的跡象,同時,我也沒看到任何C++快速會跌落到谷底的預兆。如果C++復興可能發生的話,它必須成為可以在今天最熱門的領域中使用的主要語言之一:移動應用,或云計算、抑或大數據,時間將會證明這一點。但是我可以很確定的說,C++可以在它的傳統領域持續成長,成長速度可以和這些領域的成長速度相同。

一些其他想法:Lua和Tcl,在嵌入式C和C++中使用的最主要的兩種語言,在朝著相反的方向發展。Lua在游戲領域被廣泛應用,新的、效率超高的LuaJIT讓Lua成為了一個在性能敏感環境中很有吸引力的一個選擇。另一方面,Tcl則繼續衰落,原因則是一些內部核心設計問題,版本發行太慢,以及匱乏的市場決策。

在2012年,我們報道了若干很有潛力的新興編程語言,這些語言有的有進入主流應用的傾向,尤其是DGo,以及Dart。雖然 他們目前并沒有進入到編程語言的主流層次,但它們正在以自己的方式前進著,并且獲得了一些擁護者。我們將會在今年調查更多新的、有趣的編程語言,并且以開發者所熱愛的方式報道它們的發展進程。

原文鏈接:The Rise and Fall of Languages in 2012