為什麼有些程式語言會死而有些能活下來?

aqee.net發表於2012-08-25

  谷歌打算要改變我們這個世界寫軟體的方法。近年來,這個搜尋引擎巨頭試圖在這個星球中已經最廣泛使用的程式語言上做改進,已經推出了2種新的程式語言。

  通過一種叫Go的語言,谷歌試圖拿它來替換年事已高的C或C++語言,希望它能提供一種更加快捷的在資料中心裡開發大型軟體平臺的方法。而通過一種叫Dart的語言,谷歌想用它來替代JavaScript,改進我們開發執行在Web瀏覽器裡的軟體的方法。

  但是,不管這些新的程式語言多麼的具有吸引力,我們不得不問一句,它們需要多久才能真正的流行起來——如果能夠的話。畢竟,新的程式語言不停的誕生。但只有很少一部分能被廣泛的接受。

  在普林斯頓大學和伯克利的加州大學,兩位研究人員試圖在為什麼有些程式語言能走進它們的黃金時代而眾多餘下的卻不能的原因上貢獻出自己的智慧。在一個他們自稱為“業餘研究”裡,Leo MeyerovichAri 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說。

英文原文連結:Why Do Some Programming Languages Live and Others Die?

相關文章