為什么有些編程語言會死而有些能活下來?
英文原文鏈接:Why Do Some Programming Languages Live and Others Die?
谷歌打算要改變我們這個世界寫軟件的方法。近年來,這個搜索引擎巨頭試圖在這個星球中已經最廣泛使用的編程語言上做改進,已經推出了 2 種新的編程語言。
通過一種叫 Go 的語言,谷歌試圖拿它來替換年事已高的C或 C++ 語言,希望它能提供一種更加快捷的在數據中心里開發大型軟件平臺的方法。而通過一種叫 Dart 的語言,谷歌想用它來替代 JavaScript,改進我們開發運行在 Web 瀏覽器里的軟件的方法。
但是,不管這些新的編程語言多么的具有吸引力,我們不得不問一句,它們需要多久才能真正的流行起來——如果能夠的話。畢竟,新的編程語言不停的誕生。但只有很少一部分能被廣泛的接受。
在普林斯頓大學和伯克利的加州大學,兩位研究人員試圖在為什么有些編程語言能走進它們的黃金時代而眾多余下的卻不能的原因上貢獻出自己的智慧。在一個他們自稱為“業余研究”里,Leo Meyerovich 和 Ari Rabkin 調查了數萬個程序員,梳理了流行的代碼庫 SourceForge 上超過 30 萬個項目——所有的這些努力都是為了能清楚為什么老的編程語言仍然處于霸權地位。
“為什么沒有語言能夠真正的超越C語言?”Rabkin 問道。自從C語言誕生以來的 35 年里,我們操作系統和軟件設計都獲得了巨大的飛躍,但是,雖說C語言中這段時間里有了加強,但也有很多新的非常成功的語言出現,可C語言仍然是開發語言中的中堅力量。
“為什么我們不能真正的超越C語言?”
— Ari Rabkin
部分的原因,他說,是因為語言的設計者并不都具有一個讓這些語言實用化的目標。“學院派人的一個習慣就是喜歡去研究解決沒有人真正遇到過的問題,”Rabkin 說。 Rabkin 最近剛剛獲得了伯克利加州大學的計算機科學博士學位,現在在普林斯頓大學做博士后研究工作。
Rabkin 說,學院派的人經常想要開發出一種不同凡響的語言,但他們卻從來不思考如何能讓這種語言變的實用。在一些案例中,他們在一些最簡單的事情上都做的很失敗,比如說為這種新語言寫文檔。在另一些案例中,設計者不停的往一種語言里添加新的的特征,成功的使試圖使用這種語言的技術人員的大腦因超載而宕機。
“這樣的問題的解決辦法并非都是技術范疇,”Meyerovich 說。“我們需要去發明一些能夠被'大眾了解'的語言。
張揚(Yang Zhang),Slice-Data 分析公司的共同創始人,曾在攻讀麻省理工博士學位中途退學,他曾是眾多的追隨一種新的叫做 Scala 的語言的信徒之一,但他承認,這種語言之初糟糕的文檔和只能從語言的設計者哪里獲得幫助的情況給學習者造成了巨大的障礙。“我當時真是一個受虐狂,”他這樣描述2006年學習這種語言經歷。
Meyerovich 說,他和 Rabkin 收集到的數據顯示,程序員在開始使用一種新的語言時并不總是去花時間好好學習它們——這使得他們的編程過程跌跌絆絆。例如,他舉例個例子,ActionScript,這是一個由 Adobe 公司開發的一個面向對象的編程語言。根據 Meyerovich 統計的數據顯示,程序員都認為 ActionScript 很容易。但是,當他們開始使用這種語言開發一些新的東西——比如他們從多媒體開發轉到游戲開發——問題就出現了。
另外一個問題是程序員的自滿。大部分的程序員都會學習 3 到 4 種編程語言,然后他們就停步了,這兩位研究者說。“隨著閱歷的增加,你會認為這些程序員年齡在增長,他們會變得更加智慧,他們會學更多的語言。但是我們發現這不是實情。他們在停步不前。”Meyerovich 說。
部分的原因是,當程序員的年齡達到 35、40年齡段時,他們通常會從親自動手編程的角色上轉移去管理其他的程序員。從這點上看,他們學習或實現新的編程語言的動機減少了。
Meyerovich 認為,我們的編程語言還有很多問題,需要整個開發社區繼續為之奮斗和探索。正向他和 Rabkin 挖掘這些數據一樣(你可以在網上分類查詢它們),他們不僅希望能找到產生這些問題的根源,還希望能在如何解決這些問題的方法是發現一些新的視角。
“這是一個很熱門的問題,我們甚至不認為從分析這些數據的過程中看到了事情的真相。”Meyerovich 說。