圖書-軟件:《代碼之美》

ylbtech-圖書-軟件:《代碼之美》

《代碼之美》是2009年機械工業出版社出版的圖書,做者是(美)奧萊姆(Oram,A),(美)維爾森(Wilson,G)。linux

1.返回頂部
一、
書    名:代碼之美
又    名:美麗的代碼
做    者:(美)奧萊姆(Oram,A),(美)維爾森(Wilson,G)
原版名稱:Beautiful Code
譯    者:BC Group
ISBN:9787111251330
類    別:圖書 >> 計算機/網絡 >> 程序設計 >> 其餘
頁    數:599
定    價:99.00
出版社: 機械工業出版社
出版時間:2009-1-1
裝    幀:平裝
開    本:16
二、
2.返回頂部
一、

內容簡介

主要講述了計算機系統的開發領域。在每章中的漂亮代碼都是來自獨特解決方案的發現,而這種發現是來源於做者超越既定邊界的遠見卓識,而且識別出被多數人忽視的需求以及找出使人歎爲觀止的問題解決方案。
本書介紹了人類在一個奮鬥領域中的 創造性和靈活性計算機系統的開發領域。在每章中的漂亮代碼都是來自獨特解決方案的發現,而這種發現是來源於做者超越既定邊界的遠見卓識,而且識別出被多數人忽視的需求以及找出使人歎爲觀止的問題解決方案。
本書33章,有33位做者,每位做者貢獻一章。每位做者都將本身心目中對於「美麗的代碼」的認識濃縮在一章當中,張力十足。33位大師,每一個人對 代碼之美都 有本身獨特的認識,如今盡收眼底的放在一塊兒,對於熱愛程序的每一個人都不啻一場盛宴。 雖然本書的涉獵範圍很廣,但也只能表明一小部分在這個軟件開發這個最使人興奮領域所發生的事情  。
 

編輯推薦

38位大師級的程序員,一步步講解他們的項目架構,開發時的種種折中考慮(tradeoffs)以及什麼時候必須打破常規,尋求突破。
全球38位頂尖高手、衆多語言之父經典之做。
本書收錄的是軟件設計領域中的一組大師級做品。每一章都是由一位或幾位著名程序員針對某個問題給出的完美的解決方案,而且細述了這些解決方案的巧妙之處。
本書既不是一本關於設計模式的書,也不是一本關於軟件工程的書,它告訴你的不只僅是一些正確的方式或者錯誤的方式。它讓你站在那些優秀軟件設計師的肩膀上,從他們的角度來看待問題。
本書給出了38位大師級程序員在項目設計中的思路、在開發工做中的權衡,以及一些打破成規的決策。
 

做者簡介

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網站是互聯網上最流行的獨立Java網站之一;他的另外一個網站Cafe con Leche 則成爲了最流行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》雜誌編寫計算機專欄,他還擁有一個博客。過去,他還爲《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年畢業於麥吉 爾大學並得到計算機科學學士學位。
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公司的建立人之一和CTO,這是一個針對 企業信息管理系統的諮詢公司。他編寫了 數本關於計算機軟件的書籍,他在 斯坦福大學分別得到了數學 科學學位和計算機科學學位。
Yukihiro "Matz" Matsumoto是一位程序員,他是一位日本籍的開源倡導者,他發明了最近很是流行的Ruby語言。他從1993年開始研發 Ruby,這和 Java語言 同樣久遠。如今他工做於日本Network Applied Communication Laboratory(NaCl,網址爲netlab.jp)公司,該公司從1997年起開始贊助Ruby的開發。由於他的真實姓名太長而難以記住,而且 對於非日本的演講者來講難以發音,所以在網上他使用了暱稱Matz。
Arun Mehta是一位電子工程師和計算機科學家,他曾在印度、美國和德國進行過研究和教學工做。他是印度早期計算機活動家,他努力實現了一些方便消費者 (consumer-friendly)的政策,以幫助把現代通訊延伸到偏遠地區和貧困地區。他目前的研究領域包括農村無限通訊以及幫助殘疾用戶的技術。 他是印度 哈里亞納邦Radaur地區JMIT大學計算機工程系的教授和主任。
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)和其餘一些刊物上撰寫文章,這些文章的主題包括互聯網上的政策問題,以及影響技術創新的潮 流及其對社會的影響。
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出版社),在這本書中他對 數字技術進行了獨特的研究。
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多年 SybaseIngres的數據庫產品開發工做造成了她早期對 軟件配置管理的觀點。她在 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大獎。
 

做品目錄

