第一部分:關(guān)于并行編程的通用問題
1)
Michael:我們進(jìn)入了多核時(shí)代,你認(rèn)為并行計(jì)算最終會(huì)成為主流嗎?或者這僅僅是一個(gè)階段并且很快對(duì)并行編程感興趣的人將(又一次)變成高性能社區(qū)的一員?
Joe:是的,絕對(duì)主流——我們討論的是雙核時(shí)性能提高兩倍而4核時(shí)性能提高4倍。我曾經(jīng)有一個(gè)在32核的機(jī)器上跑的程序,性能提高了18倍。注意這是18倍——我們習(xí)慣于通過重寫部分程序代碼來提高5%~10%的性能,卻想不到400%或1800%——這是所有軟件的通病。
2)
Michael:在網(wǎng)絡(luò)上,一時(shí)間對(duì)共享內(nèi)存編程還是消息傳遞編程是并行編程更好的方式展開了激烈的討論。對(duì)此你的意見是什么?
Joe:共享內(nèi)存系統(tǒng)很難理解并保證正確,特別是當(dāng)錯(cuò)誤出現(xiàn)的時(shí)候。不出錯(cuò)就不錯(cuò)了,當(dāng)出錯(cuò)時(shí)則根本無法繼續(xù)搞。當(dāng)一個(gè)程序拿了一個(gè)鎖,并且把共享內(nèi)存搞的亂七八糟,然后崩潰了,其他進(jìn)程怎么知道它到底在搞什么東東,更別說幫忙搞定那些錯(cuò)誤了。
事務(wù)內(nèi)存和純凈的消息傳遞系統(tǒng)不用考慮上述的任何問題。
3)
Michael:對(duì)你而言,并行編程在目前或者過去的幾年里最令人興奮的發(fā)展和革新是什么?
Joe:P2P架構(gòu),分布式哈希表,planet lab等全球伸縮的系統(tǒng)集成。
類似于bit torrent的東西正在摧毀傳統(tǒng)工業(yè),就像1770年多軸紡織機(jī)摧毀了家庭紡織機(jī)工業(yè)一樣,bit torrent正在歷史記錄上做同樣的事情。這不是是否發(fā)生的問題,而是何時(shí)發(fā)生的問題。
4)
Michael:并行編程的未來在哪里?“銀彈”即將到來嗎?
Joe:是的——純凈的消息傳遞基礎(chǔ)架構(gòu)將解決很多問題(例如amazon簡(jiǎn)單查詢服務(wù))。這回到了Paul Morisson的基于流的編程模型。
5)
Michael:目前最緊迫的一個(gè)問題是并行編程仍然很難,并且沒有它的順序編程對(duì)手們高產(chǎn)。對(duì)你而言有什么方式改變這一點(diǎn)嗎?
Joe:這并不太難——這很難是因?yàn)槟壳罢紦?jù)統(tǒng)治地位的編程模型是鎖、線程和共享內(nèi)存——現(xiàn)在它們是很難的。純凈的消息傳遞系統(tǒng)對(duì)編程實(shí)現(xiàn)和推理很容易。
世界是并行的——我們是并行的。
第二部分:關(guān)于Erlang
6)
Michael:與其他并行編程系統(tǒng)相比較,Erlang有什么獨(dú)特的優(yōu)勢(shì)和弱點(diǎn)?你希望在哪些方向改進(jìn)它?
Joe:優(yōu)勢(shì)是Erlang是為容錯(cuò)系統(tǒng)而設(shè)計(jì)的,所以在軟件和硬件出錯(cuò)時(shí)它能很好的降級(jí)。它認(rèn)真對(duì)待出錯(cuò)。進(jìn)程和錯(cuò)誤處理是語言定義的一部分而不是操作系統(tǒng)所提供的。
弱點(diǎn)是分布式Erlang的安全性是要么全有要么全無的。擁有不同級(jí)別的安全性和能力或者基于信任的安全模型會(huì)更好。
7)
Michael:如果你可以再次從零開始設(shè)計(jì)Erlang,你會(huì)做哪些不同的事情?
Joe:
1,讓模塊和代碼處理更高級(jí)一些,添加自省功能
2,為協(xié)議的斷言屬性添加一層契約
3,在編程語言里讓協(xié)議成為頭等公民
4,為分布式計(jì)算加一個(gè)信任/能力層
5,為弱連接的分布式系統(tǒng)分層。分布式Erlang只是為了擁有強(qiáng)大安全性的類集群計(jì)算。
8)
Michael:有沒有什么特殊的工具推薦給大家來方便Erlang編程?IDE?編輯器?調(diào)試器?調(diào)優(yōu)器?改錯(cuò)工具?或其他什么的?
Joe:沒有。編譯器獨(dú)自擁有95%的fun。這樣人們對(duì)他們的IDE十分篤信。我使用emacs和xterm。有些人熱衷于一些東西,但我本人不怎么感興趣。
9)
Michael:請(qǐng)給Erlang新手們分享一些小建議!你該怎么入門?有什么書?教程?網(wǎng)絡(luò)資源?提問最好的地方在哪里?
Joe:
書籍——(無恥的插入):讀我的新書Programming Erlang。
教程:www.trapexit.org
發(fā)布:www.erlang.org
提問:erlang郵件列表(登錄www.erlang.org)
10)
Michael:你在Erlang程序里遇到的最糟糕的錯(cuò)誤是什么?
Joe:沒有文檔的程序——我討厭人們說“讀代碼”——代碼是問題的解決方案——通過讀代碼我不得不猜測(cè)問題是什么,并且這很可能出錯(cuò)。我喜歡別人告訴我問題是什么,而不是靠猜。
所以最糟糕的錯(cuò)誤是當(dāng)我寫在程序里一個(gè)長(zhǎng)達(dá)多頁的注釋來解釋一些特殊的技巧點(diǎn)時(shí),結(jié)果發(fā)現(xiàn)在稍后的版本中別人刪除了整個(gè)注釋。
安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢】
Joe Armstrong:關(guān)于并行編程和Erlang的十個(gè)問題
2010-01-13 23:13:46 作者: 來源: