未來的程式語言究竟會變成什麼樣?——來自Ruby之父的預測
本文摘自即將上市的《程式碼的未來》(松本行弘著,周自恆譯)。
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年後程式語言的樣子,我認為應該會是下面三種情況的其中之一:
變化不大。程式語言的寫法從上世紀80年代開始就幾乎沒有什麼進化,今後即便出現新的 寫法,也只是現有寫法的變形而已。(從發展上來看,是比較悲觀的未來)
使用程式語言來程式設計這個行為本身不存在了。人類可以通過和計算機對話(大概是用自然語言)來查詢和處理資訊。(類似《星際迷航》中的世界,對於程式語言家來說是比較失落的未來)
- 發明了採用更高抽象度寫法的程式語言。這種語言在現在很難想象,不過應該是比現在更加強調What,而對於如何解決問題的How部分的細節,則不再需要人類去過問。(難以預測的未來)
當然,上面的預測也只不過僅僅是預測而已,有可能與未來的實際情況大相徑庭,或者說,與實際大相徑庭的可能性比較大吧。不過話說回來,100年後我也已經不在這個世上了,這不是白操心嘛。
20年後的程式語言
通過對100年後的預測,我們明白了“預測100年後的事情是非常困難的”。想想看,100年前連飛機還沒有民用化呢,100年後我已經可以坐在飛機上舒舒服服地寫這本書的稿子了,這足以說明,要想象社會的變化是相當困難的。
那麼,更近一點的未來又怎麼樣呢?比如說20年後。20年前,日本剛剛改年號為平成 ,現在和那個時候相比,印象中社會應該沒有發生非常極端的變化。計算機的效能等方面確實有了長足的進步,不過發展趨勢還是連續的,並非無法預測。對於20年後的未來,我想應該可以根據現在的發展趨勢來做出判斷。
個人認為,這麼短的時間內,程式語言本身應該不會發生多大的變化。實際上,現在使用的很多語言,在20年前就已經存在的。因此我預計,20年後的語言,應該是在分佈處理(多臺計算機協作處理)和並行處理(多個CPU協作處理)功能上進行強化,使得開發者不需要特別花心思就能夠使用這些功能。
之所以要關注分佈處理和並行處理,是因為今後個人也可以通過雲端計算的形式使用到比現在更多的計算機,而隨著每臺計算機的CPU多核心化,就相當於安裝了更多的CPU,這些情形都是很容易想象的。
不過,我認為現在的執行緒、RPC(Remote Procedure Call,遠端過程呼叫)等顯式地使用分佈處理和並行處理的形式,早晚會遇到瓶頸。當核心數量超過數千個的時候,顯式指定就變得毫無意義了,除錯起來也會變得非常痛苦。我期待在20年後,能夠出現突破這種侷限的技術,即無需顯式操作就可以實現分佈處理和並行處理。
相關文章
- DevOps 未來,測試究竟有什麼樣的可能dev
- 看Ruby之父如何預測100 年後的程式語言
- 將會改變未來IT世界的十種程式語言
- 未來缺什麼樣的程式設計師?程式設計師
- 未來五年最具前景的一門程式語言是什麼?
- 未來的女朋友是什麼樣
- 未來的資料中心是什麼樣的
- C# 程式語言的未來功能 (轉)C#
- 未來這五年,軟體工程師如何安身立命? (下) ——Ruby之父松本行弘談《程式碼的未來》軟體工程工程師
- 未來這五年,軟體工程師如何安身立命? (上) ——Ruby之父松本行弘談《程式碼的未來》軟體工程工程師
- 六星教育:Python為什麼這麼火?未來它將會被什麼語言取代?Python
- 程式設計師為什麼會憂慮自己的未來?程式設計師
- Streem:Ruby之父開發的新指令碼語言指令碼
- 為什麼有些程式語言會死而有些能活下來?
- 預測微前端的未來 - luca前端
- 未來的電視旅遊 App 是什麼樣的?APP
- 遊戲將帶我們到什麼樣的未來?遊戲
- 對於初學者來說,最好的程式語言是什麼?
- 組合語言的未來展望 (轉)組合語言
- 未來什麼樣的工作是絕對無法取代的?
- 中文程式語言——易語言,到底是用來幹什麼的?易語言值得學習嗎?易語言的優勢有什麼?
- 未來我們需要一輛什麼樣的智慧汽車?
- RPA與AI的融合,將會變成什麼樣?AI
- 學語言究竟學什麼?薦
- 現代程式語言用什麼語言寫成?
- 從 13 年開發史中,谷歌無人車之父預見自動駕駛的未來谷歌自動駕駛
- 為什麼會有這麼多的程式語言?
- 計算的未來是什麼?
- 一文教你預測 app 未來的變現情況APP
- 未來,人類與機器究竟是什麼關係?
- 前端的價值究竟是什麼?未來應該如何發展?(轉)前端
- 低程式碼平臺會是軟體業的未來麼?
- 沒有 Linus,Linux 的未來是什麼樣子?Linux
- Python 之父談論 Python 的未來Python
- 語言的力量主要來自於社群
- 未來兩年你必須掌握的五種程式語言
- 常見的程式語言python怎麼樣?各程式語言有什麼區別?Python
- Udacity簡明自動駕駛原理:它憑什麼改變未來?自動駕駛