未來的程式語言究竟會變成什麼樣?——來自Ruby之父的預測

樂馨發表於2013-04-17

本文摘自即將上市的《程式碼的未來》(松本行弘著,周自恆譯)。

enter image description here

100年後的程式語言

美國風險投資家、Lisp啟蒙家、作家保羅•格雷厄姆在其《一百年後的程式語言》1一文中想象了100年後可能會出現的程式語言,並提議將他的觀點應用到現在的程式語言中。

1 保羅•格雷厄姆(Paul Graham,1964~)是美國風險投資家、電腦科學作家。《一百年後的程式語言》(The Hundred-Year Language)一文收錄於保羅•格雷厄姆的文集《黑客與畫家》一書中,人民郵電出版社2011年4月出版,阮一峰譯。

他主張,100年後的程式語言進化的主線,應該以少量公理為基礎的“擁有最小最簡潔核心的語言”。在現有程式語言中,最具有這一特徵的莫過於他最喜歡的Lisp了。所以說,他的主張實際上就是說,Lisp才是100年後程式語言的進化方向。

唔,像我這樣的小人物要跟他叫板好像也挺不自量力的,不過我還是認為,對於未來,應該基於從過去到現在的變化方向,並在其延長線上做出預測。當然,將來也許會發生一些無法預料的狀況,從而大幅扭轉之前的前進方向,不過這樣的事情從定義來說本來就是無法預測的,你非要預測它,本質上也是毫無意義的。

作為一個程式語言御宅族,通過反觀過去半個世紀以來程式語言的進化方向,我認為程式語言絕對不會按照保羅•格雷厄姆所說,向著“小而乾淨”的方向來進化。現在的程式語言,無論是功能上還是語法上都已經不是那樣單純了,雖然也曾經有人努力嘗試將這些語言變得更小更簡單,但包括保羅•格雷厄姆自己所設計的Arc 2在內,都決不能算是成功的嘗試。

2 Arc語言是Lisp的方言之一,由保羅•格雷厄姆與羅伯特•泰潘•莫里斯(Robert Tappan Morris,1965~)共同設計,於2008年首次釋出。

在我看來,程式語言的進化動機,不是工具和語言本身的簡化,而是將通過這些工具和語言所得到的結果(解決方案)更簡潔地表達出來。近半個世紀以來,程式語言不斷提供愈發高度的抽象化特性,也正是為了達到這個目的。因此我們可以很自然地認為,這種趨勢在將來也應該會繼續保持。

基於上述觀點,如果要我來預測100年後程式語言的樣子,我認為應該會是下面三種情況的其中之一:

  1. 變化不大。程式語言的寫法從上世紀80年代開始就幾乎沒有什麼進化,今後即便出現新的 寫法,也只是現有寫法的變形而已。(從發展上來看,是比較悲觀的未來)

  2. 使用程式語言來程式設計這個行為本身不存在了。人類可以通過和計算機對話(大概是用自然語言)來查詢和處理資訊。(類似《星際迷航》中的世界,對於程式語言家來說是比較失落的未來)

  3. 發明了採用更高抽象度寫法的程式語言。這種語言在現在很難想象,不過應該是比現在更加強調What,而對於如何解決問題的How部分的細節,則不再需要人類去過問。(難以預測的未來)

當然,上面的預測也只不過僅僅是預測而已,有可能與未來的實際情況大相徑庭,或者說,與實際大相徑庭的可能性比較大吧。不過話說回來,100年後我也已經不在這個世上了,這不是白操心嘛。

20年後的程式語言

通過對100年後的預測,我們明白了“預測100年後的事情是非常困難的”。想想看,100年前連飛機還沒有民用化呢,100年後我已經可以坐在飛機上舒舒服服地寫這本書的稿子了,這足以說明,要想象社會的變化是相當困難的。

那麼,更近一點的未來又怎麼樣呢?比如說20年後。20年前,日本剛剛改年號為平成 ,現在和那個時候相比,印象中社會應該沒有發生非常極端的變化。計算機的效能等方面確實有了長足的進步,不過發展趨勢還是連續的,並非無法預測。對於20年後的未來,我想應該可以根據現在的發展趨勢來做出判斷。

個人認為,這麼短的時間內,程式語言本身應該不會發生多大的變化。實際上,現在使用的很多語言,在20年前就已經存在的。因此我預計,20年後的語言,應該是在分佈處理(多臺計算機協作處理)和並行處理(多個CPU協作處理)功能上進行強化,使得開發者不需要特別花心思就能夠使用這些功能。

之所以要關注分佈處理和並行處理,是因為今後個人也可以通過雲端計算的形式使用到比現在更多的計算機,而隨著每臺計算機的CPU多核心化,就相當於安裝了更多的CPU,這些情形都是很容易想象的。

不過,我認為現在的執行緒、RPC(Remote Procedure Call,遠端過程呼叫)等顯式地使用分佈處理和並行處理的形式,早晚會遇到瓶頸。當核心數量超過數千個的時候,顯式指定就變得毫無意義了,除錯起來也會變得非常痛苦。我期待在20年後,能夠出現突破這種侷限的技術,即無需顯式操作就可以實現分佈處理和並行處理。

相關文章