第1章  正則表達式匹配器 。
1.1 編程實踐
1.2 實現
1.3 討論
1.4 其餘的方法
1.5 構建
1.6 小結
第2章 Subversion中的增量編輯器:像本體同樣的接口
2.1  版本控制與目錄樹的轉換
2.2 表達目錄樹的差別
2.3 增量編輯器接口
2.4 但這是否是藝術?
2.5 像體育比賽同樣的抽象
2.6 結論
第3章 我編寫過的最漂亮代碼
3.1 我編寫過的最漂亮代碼
3.2事倍功半
3.3 觀點
3.4 本章的中心思想是什麼?
3.5 結論
3.6致謝
第4章 查找
4.1. 耗時
4.2. 問題:博客數據
4.3. 問題:時間,人物,以及對象?
4.4. 大規模尺度的搜索
4.5. 結論
第5章 正確、優美、迅速(按重要性排序):從設計XML驗證器中學到的經驗
5.1 XML驗證器的做用
5.2 問題所在
5.3 版本1:簡單的實現
5.4 版本2:模擬BNF語法——複雜度O(N)
5.5 版本3:第一個複雜度O(log N)的優化
5.6 版本4:第二次優化:避免重複驗證
5.7 版本5:第三次優化:複雜度 O(1)
5.8 版本 6:第四次優化:緩存(Caching)
5.9 從故事中學到的
第6章 集成測試框架:脆弱之美
6.1. 三個類搞定一個驗收測試框架
6.2. 框架設計的挑戰
6.3. 開放式框架
6.4. 一個HTML解析器能夠簡單到什麼程度?
6.5. 結論
第7章 美麗測試
7.1 討厭的 二分查找
7.2 JUnit簡介
7.3將二分查找進行到底
7.4 結論
第8章 圖像處理中的即時代碼生成
第9章 自頂向下的 運算符優先級
9.1. JavaScript
9.2. 符號表
9.3.  語素
9.4.  優先級
9.5. 表達式
9.6. 中置運算符
9.7. 前置 操做符
9.9. 常數
9.10. Scope
9.11. 語句
9.12. 函數
9.13. 數組和對象 字面量
9.14. 要作和要思考的事
第 10章 追求加速的種羣計數
10.1. 基本方法
10.2.  分治法
10.3. 其餘方法
10.4. 兩個字種羣計數的和與差
10.5. 兩個字的種羣計數比較
10.6. 數組中的1位種羣計數
10.7. 應用
第11章 安全通訊:自由的技術
11.1 項目啓動以前
11.2剖析安全通訊的複雜性
11.3 可用性是關鍵要素
11.4 基礎
11.5 測試集
11.6 功能原型
11.7 清理,插入,繼續……
11.8 在喜馬拉雅山的開發工做
11.9 看不到的改動
11.10 速度確實重要
11.11 人權中的通訊隱私
11.12 程序員與文明
第12章 在BioPerl裏培育漂亮代碼
12.1. BioPerl和Bio::Graphics模塊
12.2. Bio::Graphics的設計流程
12.3. 擴展Bio::Graphics
12.4. 結束語和教訓
第13章 基因排序器的設計
13.1 基因排序器的用戶界面
13.2 經過Web跟用戶保持對話
13.3. 多態的威力
13.4 濾除無關的基因
13.5 大規模美麗代碼理論
13.6 結論
第14章 優雅代碼隨硬件發展的演化
14.1.  計算機體系結構對矩陣算法的影響
14.2 一種基於分解的方法
14.3 一個簡單版本
14.4 LINPACK庫中的DGEFA子程序
14.5 LAPACK DGETRF
14.6 遞歸LU
14.7 ScaLAPACK PDGETRF
14.8 針對多核系統的多線程設計
14.9 偏差分析與操做計數淺析
14.10 將來的研究方向
14.11 進一步閱讀
第15章 漂亮的設計會給你帶來長遠的好處
15.1. 對於漂亮代碼的我的見解
15.2. 對於CERN庫的介紹
15.3. 外在美(Outer Beauty)
15.4. 內在美(Inner Beauty )
15.5. 結論
第16章,Linux內核驅動模型:協做的好處
16.1 簡單的開始
16.2 進一步簡化
16.3 擴展到上千臺設備
16.4 小對象的鬆散結合
第17章 額外的間接層
17.1. 從直接代碼操做到經過 函數指針操做
17.2. 從函數參數到參數指針
17.3. 從文件系統到文件系統層
17.4. 從代碼到DSL(Domain-Specific Language)
17.5. 複用與分離
17.6.分層是永恆之道?
第18章 Python的字典類:如何打造全能戰士
18.1. 字典類的內部實現
18.2. 特殊調校
18.3. 衝突處理
18.4. 調整大小
18.5.  迭代和動態變化
18.6. 結論
18.7. 致謝
第19章 NumPy中的多維 迭代器
19.1 N維數組操做中的關鍵挑戰
19.2 N維數組的內存模型
19.3NumPy迭代器的起源
19.4 迭代器的設計
19.5 迭代器的接口
19.6 迭代器的使用
19.7 結束語
第20章 NASA火星漫步者任務中的高可靠企業系統
20.1 任務與CIP
20.2 任務需求
20.3 系統架構
20.4 案例分析:流服務
20.5 可靠性
20.6 穩定性
20.7 結束語
第21章 ERP5:最大可適性的設計
21.1 ERP的整體目標
21.2 ERP5
21.3 Zope基礎平臺
21.4 ERP5 Project中的概念
21.5 編碼實現ERP5 Project
21.6 結束語
第22章 一匙污水
第23章 MapReduce分佈式編程
23.1 激動人心的示例
23.2 MapReduce編程模型
23.3 其餘 MapReduce示例
23.4 分佈式MapReduce的一種實現
23.5 模型擴展
23.6 結論
23.7 進階閱讀
23.8 致謝
23.9 附錄:單詞計數解決方案
第24章 美麗的併發
24.2 軟件 事務內存
24.3 聖誕老人問題
24.4 對 Haskell的一些思考
24.6 致謝
第25章 句法抽象:syntax-case 展開器
25.1. syntax-case簡介
25.2. 展開算法
25.3. 例子
25.4. 結論
第26章 節省勞動的架構:一個面向對象的網絡化軟件框架
26.1 示例程序:日誌服務
26.2 日誌服務器框架的面向對象設計
26.3 實現 串行化日誌服務器
26.4 實現並行日誌服務器
26.5 結論
第27章 以REST方式集成業務夥伴
27.1 項目背景
27.2 把服務開放給外部客戶
27.3 使用工廠模式轉發服務
27.4 用電子商務協議來交換數據
27.5 結束語
第28章 漂亮的調試
28.1 對調試器進行調試
28.2 系統化的過程
28.3 關於查找的問題
28.4 自動找出故障原由
28.5 增量調試
28.6 最小化輸入
28.7 查找缺陷
28.8 原型問題
28.9 結束語
28.10 致謝
28.11 進一步閱讀
第29章 把代碼看成文章
第30章 當你與世界的聯繫只有一個按鈕
30.1 基本的設計模型
30.2 輸入界面
30.3 用戶界面的效率
30.4 下載
30.5 將來的發展方向
第31章 Emacspeak:全功能音頻桌面
31.1 產生語音輸出
31.2 支持語音的Emacs
31.3 對於在線信息的簡單訪問
31.4 小結
31.5 致謝
第32章 變更的代碼
32.1 像書本同樣
32.2 功能類似的代碼在外觀上也保持類似
32.3 縮進帶來的危險
32.4 瀏覽代碼
32.5 咱們使用的工具
32.6 DiffMerge的曲折歷史
32.7 結束語
32.8 致謝
32.9 進一步閱讀
第33章 爲「The Book」編寫程序
33.1 沒有捷徑
33.2 給 Lisp初學者的提示
33.3  三點共線
33.4 不可靠的 斜率
33.5 三角不等性
33.6 河道彎曲模型
33.7 「Duh!」——個人意思是「Aha!」
33.8 結束語
33.9 進一步閱讀
後記
做者簡介
 

