編程人生:15位軟體先驅訪談錄

《編程人生:15位軟體先驅訪談錄》是2011年人民郵電出版社出版的圖書,作者是Peter Seibel。

基本信息

內容簡介

編程人生:15位軟體先驅訪談錄編程人生:15位軟體先驅訪談錄

這是一本訪談筆錄,記錄了當今最具個人魅力的15 位軟體先驅的編程生涯。包括donaldknuth、jamie zawinski、joshua bloch、ken thompson 等在內的業界傳奇人物,為我們講述了他們是怎么學習編程的,在編程過程中發現了什麼以及他們對未來的看法,並對諸如應該如何設計軟體等長久以來一直困擾很多程式設計師的問題談了自己的觀點。

本書適合所有程式設計師,也適合所有對計算機行業、對軟體開發感興趣的人。

作者

Peter Seibel Common Lisp專家,jolt生產效率大獎圖書Practical Common Lisp的作者。耶魯大學英語專業畢業,後投身於網際網路行業,曾負責Mother Jones Magazine和Organic Online的Perl專欄以及WebLogic的Java專欄,並曾在加州大學伯克利分校成人教育學院教授Java編程。2003年辭職專心研究Lisp編程,之後即有了那部Jolt大獎圖書。現在他是Gigamonkeys Consulting公司的執行長,和家人幸福地生活在加州伯克利。

前言

拋開Ada Lovelace(19世紀的一位伯爵夫人,她為Charles Babbage未完成的分析機設計了算法)的工作不說,人類在計算機編程領域奮鬥的時間還不及一個人的壽命長,從1941年Konrad Zuse完成Z3電子機械計算機(首個可運行的通用計算機)算起,只有短短68年。曾有6位女性(Kay Antonelli、Jean Bartik、Betty Holberton、Marlyn Meltzer、Frances Spence和Ruth Teitelbaum)在美軍的計算機部隊工作,她們手工計算彈道數據表,後來被調去做ENIAC(首台通用電子計算機)最早的程式設計師。若從這時候算起,人類的編程歷史則只有64年。在嬰兒潮早期出生的人們以及他們的父母,很多至今仍然健在,他們出生時世界上還不存在電腦程式員。

當然,這些已經是歷史了。現在世界上有很多程式設計師。勞動統計局在2008年對美國125萬人進行了統計,大約每106個工作者當中就有1個是電腦程式員或軟體工程師。這還沒算美國之外的職業程式設計師、數不清的學生和業餘編程愛好者,還有很多人從事其他正式工作,但卻花費了一部分或很多時間來試圖馴服計算機。雖然有數以百萬計的人寫過代碼,雖然在編程出現後人們寫過的代碼沒有數萬億行也有數十億行,我們仍然不斷地在這一領域進行創造。人們仍然在爭論編程到底是數學還是工程,是工藝、藝術還是科學。我們仍然在(經常是帶有強烈情緒地)爭論編程的最佳方式,網際網路上有無數的部落格文章和論壇帖子來討論這些問題。書店也擺滿了各種論述新程式語言、新編程方法、新編程思想的書。

本書按照文學期刊《巴黎評論》(The Paris Review)的傳統,採取了一種不同的方法來講述什麼是編程。這家期刊曾派了兩位教授去採訪小說家E. M. Forster,這次採訪和隨後的一系列問答式的採訪後來輯錄為Writers at Work一書。

我採訪了15位成就斐然、經驗豐富的程式設計師,其中有些人是系統黑客,如Ken Thompson(Unix的發明者)和Bernie Cosell(ARPANET早期實現者之一);有些人既有強大學術實力本身,又是著名黑客,如Donald Knuth、Guy Steele和Simon Peyton Jones;有些人是業界的研究員,如IBM的Fran Allen,愛立信的Joe Armstrong,Google的Peter Norvig,以及曾在施樂帕克研究中心工作過的Dan Ingalls和L Peter Deutsch;有些人是Netscape的早期實現者,如Jamie Zawinski和Brendan Eich;有些人參與設計和實現了現在的全球資訊網,如剛才提到的Eich,以及Douglas Crockford和Joshua Bloch;還有Live Journal的發明人Brad Fitzpatrick(在伴隨Web成長起來的一代程式設計師當中,他是一個當之無愧的典型)。

