計算機科學專業必讀的44冊經典著作 - guangshi007的專欄- 博客頻道 - CSDN.NET

1.The Art of Computer Programmin Author: Donald.E.Knuth Book Info: 這部書被譽為20世紀最重要的20部著作之一,與Einstein的"相對論"並列,是計算機科學領域的權威著作.全書共分7卷,目前已經出版了3卷,被譽為"計算機程序設計理論的荷馬史詩","可與牛頓的<<自然科學的數學原理>>媲美的巨著".作者數學方面的功底造就了本書嚴謹的風格,雖然本書不是用當今流行的程序設計語言描述的,但這絲毫不損傷它"程序設計史詩"的地位.道理很簡單,它內涵的設計思想是永遠不會過時的.The Art ofComputer Programming 原計劃要出七冊,但目前只完成了三冊.該書有日文,俄文,西班牙文等許多國的版本.其中,中文版由國防大學出版社發行.無數的讀者都在談論Knuth的書所帶來的深遠影響.科學家驚嘆於分析邏輯之透徹嚴謹,而普通的編程人員也已成功地將書中所列方案運用到他們的日常問題中.所有的人都非常讚賞Knuth在這套書中所表現的精確與風趣,並為其明確性與涉及面之廣而感到欣喜. 我無法向你表達這套書在學習和創造性方面所帶給我的興奮與激動,我已經將它們帶入了我的生活,就像我的汽車,飯館,工作,家庭……無所不在                         ----Charles Long   無論你的背景怎樣,如果你正在進行複雜的計算機編程,你就應該閱讀本套書中的每本書,來補充你的專業知識.當一個問題難以解決,而必須使用Knuth的這套書來解決時,總是一件令人愉快的事情.我發現在計算機方面使用它們會有驚人的效果.                 ----Jonathan Laventhol   如果你認為你是一名真正優秀的程序員……讀Knuth的<<計算機程序設計藝術>>,如果你能讀懂整套書的話,請給我發一份你的簡歷.                          ----Bill GatesThe Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition)Book Info: 卷1為基礎運演算法則,該書以基本的編程概念和技術為開始,然後講述信息結構--計算機內信息的表示法,數據元素間的結構關係以及處理它們的有效方法.主要應用於模擬,數字方法,符號計算,軟體和系統設計.許多簡單和重要的運演算法則和技術已添加到前一版本中,精確的初步計算部分已經修改,以適應當前趨勢.The Art of Computer Programming, Volume 2: Seminumerical Algorithms(3rd Edition)Book Info: 第2卷對半數值演算法領域做了全面介紹,分"隨機數"和"算術"兩章.本卷總結了主要演算法範例及這些演算法的基本理論,廣泛剖析了計算機程序設計與數值分析間的相互聯繫.第3版中特別值得注意的是Knuth對隨機數生成程序的重新處理和對形式冪級數計算的討論.The Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition)Book Info: 卷3為分揀和搜索,這是本書的第1個修訂版,它是對計算機分揀和搜索的一流技術的最全面的研究,它擴展了卷1中數據結構的處理方法,將大小資料庫以及內存和外部存儲都包含在內.本書包括對計算機方法仔細檢查的選擇方案,和其效率的大量分析.本書該版的獨特之處在於優化了的分揀,以及對通用散列法和排列法的新的理論論述.作者簡介: Donald.E.Knuth(唐納德.E.克努特,中文名高德納)是演算法和程序設計技術的先驅者,是計算機排版系統TeX和METAFONT的發明者,他因這些成就和大量創造性的影響深遠的著作(19部書和160篇論文)而譽滿全球,在計算機科學領域享有崇高的威望,是計算機科學界公認的大宗師.作為斯坦福大學計算機程序設計藝術的榮譽退休教授,他當前正全神貫注於完成其關於計算機科學的史詩性的七卷集.這一偉大工程在1962年他還是加利福尼亞理工學院的研究生時就開始了.Knuth教授獲得了許多獎項和榮譽,包括美國計算機協會圖靈獎(ACM Turing Award),美國前總統卡特授予的科學金獎(Medal of Science),美國數學學會斯蒂爾獎(AMS Steele Prize),以及1996年11月由於發明先進技術榮獲的極受尊重的京都獎(KyotoPrize).現與其妻Jill生活於斯坦福校園內.Donald.E.Knuth人生最輝煌的時刻在斯坦福大學計算機系渡過,獲得了美國計算機協會圖靈獎,成為本領域內當之無愧的泰斗。2.Introduction to AlgorithmsAuthor:Thomas H.Cormen ,Charles E.Leiserson ,Ronald L.Rivest ,Clifford SteinBook Info: 簡稱為CLRS的"演算法導論",被稱作"計算機演算法的聖經".本書的主要作者來自麻省理工大學計算機,作者之一Ronald L.Rivest 由於其在公開秘鑰密碼演算法RSA上的貢獻獲得了圖靈獎,目前是演算法的標準教材,美國許多名校的計算機系都使用它,國內有些院校也將本書作為演算法課程的教材.另外許多專業人員也經常引用它.由於TAOCP只出版了3卷,CLRS比較起前者來則顯得內容更為全面,基本包含了所有的經典演算法.本書程序全部由偽代碼實現,這更增添了本書的通用性,使得利用各種程序設計語言的程序員都可以作為參考.語言方面通俗,很適合作為演算法教材和自學演算法之用.國內的很多作品名為數據結構,從本書中斷章取義,把數據結構與演算法混為一談,搞得作者自己都迷迷糊糊.這也是我不十分願意向大家推薦國內作品的原因.你會發現現在基本上所有的數據結構與演算法書籍都會將本書作為參考文獻之一,更可以說明一個問題,本書是作為讀者進行演算法學習的最佳選擇.作為本書的補充內容,我願意向大家推薦下面的學習資料:你可以通過這個地址找到本書的所有練習答案:http://www.itu.dk/people/beetle/為了更好的學習本書中的內容,最好的指導當然是來自作者本身講述本書的課程,讀者們可以通過http://18.89.1.101/sma/5503fall2001/index5503fall2001.html獲得課程的錄像3.Data Structure & Algorithm Analysis in C (Second Edition)Author:Mark Allen WeissBook Info: 本書曾被評為20世紀頂尖的30部計算機著作之一,作者Mark Allen Weiss在數據結構和演算法分析方面卓有建樹已被世界500餘所大學用作教材.4.Concrete Mathematics A Foundation for Computer Science(Second Edition)Author:Donald.E.Knuth&Ronald L.GrahamBook Info: 很令人興奮的就是這本書的主要作者正是泰斗Donald.E.Knuth以及他的同事Ronald L.Graham.書稿是他們在1970年的時候在計算機系教授研究生本門課程的基礎上整理出來的教材.內容上是Knuth的巨著TAOCP第一部的擴展,有些比TAOCP中談及地又深入了許多.重點放在高級計算機程序設計話題以及演算法分析上,涉及了計算機科學領域內幾乎所有可能遇到的數學知識.具體數學是離散數學連續數學的綜合,書中這點做得極為出色,介紹的內容涉及到書中許多經典問題的解答比目前廣泛流傳的解法更易懂.對於提高大家的計算數學修養有很大幫助.之所以TAOCP有的時候讀者們讀不懂就是因為計算數學基礎不是十分紮實,但以我個人經驗,若能對本書中內容有一個比較好的理解,會給你閱讀如TAOCP這樣的曠世巨著帶來很大的方便.5.Discrete Mathematics and Its Applications,Fourth EditionAuthor:Kenneth H.RosenBook Info: 本書的價值已經被全世界幾百所大學所證實,作為離散數學領域的經典教材,全世界幾乎所有知名的院校都曾經使用本書作為教材.以我個人觀點看來,這本書可以稱之為離散數學百科.書中不但介紹了離散數學的理論和方法,還有豐富的歷史資料和相關學習網站資源.更為令人激動的便是這本書少有的將離散數學理論與應用結合得如此的好.你可以看到離散數學理論在邏輯電路,程序設計,商業和互聯網等諸多領域的應用實例.本書的英文版(第五版)當中更增添了相當多的數學和計算機科學家的傳記,是計算機科學歷史不可多得的參考資料.作為教材這本書配有相當數量的練習.每一章後面還有一組課題,把學生已經學到的計算和離散數學的內容結合在一起進行訓練.這本書也是我個人在學習離散數學時讀的唯一的英文教材,實為一本值得推薦的好書.6.The C Programming Language 2nd EditionAuthor:Brian W.Kernighan and Dennis M.RitchieBook Info: Brian W.Kernighan和Dennis M.Ritchie的傳世之作.千千萬萬程序員和編程愛好者的聖經,每一頁都是價值連城的秘訣.不管你從哪一頁信手翻起,最終你都會發現自己已經深陷其中而不能自拔.7.The C++ Programming LanguageAuthor:Bjarne StroustrapBook Info: 由C++之父親手執筆的「The C++ Programming Language」是每個程序員心目中不可動搖的指南-----儘管官方標準還是ISO頒布的另一份文檔,由ISO/IEC JTC1/SC22/WG21出版.TCPL是除了C++標準文獻之外最權威的C++參考手冊.?痛蠖嗍說目捶ú淮笠謊?,我認為Bjarne的文字語言並不遜色於他所創建的程序語言,至少我喜歡這種學院氣息濃厚的作品.本書對C++語言的描述輪廓鮮明,直截了當.它從C++語言創建者的角度來觀察C++,這是任何別的作者和書籍做不到的----沒有任何人比Bjarne自己更清楚該怎麼來使用C++.<br />  這是一本嚴肅的著作,以中,高級C++開發人員為目標讀者.如果你是一名有經驗的C++程序員,需要了解更加本質的C++知識,本書正是為你而寫.它不是那種讓你看了會不斷竊喜的小書,需要用心體會,反覆咀嚼.在閱讀過程中,請特別留心Bjarne先生強調了什麼,又對什麼一語帶過.我個人比較喜歡這本書的第四部分"使用C++做設計",這樣的內容在類似的程序設計語言書籍中很難看到----我甚至認為Bjarne應該將這部分獨立出來單獨寫一本書.8.The Design and Evolution of C++Author: Bjarne StroustrupBookk Info: D&E是一本關於C++語言設計原理,設計決策和設計哲學的專著.它清晰地回答了C++為什麼會成為今天這個樣子而沒有變成另外一種語言.作為C++語言的創建者,Bjarne淋漓盡致地展示了他獨到而深刻的見解.除了廣受讚譽的語言特性外,Bjarne沒有迴避那些引起爭議的甚至被拒絕的C++特性,他一一給出了邏輯嚴密,令人信服的解釋.內容涵蓋C++的史前時代,帶類的C,C++的設計規則,標準化,庫,內存管理,多重繼承,模板等,對包括異常機制,運行時類型信息和名字空間在內的重要的新特性都分別進行了深入探討.每一名C++程序員都應該可以從Bjarne的闡釋中加深對手中這門語言的認識.這本書知識濃縮,信息量極大,請不要錯過Bjarne每一句看似漫不經意的話.9.Accelerated C++: Practical Programming by ExampleAuthor: Andrew Koenig, Barbara E.MooBook Info: 和市面上大多數C++教程不同,本書不是從"C++中的C"開始講解,而是始於地道的C++特性.從一開始就使用標準庫來寫程序,隨著講述的逐漸深入,又一一解釋這些標準庫組件所依賴的基礎概念.另外,和其他C++教材不同的是,這本書以實例拉動語言和標準庫的講解,對後兩者的講解是為了給實常式序提供支持,而不是像絕大多數C++教材那樣,例子只是用作演示語言特性和標準庫用法的輔助工具.作者在C++領域的編程實踐,教育培訓以及技術寫作方面都是世界一流水準.我喜歡這種大量使用標準庫和C++語言原生特性的清新的寫作風格.在這本教材面前,幾乎迄今為止的所有C++教材都黯然失色或顯得過時.儘管這本教材也許對於國內的高校教育來說有些前衛,不過我仍然極力向我的同行們推薦.順帶一提,在Bjarne和我最近的一封通信里,他這樣評價本書:對於有經驗的程序員學習C++而言,這本書可能是世界上最好的一本.10.C++ Gotchas: Avoiding Common Problems in Coding and DesignAuthor: Stephen C.DewhurstBook Info: Stephen的理論素養和實踐經驗註定這是一本值得一讀的好書.Stephen曾經是貝爾實驗室中第一批C++使用者.他已經使用C++成功解決了包括編譯器,證券交易,電子商務以及嵌入式系統等領域中的問題.本書彙集了作者來自開發一線的99條編程真知灼見,洞悉它們,你可以避免幾乎所有常見的C++設計和編程問題.我甚至認為,對於C++編程菜鳥而言,閱讀這本書會比閱讀Scott和Herb的書更能輕鬆而立竿見影地獲得更大的提高.我個人很喜歡這本書的寫作風格----Stephen的許多觀點看似極端卻無可辯駁.當然了,這種自信(以及冷幽默)來自於作者深厚的技術素養,而非自大的偏執.11.C++ Primer 3rdAuthor: Stanley B.LippmanBook Info: 這本書的名字多少有點讓人誤解.儘管作者聲稱這本書是為C++新手而寫,但無論是它的厚度還是講解的深度都暴露了似乎並非如此.也許說它是一本"從入門到精通"的C++教程會更合適一些.我個人認為它並不適合完全不懂C++的初學者----在閱讀這本書之前,你至少應該先有那麼一點C或C++的背景知識,或者至少要具有一些其他語言的編程經驗.儘管這本書省略了一些高級C++特性的討論,但仍然可以稱得上是迄今為止最全面的C++學習教程.事實上,如果一名C++初學者能夠扎紮實實地讀完本書並對照"C++ Primer Answer Book"完成全部習題的話,他的水平肯定可以進入職業C++程序員的行列.我個人認為,即使你已經擁有了TCPL,這本書依然有擁有的價值,因為在許多方面它比TCPL來得更詳細,更易懂.12.Essential C++Author: Stanley B.LippmanBook Info: 可以不太嚴格地認為這本書是"C++ Primer"的精簡版.本書一一講述了C++中最具代表性的主題,包括過程式編程,泛型編程,基於對象編程,面向對象編程,模板編程以及異常處理等.Stanley將門檻調低到"具有其他語言程序設計經驗"的C++新手所能接受的最基本的層次,使他們能夠迅速開始使用C++編程而又免於閱讀"C++ Primer"那樣的大部頭.它以實例引導學習,力圖使讀者在最短的時間內把握C++的精粹.也許換一個人來概述C++編程范型(paradigm)的方方面面需要好幾百頁才能說清楚,但這本小書不可思議地做到了這一點.我個人非常喜歡這種滿是技術,簡明扼要並且"有話好好說"的書.這本書同樣具有一個明顯的風格:所有程序例子全部採用標準庫組件,讓人耳目一新.13.Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition)More Effective C++: 35 New Ways to Improve Your Programs and DesignsAuthor: Scott MeyersNook Info: 先養成良好的C++設計習慣,這是Scott Meyers的"Effective C++"和"More Effective C++"帶給我們的無窮好處,這兩本書是真正的經典,作者對C++的純熟,使得語言的風格讀起來簡直是如飴甘甜,就像他站在你對面講課.如果你已經深刻地理解了"Effective C++"和"More Effective C++";,那你可以發現,你在眾人中已經是雞群之鶴.如果說"Effective C++"主要討論C++中一些相對基礎的概念和技巧的話,那麼"More Effective C++"則著重探討了包括異常處理在內的一系列高級技術.與前者相比,後者具有兩大主要區別:其一,它包含很多時新的標準C++的內容;第二,它討論的主題傾向於"戰略化"而非"戰術化",並且討論得更深入,更徹底.尤其是對虛析構函數,智能指針,引用計數以及代理類(proxy classe)等技術和模式論述的深入程度,讓人很難想像是出現於這樣的一本小書之中.14.Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions< More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions>Author: Herb SutterBook Info: 你自認為是一名C++語言專家嗎?讀一讀ISO C++標準委員會秘書長的這兩本書再回答.在這兩本書中,Herb採用了"問答"的方式指導你學習C++語言特性.對於每一個專題,Herb首先合理地設想出你的疑問和困惑,接著又猜測出你十有八九是錯誤的解答,然後給你以指點並提出最佳解決方案,最後還歸納出解決類似問題的普適性原則.<br />  這兩本書是典型的深究C++語言細節的著作,很薄,但內容密集,遠遠超過Scott的那兩本書,讀起來很費腦筋----我個人認為它們要比Scott的書難懂得多.若要研習這薄薄的兩本書所包含的知識,至少需要花費數月的時間!(在Scott的薦序中,他坦陳不止一次陷入GotW問題的陷阱,你應該知道這意味著什麼)對於語言細節的深究有什麼好處呢?儘管在大多數情況下,我們不必關心C++代碼幕後的動作,然而當我們不得不關心時,這兩本書可以為我們提供很好的線索,因為它們揭示了C++語言中微妙而又至關重要的東西.15.Modern C++ Design: Generic Programming and Design Patterns AppliedAuthor: Andrei AlexandrescuBook Info: 你自認為是C++模板編程高手嗎?請看過這本書再回答.這是一本出自天才之手令人敬畏的傑作.泛型模式,無限延伸你的視野,足以挑戰任何一名C++程序員的思維極限.<br />  這本書共分為兩大部分,第一部分討論了Loki程序庫採用的基礎技術以及一些高級語言特性,包括基於策略的類設計,模板局部特化,編譯期斷言,Typelist以及小型對象分配技術等.第二部分則著重介紹了Loki中的重要組件和泛型模式技術,包括泛化仿函數(Generalization Functor),單件(Singleton),智能指針,對象工廠(Object Factory),抽象工廠(Abstract Factory),訪問者(Visitor)以及多方法(Multimethods)等.每一種技術都讓人大開眼界,嘆為觀止.16.C++ Templates: The Complete GuideAuthor: David Vandevoorde, Nicolai M.JosuttisBook Info: 有一種老套的讚美一本書的手法,大致是"沒有看過這本書,你就怎麼怎麼地",這裡面往往誇張的成分居多.不過,倘若說"沒有看過"C++ Templates: The Complete Guide",你就不可能精通C++模板編程",那麼這個論斷對於世界上絕大多數C++程序員來說是成立的.這本書填補了C++模板書籍領域由來已久的空白.此前,上有"Modern C++ Design"這樣的專註於模板高級編程技術和泛型模式的著作,下有"The C++ Standard Library"這樣的針對特定模板框架和組件的使用指南.然而,假如對模板機制缺乏深入的理解,你就很難"上下"自如.鑒於此,我向每一位渴望透徹理解C++模板技術的朋友推薦這本書.17.The C++ Standard Library: A Tutorial and ReferenceAuthor: Nicolai M. JosuttisBook Info: 這是一本百科全書式的C++標準庫著作,是一本需要一再查閱的參考大全.它在完備性,細緻性以及精確性方面都是無與倫比的.本書詳細介紹了每一標準庫組件的規格和用法,內容涵蓋包括流和本地化在內的整個標準庫而不僅僅是STL.正如本書副標題所示,它首先適合作為教程閱讀,爾後又可用作參考手冊.淺顯易懂的寫作風格使得這本書非常易讀.如果你希望學習標準庫的用法並儘可能地發揮其潛能,那你必須擁有這本書.正如網路上所言,這本書不僅僅應該擺在你的書櫥中,更應該放到你的電腦桌上.我向每一位職業C++程序員強烈推薦.18.Effective C++: 50 Specific Ways to Improve Your Programs and Design (2nd Edition)Author: Scott MeyersEffective STL: 50 Specific Ways to Improve Your Use of the Standard Template LibraryAuthor: Scott MeyersBook Info: 讀完Scott 的"Effective C++"和"More Effective C++"的中譯本之後,我一直期待這本書的中文版.我從潘愛民先生的個人主頁上了解到,他和他的合作夥伴似乎早已完成了這本書的翻譯工作,可惜至今市面上仍不得見.幸運的是,我們可以看到它的原版.臼槭鞘褂肧TL的程序員必讀之作.在這本書中,Scott向我們講述STL容器和演算法的工作機制以及如何以最佳方式使用它們.和Scott的其他作品一樣,這本書的寫作風格清晰,精確,具有極佳的可讀性.看過這本書以後,我想你也許會和我以及其他C++程序員一樣產生這樣的想法:cott什麼時候會寫出一本"More Effective STL"?19.Thinking in C++, Volume 1: Introduction to Standard C++ (2nd Edition)Author: Bruce EckelBook Info: "Thinking in C++"的第1版於1996年榮獲"軟體研發"雜誌評選的圖書震撼大獎.最新推出的第2版對內容進行了大幅改寫和調整,以反映C++標準化帶來的影響以及近幾年面向對象領域最新研究和實踐成果."輸入輸入流","多重繼承","異常處理"和"運行時類型識別"等高級主題連同C++標準化以後增加的一些內容則被放入第二卷中.Bruce是一名經驗豐富的C++講師和顧問,其培訓和寫作經驗都是世界一流水準,他的作品比那些"玩票"的技術人員寫的東西更能吸引讀者.事實上,在同類圖書中,對於大多數讀者而言,這本書的可讀性要超過TCPL和"C++ Primer"Thinking in C++, Volume 2: Practical Programming (Second Edition)Author: Bruce Eckel20.Ruminations on C++: A Decade of Programming Insight and ExperienceAuthor: Andrew Koenig, Barbara E. Moo, Barbara E. (Editor) MooBook Info: Andrew是世界上屈指可數的C++專家.這是一本關於C++編程思想和程序設計技術而非語言細節的著作.如果你已經具有一定的基礎,這本書將教你在進行C++編程時應該怎樣思考,應該如何表達解決方案.整本書技術表達透徹,文字通俗易懂.Bjarne這樣評價這本書:本書遍布"C++是什麼,C++能夠做什麼"的真知灼見.21.Design Patterns: Elements of Reusable Object-Oriented softwareAuthor: Erich GammaBook Info: 設計可復用的面向對象的軟體,你需要掌握設計模式.本書並非專為C++程序員而寫,但它採用了C++(以及Smalltalk)作為主要示例語言,C++程序員尤其易於從中受益.四位作者都是國際公認的面向對象軟體領域專家,他們將面向對象軟體的設計經驗作為設計模式詳細記錄下來.這本書影響是如此深遠,以至於四位作者以及本書都被昵稱為GoF(Gang of Four).本書學院氣息濃厚,行文風格嚴謹簡潔,雖然它不如某些講解模式的書籍易讀,但真正要精準地理解設計模式,本書是終極權威.學習設計模式,這本書需要一而再,再而三的咀嚼.順帶一句:請將設計模式化作開拓思維的鑰匙,切莫成為封閉思維的枷鎖.22.Efficient C++: Performance Programming TechniquesAuthor: Dov Bulka, David MayhewBook Info: 這本超薄小書聚焦於高性能C++應用程序開發.兩位作者都是IBM軟體專家,都工作於對性能要求極高的系統構建領域,本書是他們的經驗之談.也有人不喜歡這本書,因為它花了不少的篇幅講述和C++無關的東西,我卻恰恰因為這一點而對這本書產生好感,正是這些東西讓我開闊了眼界.23.Inside the C++ Object ModelAuthor: Stanley B.LippmanBook Info: 從編譯器的角度觀察C++可以使你知其然並知其所以然.本書探討了大量的C++面向對象程序設計的底層運作機制,包括構造函數,函數,臨時對象,繼承,虛擬,模板的實例化,異常處理,運行期類型識別等,另外還介紹了一些在實現C++對象模型過程中做出的權衡折衷.喜歡刨根問底的C++程序員可以從中了解了無數的編譯器解釋源代碼的細節,以及記憶體分配的細節..24.The Art of Assembly LanguageAuthor: Randall HydeBook Info: 本書以X86系列微機為背景,從簡單的Hello程序開始,系統而詳細地闡述了X86微機彙編語言編程的各種基礎知識和編程技巧,內容涉及到數據表示,存儲器管理,各種數據類型,過程,與彙編語言相關的體系結構,控制結構,文件,宏指令,位處理指令,字元串指令,MMX指令,類和對象,以及混合語言編程等,尤其是在高級彙編語言(HLA)方面,該書給予了細緻深入的講解.對於有意學習X86彙編語言編程的程序員來說,這是一本難得的好書.本書的作者Randall Hyde在大學中教授彙編語言十多年,並且開發了好幾個商用軟體,具有豐富的彙編語言開發經驗.該書的英文電子版受到了成千上萬的網站和高級程序員的高度評價,已經成為了高級彙編語言編程方面的一本經典之作.雖然該書的出版時間不長,但在Amazon上為該書作出評價的人很多,而且幾乎所有的人都給予5星的評價,可見其內容之好.可以相信,隨著時間的推移,它在程序員中的影響會越來越大.25.The Design and Implementation of the 4.4BSD Operating SystemAuther: Marshall Kirk McKusick, Consultant Keith Bostic, Book Info: 是第一本完整描述伯克利最新版本4.4BSD設計和實現的權威性著作.書中介紹了4.4BSD的內部結構和實現4.4BSD的系統功能中所用的概念,數據結構和演算法.書中著重對4.4BSD 和 AT&T System V UNIX 版本的不同處作了較詳細的描述,並對其設計思想及背景作了清晰的闡述.該書對研究,開發和使用 UNIX 系統,特別是4.4BSD UNIX 實現中的一些新技術,新特點.有很大的參考價值.26.John Lions:Lions』Commentary on UNIX 6th Edition with Source CodeAuthor: John LionsBook Info: 在20世紀70年代和80年代這一時期,萊昂的幾冊"源代碼分析",曾是人們爭相傳看的UNIX系統的"地下出版物".我們今天來審視這一著作,儘管其中的代碼已屬過時,但其注釋者所作的大部分注??,依然完美如初.要想學習操作系統原理,就必須閱讀和理解源代碼.萊昂的工作,使我們中間的大多數人都能達到這一步.本書中的材料確定是有點過時了,其內容不包括圖形,網路以及1975年後出現的新事物.即使在1979年的編譯中也不再使用的線性搜索,基本數據結構和C代碼還保留在本書的源代碼中,而該代碼面向的計算機非常簡單,只比存儲器稍稍多一些.從中你會發現有很多粗糙之處.但是在代碼中你也可以觀察到其基本結構,該結構沿用了很長時間,而且能夠包容在計算環境中發生的巨大變化.在萊昂的分析中,你可以覺察到新鮮的,經常提出問題的立場,其中的很多詞語和思想都很適宜於教育和學習.萊昂非常清楚地讚賞他閱讀的UNIX源代碼,但又立即指出其不足之處.他幫助他的學生理解蘊含在源代碼中的很多思想和主題,也坦率地說明他對該代碼某些部分感到的困惑之處.此處重印的文獻已經教育了一代人,它是計算機界中複印數量最多的一本書稿.將此公開記錄在案是件大好事.            ----丹尼斯.M .里奇  最後我還想提及的是:現在,得到最廣泛傳播的一份地下計算機科學文獻已經可以自由地使用了.我對1977年中的那一天仍然是記憶猶新,那時我接到郵寄來的此書的第一份草稿,開始時我對此書並無很多期望,但是最後卻是逐字逐句進行了仔細閱讀.20年之後,此書依舊是對一個實際操作系統工作的最好分析說明.                              ----肯·湯姆森 (湯姆森和里奇因為開發和實現UNIX操作系統而共同獲得1983年ACM美國計算機協會圖獎).27.Operating Systems: Design and Implementation (Second Edition)Author: Andrew S.Tanenbaum, Albert S.WoodhullBook Info: 本書是一本理論結合實踐的傑出教材.作者不僅介紹了所有基本原理,如:進程,進程間通信,輸入/輸出,虛擬存儲,文件系統及系統安全,也介紹了線程概念,同時又詳盡地討論了MINIX系統(一種UNIX兼容系統),使學生不僅能學到原理,還能通過使用MINIX來了解如何將這些原理應用到真實的操作系統中.作者更新了所有原理性材料以反映該領域的新進展.基於POSIX的MINIX系統經修訂後可運行在基於奔騰(Pentium)的計算機上.MINIX代碼可用於Ethernet和TCP/IP聯網環境.每本書均附光碟,內含MINIX全部源碼和可運行各種計算機上的兩個模擬程序.每章後均附思考題.28.Modern Operating Systems (2nd Edition)Author: Andrew TanenbaumBook Info: 對於軟體開發專家以及計算機專業的學生來說,<<現代操作系統>>給出了操作系統設計一個概念上的全面見解,包括Unix/Linux和Windows 2000的詳細個案研究.本書共分兩部分,第一部分詳盡講述了傳統操作系統知識,包括進程,存儲器管理,文件系統,I/O設備管理,死鎖等內容;第二部分主要介紹了分散式操作系統,包括層次協議,遠程過程調用,互斥操作,分散式文件系統等專題.為加深概念的理解,本書還詳細介紹了四個操作系統,包括兩個傳統的系統UNIX和MS-DOS;兩個分散式系統Amoeba和Mach.此外還簡要介紹了NFS,AFS,ISIS等其他幾個系統.本書體系完整,內容豐富,敘述清晰,是大學計算機及相關專業學生不可多得的教科書,對於從事計算機管理,開發,系統分析等職業的專業人員也是優秀的參考書.29.Operating System ConceptsAuthor: Abraham Silberschatz, Greg Gagne, Peter Baer GalvinBook Info: 本書是計算機類專業操作系統課程的一本經典教材,自第一版問世以來,經歷了近20年的錘鍊,被認為是該課程教材的一本"聖經".它對操作系統的概念和基本原理給出了清晰的闡述.本書所涉及的基本概念和演算法均基於當前商用操作系統,並在非特定操作系統的通用環境中展開講解.書中介紹了大量與流行操作系統相關的實現技術,包括Solaris2,Linux,Windows NT,Windows 2000,OS/2和Apple Macintosh操作系統.此版包括了線程,Windows 2000的新章節,並新增了客戶/伺服器/模型和網路文件系統,嵌入式操作系統,實時操作系統,分散式操作系統等.30.unning MS-DOSAuthor: Van WolvertonBook Info: MS-DOS 上的清晰工作!經過10年無數次競爭,"Running MS-DOS"仍是被其它 MS-DOS 奉為標準的書.Van Wolverton 的實際的寫作風格,上百張屏幕演示,使得"RunningMS-DOS"成為任何時候的DOS指南暢銷書.再沒有哪個計算機書從讀者和評論家那裡獲得過這麼多的讚揚.這本新的,10 周年紀念版本,包括關於 MS-DOS 6.2 最新版本的重要的信息.如果您僅僅只是買了一台 PC 機,或者只是升級到了一個新版本」Running MS-DOS"應當成為您的第一個信息源."Running MS-DOS"實際上是由3本書合成的,包括:MS-DOS 介紹,以及如何同您的計算機硬體相協調;一個關於了解和使用 MS-DOS 的完整制導;一個命令手冊,裡面有定義,例子和表格,幫您快速尋找信息!31.Advanced Programming in the UNIX Environment Author: Richard W.Stevens, Stephen A.RagoBook Info: 與大多數其他操作系統類似,Unix對運行其上的程序提供了大量服務,此外,本書與其他Unix編程書籍不同的是,本書除了講述Unix系統的編程介面----即系統調用介面和由標準C函數庫提供的大量函數之外,還通過許多例子和基本原理對Unix編程環境做了更深入的解釋和剖析,如怎樣創建資料庫,頁面描述語言的印表機驅動程序,現代撥號程序以及代理進程,處理機間通信,偽終端程序等.本書作者是Unix研究領域的專家,而本書更被譽為是該領域的聖經寶典,相信每一位讀者都會在學習本書的過程中體會到它的價值所在.32.Unix Network ProgrammingUnix Network Programming, Volume.1: The Sockets Networking API, Third EditionAuthor: W.Richard Stevens, Bill Fenner, Andrew M.Rudoff, Richard W.StevensBook Info: 這是一本利用應用編程介面(API)編寫法對計算機網路進行通信的網路編程的教程.所用的API有兩類: 基於BerkeleyUNIX操作系統的"Berkeley"套接字和基於AT&T開發的X Open傳輸介面XTI.本書分四大部分:Ⅰ.引論和TCP/IP;Ⅱ.基本套接字(Sockets);Ⅲ.高級套接字;Ⅳ.XTI X/Open傳輸介面.四個附錄: A.IPv4,IPv6,ICMPv4和ICMPv6;B.虛擬網路;C.調試技術;D.一些關鍵源代碼.全書內容全面,實用性強,是一本極好的參考書.UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition)Author: W.Richard StevensBook Info: 一種良好的進程間通信(IPC)形式是複雜精緻的UNIX程序性能之關鍵.本書全面深入地介紹了各種進程間通信形式,包括消息傳遞,同步,共享內存及遠程調用(RPC).作者從介紹IPC的基礎及其所要解決的問題開始,逐步引導讀者學習如何使System V IPC和新的Posix標準兩者都達到極至.書中Pthread的內容有較大的擴充,所附的許多例子反映多個線程而不是多個進程.讀者通過本書將能掌握各種現行的IPC技術,其中有:管道和FIFO;Posix和System V消息隊列;互斥鎖和條件變數;讀寫鎖;記錄上鎖;Posix和System V信號燈;Posix和System V共享內存;Solaris門和Sun RPC;IPC技術的性能測量.本書內容詳盡且具有權威性,幾乎每章都有精選的習題,是計算機和網路專業高年級本科生和研究生的首選教材,本書也可作為網路研究和開發人員的自學教材和參考書.33.TCP/IP IllustratedTCP/IP Illustrated,Volume 1:The ProtocolsAuthor: W.Richard StevensBook Info: <<TCP/IP詳解,卷1:協議>>是一本完整而詳細的TCP/IP協議指南.描述了屬於每一層的各個協議以及它們如何在不同操作系統中運行.作者用Lawrence Berkeley實驗室的tcpdump程序來捕獲不同操作系統和TCP/IP實現之間傳輸的不同分組.對tcpdump輸出的研究可以幫助理解不同協議如何工作.本書適合作為計算機專業學生學習網路的教材和教師參考書.也適用於研究網路的技術人員.TCP/IP Illustrated,Volume 2:The ImplementationAuthor: Gary R.Wright, W.Richard StevensBook Info: 本書完整而詳細地介紹了TCP/IP協議是如何實現的.書中給出了約500個圖例,15,000行實際操作的C代碼,採用舉例教學的方法幫助你掌握TCP/IP實現.本書不僅說明了插口API和協議族的關係以及主機實現與路由器實現的差別.還介紹了4.4BSD-Lite版的新的特點,如多播,長肥管道支持,窗口縮放,時間戳選項以及其他主題等等.讀者閱讀本書時,應當具備卷1中闡述的關於TCP/IP的基本知識.本書適用於希望理解TCP/TP協議如何實現的人,包括編寫網路應用程序的程序員以及利用TCP/IP維護計算機網路的系統管理員.TCP/IP Illstrated,Volume 3:TCP for Transactions,HTTP,NNTP,and the UNIX DomainProtocolsAuthor: W.Richard StevensBook Info: 本書是<<TCP/IP詳解系列>>的延續.主要內容包括:TCP事務協議,即T/TCP,這是對TCP的擴展,使客戶-伺服器事務更快,更高效和更可靠;TCP/IP應用,主要是HTTP和NNTP;UNIX域協議,這些協議提供了進程之間通信的一種手段.當客戶與伺服器進程在同一台主機上時,UNIX域協議通常要比TCP/IP快一倍.本書同樣採用了大量的實例和實現細節,並參考引用了卷2中的大量源程序.本書適用於希望理解TCP/IP如何工作的人,包括編寫網路應用程序的程序員以及利用TCP/IP維護計算機網路的系統管理員.作者簡介:Gary R.Wright 研究TCP/IP多年.他是Connix公司的董事長,這個公司的基地在康涅狄格州,它提供Internet接入和諮詢務.W.Richard Stevens(1951-1999)是一位非常受人尊敬的專家,除了"TCP/IP詳解"三卷本外,他還有其他兩部最為暢銷的作品;"UNIX環境高級編程"和"UNIX網路編程"(兩卷本).34.Routing TCP/IPAuthor: Jeff DoyleBook Info: 本書是第一本詳細而又完整地介紹互聯網路內部網關路由選擇協議(IGRP)的專業書籍,堪稱有關IGRP方面不可多得的經典之作.本書共分三個部分.第一部分主要介紹了網路和路由選擇的基本知識,對TCP/IP和靜態,動態路由選擇技術作了一個整體的回顧.第二部分是本書的精華,這一部分詳細深入地講述了各種常用的內部網關路由選擇協議,如靜態路由,RIP,RIPv2,IGRP,EIGRP,OSPF,ISIS等,每一章除了對該協議的實現機制和參數詳盡闡述,使讀者對協議的實現原理有一個清晰的理解外,還通過在實際網路環境中的實例,詳細地論述了該協議在Cisco路由器上的配置和故障處理方法,使讀者獲取大量解決實際問題的專業技能.第三部分介紹了如預設路由,路由過濾等多種有效的路由控制工具,用來創建和管理多個IP路由選擇協議的協調工作.本書不僅適合那些需要準備通過CCIE考試的考生,而且也適合任何需要完整理解TCP/IP內部路由選擇協議的網路設計和工程人員閱讀.本書中對協議細節的講解和對網路實例的探討相信會讓讀者獲益匪淺.CCIE Professional Development Routing TCP/IP Volume 2Author: Jeff Doyle, Jennifer DeHaven CarrollBook Info: 本書深入系統地闡述了TCP/IP路由技術,內容包括幾種重要的網路協議,如外部網關協議(EGP),邊界網關協議(BGP4),以及相應的高級IP路由技術與應用――網路地址轉換,IP組播路由技術,IPv6技術,路由器管理等.本書共分9個章節,首先介紹並討論了主題內容的基本原理,接著是設計用來展示真實網路環境中相關概念的一系列配置範例,最後提供給讀者經實踐驗證過的故障排除方法以解決網路可能會出現的問題.重點介紹了自治系統之間的路由選擇策略以及諸如組播和IPv6等更具挑戰性的路由選擇和實施技術.35.Data and Computer Communications,Seventh EditionAuthor: William StallingsBook Info: 本書是著名計算機專業作家 William Stallings 的經典著作之一,內容涉及最基本的數據通信原理,各種類型的計算機網路及多種網路協議和應用.這一版對原有內容做了徹底的修訂和重組,使新版對通信各專題的闡述更全面,更清晰.同時,新版加強了無線通信和組網,吉比特乙太網,區分服務,MPLS和TCP/IP實現細節等內容.此外,本書還包括辭彙表,參考文獻,縮寫詞對照表.每章都附有習題和建議,以便讀者進一步閱讀.36.Programming Pearls, 2nd EditionAuthor: Jon BentleyBook Info: 如果讓程序員們列出他們最喜歡的書籍,Jon Bentley的「編程珠璣」通常可以位於經典之列.如同珍珠來自於曾經折磨牡蠣的沙粒,程序設計的珍珠也來自曾經折磨程序員的實際問題.Bentley的珍珠建立在堅實的工程學基礎上,在洞察力和創造力的王國中為那些惱人的問題提供了獨特而巧妙的解決方案.通過一些精心設計的有趣而且頗具指導意義的程序,本書對眾多實用程序設計技巧及基本設計原則作了清晰而機智的描述.因此,」編程珠璣」得到各個層次程序員的青睞並不讓人感覺意外.為了反映當今的程序設計方法和環境,Bentley在本書中徹底更新了第一版里的大多數素材.此外,他還新增加了以下三個方面的內容:1.測試,調試和計時 2.集合表示 3.字元中問題對原來的所有程序都重新進行了改寫,並生成了等量的新代碼.您可以從本書網站(www.programmingpearls.com)獲取所有程序的C或C++實現.Book Reviews:"編程珠璣"第一版是我職業生涯早期閱讀過的最有影響力的書籍之一,第一次從該書中學到的許多觀點很久以後仍然使我受益匪淺.Jon在第二版中對素材進行了大量更新,這些新例子的新鮮程度給我留下了深刻的印象.                            ----Steve McConnell "Code Complete"等多部暢銷書作者37.The Mythical Man-Month: Essays on Software Engineering, 20th Anniversary EditionAuthor: Frederick P, Brooks,Jr.Book Info: IBM大型電腦之父 Fred Brooks 二十餘年開發經驗的彙集,遠謀深慮,字字珠璣.技術之巧與人文之美的完美結合.本書自第一版以來,暢銷二十餘年不衰,是軟體領域絕無僅有的必讀經典.作者簡介:Frederick P 曾榮獲美國計算機領域最具聲望的圖靈獎(A.M.Turing Award)桂冠.美國計算機協會(ACM)稱讚他"對計算機體系結構,操作系統和軟體工程做出了里程碑式的貢獻."Brooks 博士是北卡羅萊納大學 Kenan-Flagler 商學院的計算機科學教授.他被認為是"IBM 360系統之父",曾擔任了360系統的項目經理,以及360操作系統項目設計階段的經理.憑藉在上述項目中的傑出貢獻,Brooks博士以及Bob Evans和Erich Bloch在1985年榮獲了美國國家技術獎(National Medal of Technology).Brooks博士早期曾擔任IBM 公司Stretch和Harvest計算機的體系結構設計師.<br />  Brooks 博士創立了北卡羅萊納大學的計算機科學系,並在1964~1984年期間擔任系主任.他還曾任職於美國國家科技局和國防科學技術委員會.他目前的教學和研究方向是計算機體系結構,分子模型繪圖和虛擬環境設計.38.The Pragmatic ProgrammerAuthor: Andrew Hunt,David ThomasBook Info: 本書直擊編程陣地,穿過了日益增長的現代軟體開發的規範和學術,對核心過程進行了審視----該過程採取了供需結合的工作方式和令人欣喜的可維護代碼.本書包含的內容從個人責任和職業發展到保持代碼的靈活性,使之易於改編和重用.本書由各個相對獨立的章節組成,其間不乏好玩的軼事,詳細的實例和有趣的對話,描述了軟體開發各個方面的最好實踐和主要缺陷.無論你是一個新入門的編碼者,一個有經驗的程序員,還是負責軟體項目的經理,通過每日學習這些課程,都會在個人生產力,準確率和工作滿意度上有快速的增長.你所學到的技巧和開發習慣和態度將為你在職業生涯中取得長期成功奠定基礎.你將成為又一Pragmatic Programmer.39.The Art of UNIX programmingAuthor: Eric S. RaymondBook Info: 榮獲美國Software Development Productivity Award大獎作品!本書是作者封筆30年後歷時5年創作而成,是一部難得的軟體工程方面的佳作.作者首次將哲學,設計模式,工具,文化和傳統結合在一起,使得UNIX成為世界上最好且最具創新意義的軟體,並展示了如何將其拓展到Linux和當今的開源(open-source)運動中:通過取自最主要的開源項目中的示例,作者向UNIX和Linux編程人員展示了如何更巧妙地創建軟體,使其更雅緻,更靈巧,更具可重用性且具有更長的生命期本書主要介紹了Unix系統領域中的設計和開發哲學,思想文化體系,原則與經驗,由公認的Unix編程大師,開源運動領袖人物之一Eric S.Raymond傾力多年寫作而成.包括Unix設計者在內的多位領域專家也為本書貢獻了寶貴的內容.本書內容涉及社群文化,軟體開發設計與實現,覆蓋面廣,內容深邃,完全展現了作者極其深厚的經驗積累和領域智慧.40.Peopleware roductive Projects and TeamsAuthor: Tom DeMarco, Timothy ListerBook Info: Tom Demarco 和Tim Lister 的"Peopleware productive Projects and Teams"第一版於1987 年出版,專門討論了軟體開發和維護的團隊管理問題,向傳統的管理方法提出了挑戰,推崇人本管理思想,給予軟體工人自由和信任.和"人月神話"一樣,該書現在已經成為軟體團隊管理的經典之作.1995 年,Larry Constantine 出版了一部題為"Constantine 論人件"的論文集,擴大了"人件"概念,把那些使用軟體的人也包括進來.1999 年2 月,"人件"第二版出版,增補了8 章新內容.這些增補的內容視角更加寬廣,對比較大型的組織中的團隊如何運作進行了探索.41.Computer graphics C Version 2nd edAuthor: Donald Heam, M.Pauline BakerBook Info: 這是計算機圖形學領域的一部經典之作,作者Foley,van Dam等是國際圖形學界的著名學者,學術帶頭人,而且本書英文版自出版以來,一直是各國大學計算機圖形學課程的主要教科書.本書是高等院校計算機專業本科生,研究生計算機圖形學課程的理想教材,是相關領域專業人員開展研究工作的優秀參考書.42.Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and RasterizationAuthor: Andre LaMotheBook Info: 本書是著名遊戲程序設計類書籍作者Andre LaMothe的暢銷書.在書中隨處可見許多有趣但又有一定難度的源程序.作者循循善誘地從程序設計的角度介紹了在Windows環境下進行遊戲開發所需的全部知識,包括Win32編程以及DirectX中所有主要組件(包括DirectDraw,DirectSound,DirectInput和DirectMusic).書中還用單獨的章節詳細講授了2D圖形學和光柵化技術,遊戲演算法,多線程編程,文本遊戲和解析,人工智慧(包括模糊邏輯,神經網路和遺傳演算法),物理建模(完全碰撞反應,動量傳遞和正反向運動學)及實時模擬等遊戲程序開發中的關鍵技術.43.Compilers Principles, Techniques, and ToolsAuthor: Alfred V. Aho, Ravi Seth, Jeffrey D. UllmanBook Info: 本書另外一個響亮的名字就是龍書.原因是這本書的封面上有條紅色的龍.裡面講解的核心編譯原理至今都沒有變過,所以一直到今天,它的價值都非凡.這本書最大的特點就是一開始就通過一個實際的小例子,把編譯原理的大致內容羅列出來,讓很多編譯原理的初學者很快心裡有了個底,也知道為什麼會有這些理論,怎麼運用這些理論.而這一點是我感覺國內的教材缺乏的東西,所以國內的教材都不是寫給願意自學的讀者,總之讓人看了半天,卻不知道裡面的東西有什麼用.44.Computer Systems A Programmer"s PerspectiveAuthor: Randal E. Bryant, David R. O"HallaronBook Info: AMAZON五星圖書,最偉大計算機科學教材之一卡耐基梅隆大學計算機學院院長,IEEE和ACM雙院士傾力推出超過80所美國和世界一流大學計算機專業選用本書為教材書英文版久負盛名,被眾多專業人士稱為"最偉大的計算機教材"之一,著名的美國卡內基梅隆大學計算機科學系一直將本書作為教材使用,程序員眼中的透徹講述計算機系統的扛鼎之作.作者Randal E. Bryant是卡耐基梅隆大學的計算機科學系主任,ACM和IEEE雙院士(Fellow),其研究成果多次獲得ACM和IEEE頒發的大獎.本書共分十三章,分別介紹了信息的表示和處理,程序的機器級表示,處理器體系結構,存儲器層次結構,靜態和動態鏈接,虛擬存儲器,系統級I/O,網路編程和並發編程等精彩內容.其目的是解釋計算機系統的所有本質概念,並向讀者展示這些概念是如何實際地影響應用程序的正確性,性能和實用性.與其他主要針對系統構造人員的系統類書籍不同,這本書是寫給程序員的,是從程序員的角度來描述的.本書為軟體和硬體之間搭起了一個橋樑,它給出了一種幫助讀者分別從硬體和軟體的角度去理解一個程序及其行為的途徑,這也填補了國內計算機系統教學中的一個空白.本書的最大優點是幫助讀者理解概念,讓讀者很清楚地在腦海中構造一個層次型的計算機系統,從最低層數據在內存中的表示到流水線指令的構成,到虛擬存儲器,到編譯系統,到動態載入庫,到最後的用戶應用.本書提供了大量的例子和練習及部分答案.尤其值得一提的是,對於每一個基本概念都有相應的筆頭或程序試驗,加深讀者的理解.Book Reviews: 我堅信從程序員的角度來看計算機系統對教會學生計算機的內部結構非常有幫助.                            ----Kostas Daniilidis,賓夕法尼亞大學 這本書講述事物的方法與眾不同,但是和我想要的課程進行方式類似. ----John Greiner,Rice大學 這是一項出色的工作,是這一領域教學方法的一次革命.        ----Michael Scott,羅切斯特大學
推薦閱讀:

李隼:「反偽科學」表述無傷《科學進步法》
公民科學素養低與媒體的缺位
月子里怎麼吃更科學
13種蔬果科學美膚抗衰老的做法,13種蔬果科學美膚抗衰老怎麼做
炸了!血型也分貴賤?科學家認準最強血型是……

TAG:科學 | 計算機 | 計算機科學 | 經典 | 博客 | 計算 | .NET | 著作 | CSDN | 專業 | 專欄 |