Erlang 之父去世,忠告程式設計師:先思考再程式設計,累的時候不要寫程式碼
作者:黃哲鏗《技術管理之巔》作者、技術領導力特約撰稿人
Erlang之父Joe Armstrong於4月20日去世,享年68歲。
Erlang Solutions、Erlang Factories的創始人Francesco在推特上懷念道:“儘管他不在了,但他的工作已經打下的基礎,將對未來幾代人都有用的。”
如果你對 Erlang不熟悉,至少聽說或使用過RabbitMQ吧, RabbitMQ 的伺服器就是用 Erlang 寫的。
有幸 跟Jo e Armstrong博士做過 短暫的交流, 在2016年11月,CSDN舉辦的“SDCC中國軟體開發者大會”上, 他分享的幾個觀點,至今仍印象深刻:
“人們總認為產品開發流程是這樣: Specify→Build→Test→Sell→$$$,然而實際上卻是這樣的: Start→??????????→Product。 ”
“一件事情如果過於複雜,那麼一定是哪裡出問題了 —— 大部分情況下是對問題的理解出現偏差”
這一觀點,跟他發明Erlang語言的初衷是一樣的: 簡單優雅,一次編寫,永遠執行。
記得當時跟 Armstrong 博士請教,他是如何保持數十年對程式設計的熱愛。
“我就是熱愛程式設計,並且擅長除錯程式,上大學的時候我幫同學除錯程式,他們給我買啤酒。”
“調bug換啤酒?酷!”
Armstrong曾在一次訪談中,分享過他在程式設計習慣上的改變,值得全世界程式設計師們借鑑。
第一: 先思考再程式設計
他在程式設計的20年都犯著一個錯: 在年輕的時候,會不停地寫程式,直到完成。
等寫完後他會突然發現: “啊? 搞錯了! ”等到重新編寫程式,會再次發現: “噢,程式是錯的。 ”於是又推翻重來。
他於是開始思考改變: “先不要動手寫程式碼,把這些東西都想好,這樣做不是很好嗎? ”
第二: 不要在疲憊時寫程式碼
在年輕的時候,他會通宵地寫程式,例如一個小時接著一個小時不休息,不停地編寫程式碼,一口氣寫到凌晨4點鐘。 即使身體狀況不好他也堅持不懈,因為他要讓程式碼能夠跑起來。
後來他發現程式設計師在疲憊的時候編寫的程式都是垃圾,第二天就要把它們廢棄掉。 他認為真正好的程式碼是程式設計師完全進入狀態的時候編寫,人甚至沒有在考慮程式,只是很放鬆地坐在那裡,輸入程式碼,這樣的程式碼會很不錯。
他建議如果程式設計師覺得自己狀態不對,“不能再寫了。 ”停下來,乾點別的。
Erlang是一種什麼樣的語言?
Erlang是一種結構化,動態型別程式語言,內建平行計算支援。 最初是由愛立信專門為通訊應用設計的,比如控制交換機或者變換協議等,因此非常適合於構建分散式,實時軟平行計算系統。 使用Erlang編寫出的應用執行時通常由成千上萬個輕量級程序組成,並通過訊息傳遞相互通訊。 程序間上下文切換對於Erlang來說僅僅只是一兩個環節,比起C程式的執行緒切換要高效得多了。
使用Erlang來編寫分散式應用要簡單的多,因為它的分散式機制是透明的: 對於程式來說並不知道自己是在分散式執行。 Erlang執行時環境是一個虛擬機器,有點像Java虛擬機器,這樣程式碼一經編譯,同樣可以隨處執行。 它的執行時系統甚至允許程式碼在不被中斷 的情況下更新。 另外如果需要更高效的話,位元組程式碼也可以編譯成原生代碼執行。
Joe Armstrong 博士生平
1950年12月27日,Joe Armstrong出生於英國伯恩茅斯。
雖然Joe Armstrong 17歲時開始接觸到Fortran程式設計,但他從本科直到博士唸的是物理學,後來因為積蓄用完無法完成學業,而轉向電腦科學。
為了謀生,他成為Donald Michie(英國人工智慧領域奠基人之一)的研究員。 在此期間,他撰寫了一些有關機器人視覺的論文。
後來政府削減了對人工智慧的研究經費,Armstrong又回到了物理學領域,從事5年多與物理學程式設計相關的工作。 開始時他在歐洲非相干散射科學協會(EISCAT)工作,後來又到了瑞典空間研究中心工作,協助開發應用程式系統。 最後Armstrong加入愛立信電腦科學實驗室,在那發明Erlang,成為容錯系統開發領域的世界級專家。
緬懷大師 最好的方式,莫過於讀他的這份博士論文: http://erlang.org/download/armstrong_thesis_2003.pdf
精彩文章推薦: