《程式設計人生》帶您回顧15位軟體先驅言談錄

出版圈郭志敏發表於2011-09-19

enter image description here

◎ 世界頂尖的程式設計師是怎麼走上程式設計道路的?

◎ 他們的程式設計工作創造和改變了人類歷史,在這一過程中都有哪些經驗和教訓?

◎ 他們對計算機軟體行業的過去、現在和未來有什麼獨到的看法和見解?

◎ 他們對培養、發現、選拔、面試優秀的程式設計師有什麼建議?

 放下手頭的工作,聽聽這些軟體先驅們的故事和建議,眼界可以更開闊,思路可以更清晰,方向可以更明確,人生可以更精彩。

enter image description here

Jamie Zawinski

  名字的三字母簡寫與全名同樣知名的黑客並不多,Lisp黑客、Netscape早期開發者和夜總會老闆Jamie Zawinski,又稱jwz,便是其中之一。

  Zawinski十幾歲就開始程式設計,當時受僱於卡內基•梅隆大學(CMU)人工智慧實驗室,從事Lisp開發。他在大學沒待多久就選擇了退學,因為他發現自己厭惡大學。隨後近十年他一直投身Lisp和人工智慧(AI)領域,陰差陽錯地浸染於一種日漸式微的黑客亞文化中,而同年齡段的其他程式設計師則是伴著微型計算機一起成長。

  Zawinski曾在加州大學伯克利分校(UC Berkeley)為Peter Norvig工作過,後者形容他是“自己僱過的最優秀的程式設計師”。後來Zawinski去了Lisp公司Lucid,最終領導開發了Lucid Emacs。Lucid Emacs後來更名為XEmacs,終成一大Emacs流派,堪稱最著名的開源分支之一。

  1994年,Zawinski最終離開了Lucid公司和Lisp領域。隨後他加入當時羽翼未豐的初創公司Netscape。他是Netscape瀏覽器Unix版本及其後Netscape郵件閱讀器最初的開發人員之一。

  1998年,作為主要推動者之一,Zawinski與Brendan Eich一道,通過mozilla.org促成了Netscape瀏覽器的開源。一年後,因對釋出遙遙無期備感失望,他退出了該專案,在舊金山買了一家夜總會,這就是他現在運營的DNA Lounge。目前,他正集中精力與加州酒類管制局打官司,力爭讓這家夜總會成為各年齡層都能進入的現場音樂表演場所。

  在這次訪談中,我們談到C++為什麼令人厭惡,幾百萬人使用其軟體給他帶來的快樂,以及新手程式設計師多動手實踐的重要性。


   Brad Fitzpatrick

enter image description here

  Brad Fitzpatrick是所有受訪者中最年輕的一位,也是其中唯一一位從未在沒有因特網或個人電腦的世界裡生活過的。他出生於1980年,很早就開始了自己的程式設計師生涯,5歲時就在一臺自制的Apple II克隆機上學習程式設計。在十幾歲時,正好趕上因特網革命的大潮,他一頭扎入其中,在高中時就建立了自己的第一個商業網站,在進入大學前的那個夏天創立了著名社群LiveJournal。

  LiveJournal的日漸流行迫使Fitzpatrick走上了學習構建可伸縮網站的艱難之旅,期間他和他創辦的Danga互動技術公司裡的程式設計師們開發了幾個開源軟體,其中包括memcached、Perlbal和MogileFS,現在被用於很多世界上最繁忙的網站的伺服器上。

  Fitzpatrick是個典型的極有才華的世紀之交的Web程式設計師,他的主要程式語言是Perl和C,需要時也會用Java、C++、Python、JavaScript和C#。他做的所有程式設計工作基本都與網路相關,比如為網站構建更好的後端基礎設施,設計協議和軟體來讓部落格閱讀軟體獲知部落格更新,甚至為他的手機編寫程式碼以便在摩托車上就能自動開啟車庫門。

  我們將談到他在讀著名兒童系列叢書Clifford the Big Red Dog的年齡就開始學習程式設計,為什麼能夠很高興地一邊念大學,一邊執行LiveJournal,以及他是如何學會不懼怕去閱讀他人的程式碼的。


enter image description here

Douglas Crockford

Douglas Crockford是Yahoo!的資深JavaScript架構師,他在上世紀70年代初求學期間就開始從事程式開發工作了,那時的他主修電視廣播專業,但苦於無法進入演播室工作,轉而學習了學校開設的Fortran課程。在其職業生涯中,Crockford曾先後供職於Atari、Lucasfilm和Electric Communities,以各種方式聯姻計算機與傳播媒介,現在他就職於Yahoo!。

  Crockford生來就是一個至純至簡的人。深感於XML的複雜性,他發明了JSON這一廣泛用於Ajax應用的資料交換格式。Crockford在最近出版的新書JavaScript: The Good Parts中談到如果能避免使用某些特性的話,JavaScript實際上是一門相當優雅的語言。在接受採訪的時候他強調了以子集方式來管理複雜度的重要性,同時介紹了他所使用的一種程式碼閱讀方法:從清理程式碼開始。

  在採訪之際,Crockford就已經因極力反對將ECMAScript 4(ES4)納入到ECMAScript(JavaScript)語言標準中而名聲大噪,因為ECMAScript 4實在是太複雜了。他傾向於更加簡潔的ES3.1提案,最後Crockford與其他ES3.1擁護者大獲全勝——ES3.1更名為ES5而ES4則被官方徹底拋棄。

  在本次採訪中,Crockford談到了ES4提案的缺陷,作為團隊行為的程式碼閱讀的重要性,以及在現有系統當道的情況下如何推進Web向前發展。


enter image description here

Brendan Eich

Brendan Eich現任Mozilla公司CTO,是JavaScript的發明者,這種指令碼語言是現代Web開發中使用最普遍卻又最受爭議的語言。Mozilla公司是Mozilla基金會的附屬公司,專注於火狐瀏覽器(Firefox)的持續開發。

  Eich擁有堅實的理論基礎和較強的工程實踐能力,早期在Silicon Graphics和MicroUnity公司從事網路和系統核心開發。離開MicroUnity之後,Eich去了網景(Netscape)。在開發網景瀏覽器的巨大時間壓力下,他創造了JavaScript。

  1998年,Eich和Jamie Zawinsk帶頭勸說網景公司將瀏覽器變成開源專案,並最終成立mozilla.org組織,Eich在該組織中擔任首席構架師。

  近幾年來,Eich既參與確定Mozilla平臺發展的大方向,也會深入到底層去開發那個新的JavaScript即時虛擬機器TraceMonkey。並且,採訪中他還強調正在嘗試讓Mozilla的專案“引領科學方向”,會吸收更多的具有務實精神的研究機構人員參與到Mozilla當中,讓理論研究和行業實踐結合得更緊密。

  另外,我們還談到了JavaScript和Java看起來有幾分相似的原因;為什麼ECMAScript 4的失敗並不會阻礙JavaScript成長為一門真正的語言;以及JavaScript對類似於靜態程式碼分析方法多樣化的需求。


enter image description here

Joshua Bloch

Joshua Bloch現任Google公司首席Java架構師。之前他在Sun公司工作,曾獲傑出工程師稱號,領導並實現了Java 2中的Java Collection Framework,還參與了Java 5發行版中幾項語言附加特性的設計。Bloch在哥倫比亞大學獲得學士學位,在卡內基梅隆大學獲得博士學位。讀博期間他參與設計了Camelot分散式交易處理系統,這個系統後來演變為Transarc公司的產品Encina,而他則成為Transarc的資深系統設計師。他編寫的Effective Java一書獲得了2001年Jolt大獎,他還與人合著了《Java解惑》 和《Java併發程式設計實踐》。

  沒錯,Bloch是Java的忠實擁護者,他的工作就是推動Java在Google公司的廣泛使用。最近風行於世的併發解決方案,如軟體事務記憶體或者Erlang的訊息傳遞機制等,Bloch都不太看重,他認為Java是併發運算的“最佳語言”,並預言隨著越來越多程式設計師需要開發應用於多核CPU的程式,Java將會再次風行起來。

  Bloch也很推崇把程式設計看作API設計,我們探討了這對他自己的設計流程有何影響,同時還討論了Java是不是太複雜了,以及為什麼說選擇程式語言就像選擇酒吧。

相關文章