看Ruby之父如何預測100 年後的程式語言

出版圈郭志敏發表於2013-05-14

從程式語言的進化這個視角來看,其實最近並沒有什麼大的動作。現在使用最廣泛的程式設計 語言幾乎都是10 多年前出現的,即便是比較新的Java 和Ruby 也是誕生於20 世紀90 年代後半, 距離現在也已經是15 年之前的事了。也許可以說,現在正是程式語言進化的好時機吧。

最近,受到CPU 多核化等因素的影響,Erlang 1這種並行處理語言受到了不少關注。不過 Erlang 早在1987 年就誕生了,也並不是什麼新東西,有點失望呀。

1Erlang 是由瑞典電信公司愛立信(Ericsson)旗下電腦科學研究室所開發的一種程式語言,釋出於1987 年, 並於1998 年實現開源。

那麼,未來的程式語言究竟會變成什麼樣呢?

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

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

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

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

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

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

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

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

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

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

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

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

本文摘自即將在5月末上市的《程式碼的未來》

相關文章