媒體評論

從新擦亮思考的火花
《代碼之美》這本書已經成爲經典。關於它自己的讚美之辭已經很多了,不過到底從這本書裏該讀些什麼東西,我卻是有些思考。
上世紀九十年代初期,當時正在加州大學埃爾文分校攻讀博士學位的Douglas Schmidt在觀察了他所參與的軟件項目開發實踐以後,得出一個結論,即將來的軟件開發將愈來愈多地體現爲整合(integration),而不是傳統意義上的編程(programming)。換言之,被稱爲 「軟件開發者」 的這我的羣,將愈來愈明顯地分化:一部分人開發核心構件和基礎平臺,而更多地人將主要是配置和整合現有構件以知足客戶的需求,相似汽車、機牀和家用電器製造業的產業格局即將到來。面對這一前景,博士生Schmidt一方面寫文章對於其進步意義大加讚賞,另外一方面絕不猶豫地投入到核心構件及平臺的開發陣營中去。他很清楚,在這樣一種分工體系中,因爲軟件整合產業很難出現壟斷局面,所以大多數利潤老是被截留在上游,人固然要往高處走,整合是好事,但他老兄寧肯讓別人來作這個好事。
事實上,軟件產業中大多數看上去挺靠譜的預測都被歷史的發展無情地拋到垃圾堆裏了,然而Schmidt博士生的這個預測卻驚人的準確,其後十幾年軟件工業的發展完美地印證了他當年的判斷。所以,他本人基於這一預測所選擇的人生道路也一路順風。現在已是教授的Douglas Schmidt前後創造了ACE、TAO、CIAO等一系列分佈式計算基礎件,前後主導了美國學界和國防領域內若干重大科研與實際開發項目,稱爲世人公認的分佈式計算架構領導者。
拋開他我的的輝煌不說,「整合化」趨勢實際上已經深入地改變了世界軟件工業的面貌,從而也影響了身爲晚進者的咱們的命運。現在大部分的程序員其實是在整合與配置現有資源以知足需求,而不是真正意義上的「編程」。這固然是一件好事,整合一樣須要深入的洞察力和創新精神,優秀的整合者與天才的程序員同樣不可多得,甚至更加罕見。然而咱們也不能不認可,大多數整合性的工做是機械的,簡單的,重複的,欠缺創意的,深刻的思考每每沒必要要。所以,在這個整合爲王的時代裏,思考的精神在鈍化。更有甚者,互聯網和搜索引擎的出現大大加速了這種鈍化,幾乎全部的問題都有人解決而且張貼在互聯網上了,所以獨自思考和解決問題已經成了沒必要要的、下降效率的行爲,不但不時髦,並且不經濟。軟件開發迅速成爲一個強調搜索和短時間記憶力的技能,我想這是50年前第一代程序員們作夢也沒有想到的。
老實講,就總體而言,我仍然認爲這是一種進步。任何一個產業的成熟,無不伴隨着分工的明晰、技能的簡化和從業門檻的下降。與少數人享受思考樂趣的需求相比,大多數人享受便宜而無處不在的軟件服務的需求顯然遠爲重要。可是,對於身處軟件行業中的個體來講,思考力的削弱和喪失倒是徹徹底底的悲劇。這一點沒必要過多解釋,正在苦苦尋找本身核心競爭力的開發者們都知道我說的是什麼意思。幾年來對中國開發者社羣的近距離觀察使我確信,儘管做爲一個產業,中國軟件一直享受着比較快的成長,可是整體而言,中國的軟件開發者愈來愈迷惘、焦躁和不自信。這一狀況固然是由多種緣由致使的,但開發者們每念及此,多抱怨體制、產業、市場等身外之物,實在也有失偏頗。評心而論,這幾年中國軟件技術界的生存環境仍是有了很大改善,對於那些真正出類拔萃的程序員來講,過上一種充實自信的生活並不困難。擺在每個個體面前的主要問題仍是在於可否出類拔萃,而這就須要咱們從新找回思考的能力。具有強悍思考能力的人,也就具有強悍的解決問題的能力,而這樣的開發者永遠都是產業中的稀缺資源。
我認爲這正是《代碼之美》這本書的一個重要價值。合做的諸位大師級做者,給咱們一個很好的機會,讓咱們可以一邊閱讀,一邊思考,找回深思熟慮的智慧火花。這本書裏所講的每個問題,能夠說都是程序員在工做中會遇到或者至少會擦邊的問題,既沒有故弄玄虛的文字遊戲,也沒有攜帶了領域知識的私貨,只有樸實而實際的一個個問題。雖然不是以提問的方式給出,但在整個閱讀的過程當中,咱們仍是可以找到不少機會與大師互動,不斷地發現問題和解決問題。我在閱讀中常常感到,看上去一個很簡單的問題,卻被這些大師們一層一層挖掘的如此深刻,到最後階段不禁得使人感到戰慄和震撼。看着這些智慧的光芒,咱們不但能夠領略大師之所謂稱爲大師的祕密,並且也認識到思考的真諦。所以,千萬不要想看小說同樣一帶而過,那樣會錯過本書95%的價值!咱們不是要閱讀這些文字,而是要與文字背後的做者交流學習,一點一點把本身的心得記下來,對於做者提出的新問題,先本身思考,直接寫程序嘗試,爭取跟上大師的思路,甚至可能須要反覆幾遍,才能真正讀通這本書。這樣的精力不會是白費的,讀者應當認識到,當咱們擁有這本書的時候,咱們得到了怎樣寶貴的機會,能夠在相對比較短的時間裏有效地提高本身的思考能力。這是一個機會,也是一次考驗,我絕對相信,經過了此次考驗的讀者,會在思考和解決問題的能力上有一個大的進步。
我但願本身可以以這樣的態度讀這本了不得的書,以此文與其餘讀者朋友共勉之。
——孟巖
二、
3.返回頂部
 
4.返回頂部
 
5.返回頂部
一、
二、
 
6.返回頂部
 
warn 做者:ylbtech
出處:http://ylbtech.cnblogs.com/
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
相關文章
相關標籤/搜索