Andy Oram
《Beautiful Code》介紹了人類在一個奮鬥領域:計算機係統的開發領域中的創造性和靈活性。在每章中的漂亮代碼都來自獨特解决方案的發現,而這種發現來源於作者超越既定邊界的遠見卓識,並且識別出被多數人忽視的需求以及找出令人嘆為觀止的問題的解决方案。
大多數作者都面臨着種種限製——包括物理環境,可用資源,或者特殊的需求定義——這些限製通常會使我們很難想象出解决方案。而其他一些作者則是在已經存在解决方案的領域中重新研究,並且提出新的觀點以及更好地實現某個功能。
本書的所有作者都從他們的項目中獲得了一些經驗。不過在閱讀完本書後,我們同樣可以總結出一些更廣泛的經驗。
首 先,在可靠和真實的規則能夠真正應用之前,需要進行多次嘗試。因為,人們在維護穩定性、可靠性以及其他軟件工程要求的標準時經常會遇到重重睏難。在這種情 況下,我們通常沒有必要拋棄支持這種承諾的原則。有時候,從另一個角度來思考問題或許能夠揭示一種新的方向,從而使我們在滿足需求的同時無需犧牲那些好的 技術。
另一方面,在有些章節中強調了這條古老的原則:在打破原則之前,人們必須首先瞭解這個規則。有些作者在獲得一種不同的解决方案之前積纍了數十年的經驗——而正是這些經驗給了他們自信,從而以創造性的方式打破規則。
此外,書中的一些經驗還提倡跨學科研究。許多作者都是在新的領域中進行研究並在黑暗中不斷探索。在這種情況下,全新的創造力和個人智慧將起到重要的作用。
最後,我們從書中學到的漂亮的解决方案並不會持續很長時間。在新的環境中總會要求新的解决方式。因此,如果閱讀了本書並且認為,“無法在自己的任何一個項目上使用這些作者的解决方案”,那麽也不要擔心——這些作者在做下一個項目的時候,也會使用不同的解决方案。
我在這本書上全身心地工作了兩個月,以幫助作者完善他們的主題和更好地表達他們的觀點。閱讀這些天才發明傢的文章的確令人鼓舞甚至是令人情緒高漲的。它給了我嘗試新鮮事物的衝動,我希望讀者在閱讀本書時也能有同樣的感受。
作者簡介
John Bentley是美國Avaya實驗室的一位計算機科學家。他的研究領域包括編程技術、算法設計以及軟件工具與界面設計。他已編寫了數本關於編程的書籍, 還撰寫了大量的文章,主題涉及從算法理論到軟件工程的各個方向。他於1974年在斯坦福大學獲得學士學位,並於1974年獲得碩士學位以及於1976年在 北卡羅來納大學獲得博士學位,隨後在卡耐基-梅隆大學任教6年,教授計算機科學。1982年他加入貝爾實驗室,並於2001年離開貝爾實驗室並加入 Avaya實驗室。他曾是西點軍校和普林斯頓大學的訪問教授、曾經參與開發過軟件工具、電話交換機、電話以及網絡服務。
Tim Bray於1987-1989年間在加拿大的安大略省滑鐵盧大學負責牛津英語詞典項目,1989年與他人聯合創建了Open Text公司,在1995年啓動了最早的公共網頁搜索引擎之一,在1996至1999年間與他人共同發明了XML 1.0並合作編寫了
《Namespaces in XML》規範,在1999年他創建了Antarctica Systems公司,並於2002-2004年被Tim Berners-Lee任命在W3C技術架構組中工作。目前,他在Sun Microsystems公司Web Technologies部門任主管,他有一個很受歡迎的博客,並且參與主持IETF AtomPub工作組。
Bryan Cantrill是Sun Microsystems公司的一位傑出的工程師,在他的職業生涯中主要從事Solaris內核的開發。最近他與同事Mike Shapiro和Adam Leventhal一起設計並實現了DTrace,這是一個用於産品係統動態控製的工具,獲得了《華爾街日報》2006年度的最高創新奬。
Douglas Crockford畢業於公立學校。他是一位登記選民,擁有自己的汽車。他曾開發過辦公自動化係統。他曾在Atari公司從事過遊戲和音樂研究。他曾是 Lucasfilm有限公司技術部門的主管,以及Paramount公司New Media部門的主管。他創建了Electric Communities公司並且擔任CEO。他還是State 軟件公司的創建者和CTO,正是在這個公司中他發明了JSON數據格式。他現在是Yahoo!公司的一位架構師。
Rogerio Atem de Carvalho是巴西校園技術教育聯合中心(Federal Center for Technological Education of Campos,CEFET Campos)的一位教師兼研究人員。他在奧地利的維也納獲得了2006年度IFIP傑出學術領導奬(Distinguished Academic Leadership Award),以表彰他在免費/開源企業資源計劃(ERP)上所做的研究工作。他的研究領域還包括决策支持係統和軟件工程。
Jeff Dean於1999年加入Google,目前是Google係統架構小組的成員。他在Google主要負責開發Google的網頁抓取、索引、查詢服務以 及廣告係統等,他對搜索質量實現了多次改進,並實現了Google分佈式計算架構的多個部分。在加入Google之前,他工作於DEC/Compaq的 Western實驗室,主要從事軟件分析工具、微處理器架構以及信息檢索等方面的研究。他於1996年在華盛頓大學獲得了博士學位,與Craig Chambers一起從事面嚮對象語言的編譯器優化技術方面的研究。在畢業之前,他還在世界衛生組織的艾滋病全球規劃署工作過。
Jack Dongarra於1972年在芝加哥大學獲得數學學士學位,並於1973年在伊利諾理工大學獲得計算機科學碩士學位,又於1980年在新墨西哥大學獲得 應用數學博士學位。他在美國阿貢國傢實驗室(Argonne National Laboratory)一直工作到1989年,並成為了一名著名科學家。他現在被任命為田納西大學計算機科學係的計算機科學傑出教授。他是美國橡樹嶺國傢 實驗室(Oak Ridge National Laboratory ,ORNL)計算機科學與數學部的傑出的研究人員,曼徹斯特大學計算機科學與數學學院的Turing Fellow,美國萊斯大學計算機科學係的副教授。他的研究領域包括綫性代數中的數值算法,並行計算,高級計算機架構的應用,程序設計方法學以及用於並行 計算機的工具。他的研究工作包括開發、測試高質量的數學軟件以及整理相關文檔。他在以下開源軟件包和係統的設計及實現上做出了貢獻:ISPACK, LINPACK, the BLAS, LAPACK, ScaLAPACK, Netlib, PVM, MPI, NetSolve, Top500, ATLAS, 和 PAPI。他公開發表了大約200篇文章、論文、報告以及技術備忘錄,還參與編寫了數本著作。他於2004年獲得了IEEE Sid Fernbach奬,以表彰他在高性能計算機的應用中使用了創新的方法。他不僅是AAAS,ACM和IEEE的成員,還是美國工程院的院士。
R. Kent Dybvig是印第安納大學計算機科學係的一位教授。在印第安納大學任教兩年之後,他於1987年在北卡羅來納大學獲得了博士學位。他在設計和實現編程語 言的研究上做出了重要的貢獻,包括控製運算符、句法抽象、程序分析、編譯器優化、寄存器分配、多綫程以及自動存儲管理等。在1984年,他創建了Chez Scheme軟件並一直是主要的開發人員。Chez Scheme的特點在於快速的編譯時間、可靠性以及能夠高效地運行內存需求巨大的復雜程序,它已經被用於構建企業集成、網頁服務、虛擬現實、機器人藥品抽 檢、電路設計以及其他的商業係統。它還可以用於各種層次的計算機教育以及許多其他領域中的研究。Dybvig是《The Scheme Programming Language, Third Edition》(MIT Press出版社)一書的作者,以及即將發佈的“Revised6 Report on Scheme”文檔的編輯。
Michael Feathers是Object Mentor 公司的顧問。在過去七年間,他一直活躍於Agile社群,他的工作主要是與世界各地不同的團隊合作,培訓以及指導。在加入Object Mentor公司之前,Michael設計過一種編程語言,並為這種語言寫了一個編譯器。他還設計了一個龐大的多平臺類庫以及用於控製的框架。 Michael開發了CppUnit,也就是最初把JUnit移植到C++;以及FitCpp,也就是把FIT移植到C++。在2005年, Michael編寫了《Working Effectively with Legacy Code》(Prentice Hall出版社)一書。在與各個團隊合作的間隙,他的大多數時間都花在研究大型代碼庫中的設計修改方式方面。
1995年,Karl Fogel和Jim Blandy一起創建了Cyclic軟件公司,這是第一個提供商業CVS支持的公司。1997年,Karl增加了對CVS匿名衹讀存儲倉庫訪問的支持,這 樣就可以更方便地訪問開源項目中的開發代碼。1999年,他工作於CollabNet公司,主要從事管理Subversion的創建和開發工作,這是 CollabNet公司和一群開源志願者們從頭開始編寫的開源版本控製係統。2005年,他編寫了《Producing Open Source Software: How to Run a Successful Free Software Project 》(O'Reilly出版社;在http://producingoss.com上有聯機版本) 一書。2006年,他在Google擔任了短期的開源技術專傢之後離開Google並成為了Question-Copyright.org網站的全職編 輯。他目前仍然參與了多個開源項目,包括Subversion和GNU Emacs。
Sanjay Ghemawat是一位Google Fellow,工作於Google的係統架構小組。他設計並實現了分佈式的存儲係統,文本索引係統,性能分析工具,一種數據表示語言,一個RPC係統,一 個malloc函數實現以及許多其他的庫。在加入Google之前,他是DEC係統研究中心的一位研究人員,主要從事係統性能分析和優化Java編譯器的 工作,他還實現了一個Java虛擬機。他於1995年在麻省理工大學獲得博士學位,研究領域為面嚮對象數據庫的實現。
Ashish Gulhati是互聯網隱私服務Neomailbox的首席開發員,以及Cryptonite的開發員,這是一個支持OpenPGP協議的安全網頁郵件係 統。他有着15年的商業軟件開發經驗,是印度最早的數字版權活動傢之一和F/OSS程序員,他編寫了大量的開源Perl模塊,這些模塊可以從CPAN上下 載。在1993~1994年間,他在《PC Quest》和《DataQuest》等雜志上發表了大量文章,這是在印度主流計算機刊物中最早嚮讀者介紹自由軟件,GNU/ Linux,Web和Internet的文章,在這些文章發表多年以後,印度纔擁有了商業的互聯網訪問,這些文章還構成了PC Quest Linux Initiative活動的重要組成部分,這個活動促使自1995年以來,在印度分發了一百萬份Linux光盤。在獲得了一組可穿戴的計算機後,他很快地 成為了一個電子人。
Elliotte Rusty Harold是新奧爾良人,他會定期返回新奧爾良去吃一大碗海鮮幹波湯(Gumbo)。不過,他目前住在布魯剋林附近的Prospect Heights,和他生活在一起還有他的妻子Beth,狗Shayna,和兩衹貓Charm(以誇剋命名)和Marjorie(以他的嶽母命名)。他是紐 約科技大學的一位副教授,主要講授Java、XML以及面嚮對象編程。他的Cafe au Lait網站(http://www.cafeaulait.org)是互聯網上最流行的獨立Java網站之一;他的另一個網站Cafe con Leche (http://www.cafeconleche.org)則成為了最流行XML站點之一。他編寫的書籍包括《Java I/O》,《Java Network Programming》和《XML in a Nutshell》(這三本書都由O'Reilly出版社出版),以及XML Bible (Wiley出版社)。他目前的研究領域包括用Java來處理XML的XOM庫、Jaxen XPath引擎以及Amateur媒體播放器。
Brian Hayes為《American Scientist》雜志編寫計算機專欄,他還擁有一個博客http://bit-player.org。過去,他還為《Scientific American》、《Computer Language》、 以及《The Sciences》等雜志編寫過類似的專欄。他編寫的《Infrastructure: A Field Guide to the Industrial Landscape》(Norton出版社)一書於2005年發行。
Simon Peyton Jones,碩士,於1980年畢業於劍橋大學三一學院。在工作兩年後,他在倫敦大學學院擔任了7年的講師,然後在格拉斯哥大學擔任了9年的教授,後來於 1998年加入微軟研究中心。他的研究領域包括函數式編程語言及其實現和應用。他領導了一係列的研究項目,主要研究用於單處理器機器和並行機的高質量函數 式語言係統的設計和實現。他是函數式語言Haskell的主要設計者,此外他還是被廣泛應用的Glasgow Haskell編譯器(GHC)首席設計師。他還編寫了兩本關於函數式語言實現的教科書。
Jim Kent是加利福尼亞大學聖剋魯茲分校基因信息小組(Genome Bioinformatics Group)的一位研究學家。Jim從1983年起就開始編程。在職業生涯的前半段,他主要從事繪畫和動畫軟件的開發,他開發了Aegis Animator、 Cyber Paint以及 Autodesk Animator等獲奬軟件。1996年,由於厭倦了基於Windows API的開發工作,他决定在生物學上追求他的興趣,並於2002年獲得了博士學位。在研究生期間,他編寫GigAssembler——這個程序計算出了第 一批人類基因組——比Celera公司發佈的第一批基因組提前了一天,從而使得這批基因組成為免費的專利並且避免了其他的法律問題。Jim發表了40餘篇 科學論文。他目前的研究工作主要是編寫程序,數據庫和網站以幫助科學家分析和瞭解基因組。
Brian Kernighan於1964年在多倫多大學獲得學士學位,並於1969年在普林斯頓大學獲得電子工程博士學位。他在貝爾實驗室的計算科學研究中心一直工 作到2000年,目前就職於普林斯頓大學的計算機科學係。他編寫了8本著作以及大量的技術論文,並擁有4項專利。他的研究領域包括編程語言、工具、為非專 業用戶設計易用的計算機操作界面等。他還致力於非技術讀者的技術教育工作。
Adam Kolawa是Parasoft公司的創建者之一和CEO,這傢公司是自動錯誤預防(Automated Error Prevention ,AEP)解决方案的領先提供商。Kolawa有着多年在各種軟件開發流程中的經驗,這使得他對高科技企業有着獨特的視野,以及成功辨識技術潮流的非凡能 力。因此,他策劃了幾個成功商業軟件産品的開發過程來滿足在提高軟件質量中不斷增長的工業需求——經常在這種潮流被廣泛接受之前。Kolawa參與編寫了 《Bulletproofing Web Applications》(Hungry Minds出版社)一書,他還撰寫了100餘篇評論和技術文章,發表在《The Wall Street Journal》、《CIO》、《Computerworld》、《Dr. Dobb's Journal》以及《IEEE Computer》等期刊上。此外,他還撰寫了大量關於物理學和並行處理方面的科學論文。他現在的簽約媒體包括CNN、 CNBC、 BBC和NPR。Kolawa擁有加利福尼亞理工大學理論物理博士學位,並擁有10項專利發明。2001年,Kolawa獲得了軟件類別的Los Angeles Ernst & Young's Entrepreneur of the Year奬項。
Greg Kroah-Hartman是目前Linux內核的維護人員,負責多個驅動程序子係統以及驅動程序內核、sysfs、 kobject、 kref和debugfs等代碼。他還為啓動linux-hotplug 和 udev等項目提供了幫助,是內核穩定維護團隊中的重要人員。他編寫了《Linux Kernel in a Nutshell》(O'Reilly出版社),並參與編寫了《Linux Device Drivers, Third Edition》(O'Reilly出版社)。
Andrew Kuchling有着11年的軟件工程師經驗,他是Python開發群體中的長期成員。他的一些與Python相關的工作包括編寫和維護數個標準的庫模 塊,編寫一係列的“What's new in Python 2.x”文章以及其他一些文檔,策劃了2006年和2007年的PyCon會議,並是Python軟件基金會的主管。Andrew於1995年畢業於麥吉 爾大學並獲得計算機科學學士學位。他的個人網頁是http://www.amk.ca。
Piotr Luszczek畢業於波蘭剋拉科夫礦業與冶金大學,並獲得碩士學位,他的研究領域是並行的核外(out-of-core)庫。他將稠密矩陣計算核應用於 稀疏矩陣直接求解算法和迭代數值綫性幾何算法中的創新研究使他獲得了博士學位。他把這種思想用來開發使用核外技術容錯庫。目前,他是田納西大學諾剋斯維爾 分校的一位研究教授。他的研究工作包括大型超級計算機安裝的標準化評價。他開發了一個自適應的軟件庫,能夠自動選擇最優的算法來有效地利用現有硬件以及有 選擇地處理輸入數據。他還感興趣於高性能編程語言的設計和實現。
Ronald Mak是高級計算機科學研究所(Research Institute for Advanced Computer Science)的一位資深科學家,在NASA Ames研究中心工作時,他是協同信息係統(Collaborative Information Portal,CIP)的架構師和首席開發人員。在漫步者登錄火星之後,他分別在JPL和Ames對探測任務提供支持。然後,他獲得了加利福尼亞大學聖剋 魯茲分校的學術任命,並且他再次與NASA簽約,這次的工作是設計幫助宇航員返回月球的企業軟件。Ron是Willard & Lowe Systems(http://www.willardlowe.com)公司的創建人之一和CTO,這是一個針對企業信息管理係統的咨詢公司。他編寫了 數本關於計算機軟件的書籍,他在斯坦福大學分別獲得了數學科學學位和計算機科學學位。
Yukihiro "Matz" Matsumoto是一位程序員,他是一位日本籍的開源倡導者,他發明了最近非常流行的Ruby語言。他從1993年開始研發Ruby,這和Java語言 一樣久遠。現在他工作於日本Network Applied Communication Laboratory(NaCl,網址為netlab.jp)公司,該公司從1997年起開始贊助Ruby的開發。因為他的真實姓名太長而難以記住,並且 對於非日本的演講者來說難以發音,因此在網上他使用了昵稱Matz。
Arun Mehta是一位電子工程師和計算機科學家,他曾在印度、美國和德國進行過研究和教學工作。他是印度早期計算機活動傢,他努力實現了一些方便消費者 (consumer-friendly)的政策,以幫助把現代通信延伸到偏遠地區和貧睏地區。他目前的研究領域包括農村無限通信以及幫助殘疾用戶的技術。 他是印度哈裏亞納邦Radaur地區JMIT大學計算機工程係的教授和主任。他的網址包括http://india-gii.org, http://radiophony.com和 http://holisticit.com。
Rafael Manhaes Monnerat是CEFET CAMPOS的一位IT分析傢,以及Nexedi SARL的海外顧問。他的研究領域包括免費/開源係統、ERP以及最新的編程語言。
Travis E. Oliphant於1995年在美國楊百翰大學獲得電子與計算機工程學士學位和數學學士學位,並於1996年在本校獲得電子與計算機工程碩士學位。他於 2001年在明尼蘇達羅切斯特的梅奧研究生院獲得了生物醫學工程博士學位。他是Python語言中科學計算庫SciPy和NumPy的主要編寫者。他的研 究領域包括顯微阻抗成像,異構領域中的MRI重構以及生物醫學逆問題。他目前是楊百翰大學電子與計算機工程的副教授。
Andy Oram是O'Reilly Media的編輯。他從1992年開始就在這傢公司工作,Andy目前主要關註自由軟件和開源技術。他在O'Reilly的工作成果包括第一批Linux 係列叢書以及2001年的P2P係列叢書。他的編程技術和係統管理技術大多都是自學的。Andy還是Computer Professionals for Social Responsibility協會的成員並且經常在O'Reilly Network(http://oreillynet.com)和其他一些刊物上撰寫文章,這些文章的主題包括互聯網上的政策問題,以及影響技術創新的潮 流及其對社會的影響。他的網址為http://www.praxagora.com/andyo。
William R. Otte是田納西範德堡大學電子工程與計算機係(EECS)的一位博士研究生。他的研究領域是分佈式實時嵌入(DRE)係統的中間件,目前從事CORBA 組件的部署和配置引擎(DAnCE)開發工作。這個工作主要研究運行時規劃技術,基於組件的應用程序的適應性,以及對應用程序服務質量和容錯需求的規範與 實施。在攻讀研究生之前,William於2005年在範德堡大學計算機係畢業並獲得學士學位,之後在軟件集成係統學院(ISIS)工作了一年。
Andrew Patzer是威斯康星大學醫學院生物信息係的主管。過去15年Andrew是一位軟件開發人員並且編寫了許多文章和書籍,包括 《Professional Java Server Programming》(Peer Information公司)和《JSP Examples and Best Practices》(Apress出版社)。Andrew目前的研究領域為生物信息領域,利用像Groovy這樣的動態語言來發掘大量有效的生物數據並 幫助科學研究人員進行分析。
Charles Petzold是一位自由作傢,主要研究領域為Windows應用程序編程。他是《Programming Windows》(Microsoft Press出版社)的作者, 1988年至1999年之間共出版了五版,教育了整整一代程序員的Windows API編程技術。他最新的書籍包括《Applications = Code + Markup: A Guide to the Microsoft Windows Presentation Foundation》(Microsoft Press出版社),以及《Code: The Hidden Language of Computer Hardware and Software》(Microsoft Press出版社),在這本書中他對數字技術進行了獨特的研究。他的網址是http://www.charlespetzold.com。
T. V. Raman的研究領域包括網頁技術和聽覺用戶界面。在20世紀90年代初,在他的博士論文中介紹了音頻格式的概念,叫作AsTeR:Audio System For Technical Readings(技術讀物語音係統),這是一個為技術文檔生成高質量聽覺表示的係統。Emacspeak則將這些思想應用到更廣泛的計算機用戶界面領 域。Raman現在是Google的一位研究人員,主要研究Web應用程序。
Alberto Savoia是Agitar軟件公司的創建人之一和CTO。在創建Agitar之前,他是Google的高級工程主管;在這之前,他還是Sun Microsystems實驗室軟件研究中心的主管。Alberto的主要研究領域是軟件開發技術——尤其是那些幫助程序員在設計和開發階段進行測試和代 碼驗證的工具和技術。
Douglas C. Schmidt是田納西範德堡大學電子工程與計算機(EECS)係的一位教授,計算機科學與工程係的副主任,以及軟件集成係統學院(ISIS)的高級研究 人員。他是分佈式計算模式和中間件框架方面的專傢,並且已經發表了超過350篇的技術論文和9本書籍,內容涉及的主題很廣,包括高性能通信軟件係統,高速 網絡協議並行處理,實時分佈式對象計算,並發與分佈式係統的面嚮對象模式,以及模型驅動的開發工具。在他的學術研究之外,Dr. Schmidt還是PrismTechnologies公司的CTO,並且在領導開發應用廣泛開源的中間件平臺上有着15年的經驗,在這些平臺上包含了豐 富的組件以及實現高性能分佈式係統中核心模式的領域特定語言。Dr. Schmidt於1994年於加利福尼亞大學歐文分校獲得計算機科學博士學位。
Christopher Seiwald編寫了Perforce(一種軟件配置管理係統)、Jam(一種構建工具)和“漂亮代碼的七個要素”(本書的第32章,變動的代碼,正是從 這篇文章中提取出了有價值的思想)。在創建Perforce之前,他在Ingres公司管理網絡開發小組,他花了數年時間來使得異步網絡代碼看上去很漂 亮。現在他是Perforce軟件公司的CEO,並且仍然從事編碼工作。
Diomidis Spinellis是希臘雅典經濟與商業大學管理科學與技術係的副教授。他的研究領域包括軟件工程工具,編程語言和計算機安全。他在倫敦帝國理工大學獲得 了軟件工程碩士學位和計算機科學博士學位。他發表了超過100篇的技術論文,所涉及的領域包括軟件工程,信息安全以及普適計算。他還編寫了兩本開源方面的 書籍:《Code Reading 》(獲得2004年度Software Development Productivity奬)和《 Code Quality 》(這兩本書都由Addison-Wesley出版社出版)。他是IEEE Software編輯委員會的成員,主編“Tools of the Trade”專欄。Diomidis是一位FreeBSD提交者(Committer),並且編寫了許多開源軟件包、軟件庫以及工具。
Lincoln Stein是一位碩士/博士,他的研究領域為生物信息數據的集成與虛擬化。在從哈佛大學醫科學院畢業後,他在麻省理工大學Whitehead基因研究所工 作,開發用於老鼠和人類的基因圖譜數據庫。他在冷泉港實驗室開發了各種基因數據庫,包括WormBase,綫蟲基因數據庫;Gramene,用於水稻和其 他單子葉植物的比較基因映射數據庫;國際Hap-Map項目數據庫;以及人類基因基礎數據庫Reactome。Lincoln還編寫了《books How to Set Up and Maintain a Web Site》(Addison-Wesley出版社)、《Network Programming in Perl》(Addison-Wesley出版社)、《Official Guide to Programming with CGI.pm 》(Wiley出版社)以及《Writing Apache Modules with Perl and C》(O'Reilly出版社)等書籍。
Nevin Thompson把Yukihiro Matsumoto編寫的第29章內容,把代碼當作文章,從日文翻譯到英文。他的客戶包括日本最大的電視網絡,以及Technorati Japan公司和Creative Commons組織。
Henry S. Warren, Jr.在IBM工作了45年,他歷經了從IBM 704到PowerPC的發展過程。他參與過多個軍方指揮與控製係統的開發工作,在紐約大學Jack Schwartz教授指導下從事SETL項目。從1973年起,他在IBM研究部門工作,主要方向為編譯器和計算機架構。Hank目前正在參與Blue Gene Petaflop超級計算機項目。他在紐約大學剋朗數學研究所獲得了計算機博士學位。他是《Hacker's Delight》(Addison-Wesley出版社)一書的作者。
Laura Wingerd多年Sybase和Ingres的數據庫産品開發工作形成了她早期對軟件配置管理的觀點。她在Perforce軟件公司創建之初就加盟了這 傢公司,並且從她給Perforce客戶的建議中獲得了大量的SCM經驗。她編寫了《Practical Perforce》(O'Reilly出版社)一書以及許多與SCM相關的白皮書。她在Google的技術演講The Flow of Change中首次露面。Laura現在是Perforce 軟件公司産品技術部的副主管,主要負責推動合理的SCM流程以及研究新的並且更好的Perforce使用方式。
Greg Wilson在愛丁堡大學獲得了計算機科學博士學位,他的研究領域包括高性能科學計算,數據虛擬化以及計算機安全。他現在是多倫多大學計算機科學係的一位副教授,並且是《Dr. Dobb's Journal》雜志的特約編輯。
Andreas Zeller於1991年畢業於德國達姆斯塔特理工大學,並於1997年在不倫瑞剋理工大學獲得計算機科學博士學位。2001年以來,他一直在德國薩爾蘭 登大學的計算機科學係擔任教授。Zeller主要研究大型程序以及它們的發展歷史,他開發了大量的方法來分析在開源軟件以及IBM、Microsoft、 SAP以及其他公司的商業軟件中失敗的原因。他編寫的《Why Programs Fail: A Guide to Systematic Debugging》(Morgan Kaufmann出版社)獲得了《Software Development Magazine》雜志2006年度的Productivity大奬。
譯序
第一部分:這是一本什麽書
By 劉未鵬(pongba)
C++的羅浮宮(http://blog.csdn.net/pongba)
這是一本獨特的書。
其英文封面上本應寫着作者的位置寫的卻是“Edited by Andy Oram and Greg Wilson”。Edited?!那作者呢?
實際上,這本書有33位作者!
現在你知道為什麽封面上不列作者了吧?一,列不下。二,也是更重要的,每位作者都是一個領域的大牛,怎麽排列?
每位作者都貢獻了一章內容,所以本書一共有33章。這種做法帶來了三個重要的結果:
• 每位作者都是大牛,所以每個人都知道自己在說什麽,絶無一個人寫整本書而導致的在某些不甚在行的地方語焉不詳的情況。
• 每位作者都將自己心目中對於“美麗的代碼”的認識濃縮在一章當中,張力十足。
• 心理學上有一種說法叫做聯合評估與單獨評估,即如果你單獨評估一樣東西,是難以把握其好壞的,然而如果將它跟同類東西一比,就能夠作出更準確的判斷。33位大牛,每個人對代碼之美都有自己獨特的認識,現在一覽無餘的放在一起,對於熱愛程序的每個人都不啻一場盛宴。
當初朋友介紹這本書給我的時候,我頓時産生了一種恍然大悟的錯覺:這纔是我真正想讀的書的樣子啊,難道技術書籍本來不就應該是這個樣子的嗎?就一個主題,讓幾十位領域大牛各抒己見,簡直完美符合了我內心對“書”的定義。
而且,編程是計算機行業的核心活動,而代碼則是編程活動的核心,代碼之美一直一來都是一個玄妙永恆的話題,如果讓我選一個主題來請教這些作者,我還真想不出比這更好的主題!
所以,我就迫不及待地把這本書介紹給了更多的朋友。
所以,我同樣也已經迫不及待地想要告訴你,這本書的作者都有哪些人了:
Jon Bentley:久負盛名的《Programming Pearls》(《編程珠璣》)的作者。在斯坦福獲得學士學位,在北卡羅萊納獲得碩士和博士學位。繼而在卡內基梅隆執教6年。貝爾實驗室前研究員,西點軍校和普林斯頓的訪問教授。
Brian Kernighan:C語言聖經K&R C(《C程序設計語言》)和《程序設計實踐》兩本不朽著作的作者,他的書被翻譯成近30種不同的語言。
Charles Petzold:經典的《Windows程序設計》影響了整整一代程序員,被奉為Windows編程聖經。而他的另一本經典著作《編碼的奧秘》則另闢蹊徑,由淺入深地將計算機最深層的奧秘娓娓道來。
Tim Bray:XML創始人之一。
Yukihiro "Matz" Matsumoto:Ruby之父。
Douglas C. Schmidt:著名的C++跨平臺開源框架ACE的設計者,《C++網絡編程》I,II的作者。
Jeff Dean:天才架構師,Google大型並發編程框架Map/Reduce作者。
Diomidis Spinellis:兩屆Jolt大奬獲主,分別以《Code Reading》和《Code Quality》2004 和2007年的Jolt大奬。
Simon Peyton Jones:Haskell語言核心人物之一,並領導設計了著名的Haskell編譯器GHC。
Douglas Crockford:JSON發明者,Javascript領域大牛,寫了廣為流傳的《Javascript,世界上最被誤解的語言》。
Bryan Cantrill:著名的DTrace的作者之一;之前是Sun傑出工程師,主要工作領域為Solaris內核開發...
Greg Kroah-Hartman:目前的Linux內核維護者,經典的《Linux Device Drivers》的作者。
Andreas Zeller:大名鼎鼎的GNU DDD可視化調試器的作者,著作《Why Programs Fail》獲得2006年Jolt生産效率大奬。
Sanjay Ghemawat:大規模分佈式文件係統Google FileSystem(GFS)的主要作者(GFS是Google的基石之一),同時也是Google Map/Reduce以及Google BigTable的作者之一。
...
(一個完整的作者列表見於書後)
如今這些如雷貫耳的名字居然出現在同一本書中,怎能不令人興奮?!
你是程序員嗎?你對代碼之美的認識是什麽?33位作者,33個來自不同開發領域的專業經驗,33種不同的意見。你想知道牛人們對代碼之美是怎麽想的嗎?
其實,這本書最奇妙的地方還不在於這一點,而在於,如果你知道這些作者的名字,你肯定會忍不住去看一看。如果你不知道這些作者的名字,你更加會忍不住去看一看。因為你知道這些人的觀點肯定不會讓你失望!
最後,還有一個更大的好消息, Oreilly出版社表示還會繼續出書的第二版,邀請更多的牛人!
其實,“Beautiful Team”還有另一個含義:我們有一個漂亮的翻譯團隊;此外團隊組建的過程也很是有趣。在此就留一個懸念,稍後會公佈:-)
註:由於我衹是譯者之一(我們的翻譯團隊裏面有一堆牛人),所以這篇僅代表我個人意見:-)