在採訪中,我問他們有關編程的問題,問他們是怎么學習編程的,在編程過程中發現了什麼,以及他們對未來的看法。而且我很用心地請他們多談談長久以來程式設計師一直在苦苦思索的那些問題:我們應該如何設計軟體?程式語言在幫助我們提高生產力和避免錯誤方面扮演了什麼角色?有什麼辦法可以更容易地查出難以發現的bug?

這些問題遠遠還沒有解決,所以我的採訪對象持有非常不同的觀點也就不那么奇怪了。Jamie Zawinski和Dan Ingalls強調儘早讓代碼跑起來的重要性,而Joshua Bloch則描述了在實現之前,他如何設計API並測試它們能否支持要寫的代碼。Donald Knuth講述了他在編寫排版軟體TeX的時候,怎樣在敲代碼之前先用鉛筆在紙上完整地實現整個系統。Fran Allen大力批判近幾十年來人們躺在C語言的腳下對計算機科學的興趣越來越低,Bernie Cosell稱之為“現代計算機最嚴重的安全問題”,Ken Thompson卻認為安全問題是程式設計師而不是程式語言造成的,Donald Knuth也說C的指針是他所看到過的“最令人讚嘆的記法改進之一”。一些受訪者對“形式化證明可能有助於改善軟體質量”這一觀點嗤之以鼻,而Guy Steele則漂亮地展示了這種做法的優點和限制。

然而,仍然有一些主題是大家都認同的。幾乎所有人都強調保持代碼可讀性是很重要的。大部分受訪者都認為最難查找的bug出現在並發代碼中。沒有人認為編程問題已經完全解決了,他們大多數人仍然在尋找編寫軟體的更好辦法,比如怎樣自動分析代碼,如何讓程式設計師更好地協作,或者尋找(或設計)更好的程式語言。同時幾乎所有人都認為多核CPU的大量採用將會給軟體開發帶來重大改變。

這些談話發生在計算機發展史的一個特定時刻。因此,本書中討論的一些話題在當前是緊迫問題,今後將不再是問題而變成了歷史。但即使是像編程這種新興領域,歷史也能為我們提供很多教訓。除此之外,我覺得我的受訪者們可能有一些共識,包括什麼是編程,如何更好地編程,等等,不僅現在的程式設計師會從中受益,將來幾代程式設計師也將從中受益。

最後提一下本書的書名:Coders at Work。這個書名與前面提到的《巴黎評論》出的Writers at Work系列以及Apress的Founders at Work (該書講述如何創辦技術公司,而本書討論計算機編程)相呼應。我意識到編程涵蓋的範圍太廣了,而“編碼”(coding)則可以特指其中一個很窄的部分。我個人從不認為一個糟糕的程式設計師會是一個優秀的編碼者,也不相信好的程式設計師會不是出色的設計者、溝通者和思考者。毋庸置疑,這些受訪者都是優秀的編碼者、程式設計師、設計者和思考者,而且還不僅僅如此。我相信接下來你在閱讀他們的談話內容時一定能夠體會到這一點。希望你能喜歡這本書!

目錄

第1篇 jamie zawinski 1

第2篇 brad fitzpatrick 37

第3篇 douglas crockford 69

第4篇 brendan eich 101

第5篇 joshua bloch 129

第6篇 joe armstrong 157

第7篇 simon peyton jones 185

第8篇 peter norvig 221

第9篇 guy steele 253

第10篇 dan ingalls 289

第11篇 l peter deutsch 321

第12篇 ken thompson 347

第13篇 fran allen 375

第14篇 bernie cosell 401

第15篇 donald knuth 435

參考書目 471

相關詞條

相關搜尋

熱門詞條

聯絡我們