有些語言誕生幾十年了依然是世界上最流行的語言,比如C語言。有些語言雖然號稱新興的語言卻很少有人使用。在編程語言這個領(lǐng)域里似乎不符合長江后浪推前浪這個規(guī)律。這恐怕不止語言本身的因素,里面的緣由值得研究者好好去探索一番。 語言之間是不平等的。圖片來源:winnifredxoxo/Flickr 近年來,谷歌一直致力于開發(fā)出自己的編程語言以取代當(dāng)今世上最常用的C、C++和JavaScript。在系統(tǒng)語言方向,谷歌的Go語言能夠為用戶在數(shù)據(jù)中心內(nèi)建立大型軟件提供更多的便捷,有望取代C語言和C++的地位;而在網(wǎng)絡(luò)開發(fā)方面,谷歌希望憑借Dart取代JavaScript。編程語言的世界里可謂是江山代有人才出,可有那么一位引領(lǐng)風(fēng)騷達數(shù)十年之久,它就是C語言。 編程語言之間的競爭一天也沒能停歇,長江后浪推前浪,一代更比一代強。它們之中只有屈指可數(shù)的少數(shù)能夠被市場接納,成為程序員們?nèi)杖找挂沟陌閭H。究竟怎樣的編程語言才能夠成為大浪淘沙中的幸運兒?普林斯頓大學(xué)(Princeton)和加州大學(xué)伯 克利分校(University of California at Berkeley)的研究者雷歐·馬耶若維奇(Leo Meyerovich)和阿里·拉布金(Ari Rabkin)希望通過自己的研究,來解開編程語言世界的叢林法則。他們在探尋一個問題——為何C語言雖垂垂老矣卻能屹而不倒? 雷歐和阿里采訪了數(shù)以萬計的程序員,又在全球最大的軟件倉庫SourceForge梳理了超過30萬份的程序。“為什么C語言沒有被淘汰?”拉布金提出了這個問題。的確,C語言距問世之初已經(jīng)有了35年的歷史。在這期間里,計算機邁出了不可測量的發(fā)展步伐,軟件和操作系統(tǒng)也早就今非昔比,編程語言中不乏叱咤風(fēng)云的新生代,而C語言也有了升級版。即便如此,C語言依舊風(fēng)采不減當(dāng)年。 拉布金剛剛?cè)〉昧思又荽髮W(xué)伯克利分校的計算機博士學(xué)位,如今在普林斯頓大學(xué)攻讀博士后學(xué)位。“在學(xué)術(shù)領(lǐng)域,現(xiàn)今的趨勢是解決那些尚未出現(xiàn)的難題,”拉布金說,“學(xué)者們希望能夠標(biāo)新立異地建立起一個全新的語言系統(tǒng),就沒有考慮這么一套編程語言是否有實踐的價值。編程語言的開發(fā)者們?nèi)鄙僖粋明確的目標(biāo)。”他指出,有些編程語言甚至缺失了最基礎(chǔ)的東西,比如缺省文件編制(Documentation);還有些開發(fā)者不停地在語言系統(tǒng)上畫蛇添足,弄到最后搞的程序員們只能因為它太“豐富”了不得不放棄。馬耶若維奇認(rèn)為:“我們發(fā)現(xiàn)這個問題事實上不是一個技術(shù)領(lǐng)域的問題,它是因為整個學(xué)術(shù)界不夠注重實踐需求所造成的”。 新興編程語言Scale是一個很好的例子。數(shù)據(jù)分析機構(gòu)Slice-Data的創(chuàng)始人之一張洋(音譯)是Scale眾多使用者中的一員,他從2006年起開始接觸Scale。Scale在問世之初文件編制就存在很大的缺陷,這給用戶的學(xué)習(xí)使用造成了很大的不便和痛苦。“我當(dāng)時肯定是個受虐狂。”他回憶道。 除卻新興語言本身的問題,這里面還有一個要素是程序員的學(xué)習(xí)能力。試驗中收集的信息表明,因為學(xué)習(xí)新語言太辛苦困難了,程序員們在使用一款新型的編程語言前并不會認(rèn)認(rèn)真真地去學(xué)習(xí)一番。馬耶若維奇拿Adobe公司開發(fā)的ActionScript作為例子。ActionScript是一款以用戶為導(dǎo)向的編程語言,程序員們普遍認(rèn)為ActionScript的使用比較簡單。可是當(dāng)要用ActionScript做新的事時,比如從媒體開發(fā)轉(zhuǎn)向游戲開發(fā),因為沒有系統(tǒng)的學(xué)習(xí)過,他們就束手無策了。 我們普遍認(rèn)為,程序員年齡越大,經(jīng)驗就越老道,掌握的語言就越多。事實又是怎樣的呢?雷歐和阿里在試驗中發(fā)現(xiàn),多數(shù)程序員都掌握了3至4種程序語言,但當(dāng)他們到了35-40歲時,很多人就會步入管理崗位。脫離了編程一線,學(xué)習(xí)新語言的動機和機會就大打折扣了。 馬耶若維奇認(rèn)為,他們正在研究的這個課題十分重要,關(guān)乎整個行業(yè)是否能夠高速和健康地發(fā)展。他和拉布金把實驗數(shù)據(jù)都發(fā)布在網(wǎng)絡(luò)上,希望他人能夠給出新的視角,同時為如何解決這一問題提供建議與幫助。文/果殼網(wǎng) |
good |
基礎(chǔ)總是要的,任何建筑最后剩下的也只有基礎(chǔ)了。 |
基礎(chǔ)決定上層。 |
很基礎(chǔ) |
科學(xué)技術(shù)理論一般分成兩大類,一類是純科學(xué)的基礎(chǔ)理論,一類是偏向?qū)嵱玫募夹g(shù)理論。基礎(chǔ)理論一般都比較深奧難懂!而技術(shù)理論主要是面向工程實際 面向一般的使用者。因此像編程語言這樣的技術(shù)理論的生命價值,首要標(biāo)準(zhǔn)就是看它的普及性 易用性 適用性,以及在使用者中的影響力,和實際工程的結(jié)合度。至于這技術(shù)理論是否“很先進” 是否有“獨特性”倒并不能一定決定著它的命運。 |