天天看點

為什麼 C 語言屹立不倒? 為什麼 C 語言屹立不倒?

有些語言誕生幾十年了依然是世界上最流行的語言,比如c語言。有些語言雖然号稱新興的語言卻很少有人使用。在程式設計語言這個領域裡似乎不符合長江後浪推前浪這個規律。這恐怕不止語言本身的因素,裡面的緣由值得研究者好好去探索一番。

為什麼 C 語言屹立不倒? 為什麼 C 語言屹立不倒?

語言之間是不平等的。圖檔來源:winnifredxoxo/flickr

近年來,谷歌一直緻力于開發出自己的程式設計語言以取代當今世上最常用的c、c++和javascript。在系統語言方向,谷歌的go語言能夠為使用者在資料 中心内建立大型軟體提供更多的便捷,有望取代c語言和c++的地位;而在網絡開發方面,谷歌希望憑借dart取代javascript。程式設計語言的世界裡 可謂是江山代有人才出,可有那麼一位引領風騷達數十年之久,它就是c語言。

程式設計語言之間的競争一天也沒能停歇,長江後浪推前浪,一代更比一代強。它們之中隻有屈指可數的少數能夠被市場接納,成為程式員們日日夜夜的伴侶。究竟怎樣 的程式設計語言才能夠成為大浪淘沙中的幸運兒?普林斯頓大學(princeton)和加州大學伯 克利分校(university of california at berkeley)的研究者雷歐·馬耶若維奇(leo meyerovich)和阿裡·拉布金(ari rabkin)希望通過自己的研究,來解開程式設計語言世界的叢林法則。他們在探尋一個問題——為何c語言雖垂垂老矣卻能屹而不倒?

雷歐和阿裡采訪了數以萬計的程式員,又在全球最大的軟體倉庫sourceforge梳理了超過30萬份的程式。“為什麼c語言沒有被淘汰?”拉布金提出了 這個問題。的确,c語言距問世之初已經有了35年的曆史。在這期間裡,計算機邁出了不可測量的發展步伐,軟體和作業系統也早就今非昔比,程式設計語言中不乏叱 咤風雲的新生代,而c語言也有了更新版。即便如此,c語言依舊風采不減當年。

拉布金剛剛取得了加州大學伯克利分校的計算機博士學位,如今在普林斯頓大學攻讀博士後學位。“在學術領域,現今的趨勢是解決那些尚未出現的難題,”拉布金 說,“學者們希望能夠标新立異地建立起一個全新的語言系統,就沒有考慮這麼一套程式設計語言是否有實踐的價值。程式設計語言的開發者們缺少一個明确的目标。”他指 出,有些程式設計語言甚至缺失了最基礎的東西,比如預設檔案編制(documentation);還有些開發者不停地在語言系統上畫蛇添足,弄到最後搞的程式 員們隻能因為它太“豐富”了不得不放棄。馬耶若維奇認為:“我們發現這個問題事實上不是一個技術領域的問題,它是因為整個學術界不夠注重實踐需求所造成

的”。

新興程式設計語言scale是一個很好的例子。資料分析機構slice-data的創始人之一張洋(音譯)是scale衆多使用者中的一員,他從2006年起 開始接觸scale。scale在問世之初檔案編制就存在很大的缺陷,這給使用者的學習使用造成了很大的不便和痛苦。“我當時肯定是個受虐狂。”他回憶道。

除卻新興語言本身的問題,這裡面還有一個要素是程式員的學習能力。試驗中收集的資訊表明,因為學習新語言太辛苦困難了,程式員們在使用一款新型的程式設計語言 前并不會認認真真地去學習一番。馬耶若維奇拿adobe公司開發的actionscript作為例子。actionscript是一款以使用者為導向的程式設計 語言,程式員們普遍認為actionscript的使用比較簡單。可是當要用actionscript做新的事時,比如從媒體開發轉向遊戲開發,因為沒有 系統的學習過,他們就束手無策了。

我們普遍認為,程式員年齡越大,經驗就越老道,掌握的語言就越多。事實又是怎樣的呢?雷歐和阿裡在試驗中發現,多數程式員都掌握了3至4種程式語言,但當他們到了35-40歲時,很多人就會步入管理崗位。脫離了程式設計一線,學習新語言的動機和機會就大打折扣了。

馬耶若維奇認為,他們正在研究的這個課題十分重要,關乎整個行業是否能夠高速和健康地發展。他和拉布金把實驗資料都釋出在網絡上,希望他人能夠給出新的視角,同時為如何解決這一問題提供建議與幫助。

繼續閱讀