【正文】
開發(fā)實際應(yīng)用的C++程序員通常工作于特定操作系統(tǒng)、特定開發(fā)環(huán)境和特定業(yè)務(wù)領(lǐng)域之中,而對標(biāo)準(zhǔn)C++和C++標(biāo)準(zhǔn)庫扎實而深刻的把握,無疑是你得以在不同的操作系統(tǒng)、不同的開發(fā)環(huán)境以及不同的業(yè)務(wù)領(lǐng)域之間縱橫馳騁的“抽象”本錢。你可以根據(jù)業(yè)務(wù)開發(fā)需要,選讀自己喜愛的領(lǐng)域相關(guān)的C++書籍。 Bjarne還友好地提醒我,在我的推薦列表中沒有哪一本有助于C++程序員進(jìn)行Windows編程 — 這正是我的本意。在肯定以上列出的絕大部分圖書都是世界頂尖水平的C++著作的同時,Bjarne提醒我別忘了向?qū)<壹壋绦騿T推薦《The C++ Standard : Incorporating Technical Corrigendum No. 1》。 在本文成文的后期,我給Bjarne寫了一封信,請教如果他來寫這篇文章會怎么寫。今天,我不會再對一本看上去差強(qiáng)人意的圖書信口開河。這個“看”,一般指“認(rèn)真閱讀”,不過有一些也只能算是“瀏覽”。 * 我不會推薦我從來沒有看過的書。我們是在看書,不是看人。 至此,我想有必要聲明一下,有一些(好)書沒有得到推薦,主要原因如下: 使用C++成功開發(fā)大規(guī)模軟件系統(tǒng),不僅需要很好地理解大多數(shù)C++書籍中講述的邏輯設(shè)計問題,更需要掌握《大規(guī)模C++程序設(shè)計》中講述的物理設(shè)計技術(shù)。 2004年3月31日補充:我目前最常查閱的兩本參考書是《C++標(biāo)準(zhǔn)程序庫》和《STL源碼剖析》。我個人期待侯捷先生自第一版發(fā)行以來經(jīng)過對模板技術(shù)的沉淀和再思考之后,再寫一本剖析得更深入、更透徹并且更全面的“第二版”。例如John Lakos的著作《LargeScale C++ Software Design》(《大規(guī)模C++程序設(shè)計》,中國電力出版社)和侯捷先生的《STL 源碼剖析》(華中科技大學(xué)出版社)等。順帶一句:請將設(shè)計模式化作開拓思維的鑰匙,切莫成為封閉思維的枷鎖。本書學(xué)院氣息濃厚,行文風(fēng)格嚴(yán)謹(jǐn)簡潔,雖然它不如某些講解模式的書籍易讀,但真正要精準(zhǔn)地理解設(shè)計模式,本書是終極權(quán)威。四位作者都是國際公認(rèn)的面向?qū)ο筌浖I(lǐng)域?qū)<?,他們將面向?qū)ο筌浖脑O(shè)計經(jīng)驗作為設(shè)計模式詳細(xì)記錄下來。 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable ObjectOriented software 《設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》,機(jī)械工業(yè)出版社 《設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)(英文版)》,機(jī)械工業(yè)出版社 設(shè)計可復(fù)用的面向?qū)ο蟮能浖?,你需要掌握設(shè)計模式。本書探討了大量的C++面向?qū)ο蟪绦蛟O(shè)計的底層運作機(jī)制,包括構(gòu)造函數(shù)、函數(shù)、臨時對象、繼承、虛擬、模板的實例化、異常處理、運行期類型識別等,另外還介紹了一些在實現(xiàn)C++對象模型過程中做出的權(quán)衡折衷。Bjarne這樣評價這本書:本書遍布“C++是什么、C++能夠做什么”的真知灼見。如果你已經(jīng)具有一定的基礎(chǔ),這本書將教你在進(jìn)行C++編程時應(yīng)該怎樣思考,應(yīng)該如何表達(dá)解決方案。 Andrew Koenig, Barbara E. Moo, Ruminations on C++: A Decade of Programming Insight and Experience 《C++沉思錄》,人民郵電出版社 Andrew是世界上屈指可數(shù)的C++專家。事實上,在同類圖書中,對于大多數(shù)讀者而言,這本書的可讀性要超過TCPL和《C++ Primer》。“輸入輸入流”、“多重繼承”、“異常處理”和“運行時類型識別”等高級主題連同C++標(biāo)準(zhǔn)化以后增加的一些內(nèi)容則被放入第二卷中。 Bruce Eckel, Thinking in C++, Volume 1: Introduction to Standard C++ (2nd Edition) Bruce Eckel, Thinking in C++, Volume 2: Practical Programming (Second Edition) 《C++編程思想(第2版)第1卷:標(biāo)準(zhǔn)C++導(dǎo)引》,機(jī)械工業(yè)出版社 《C++編程思想(英文版 第2版)》,機(jī)械工業(yè)出版社 《Thinking in C++》的第1版于1996年榮獲“軟件研發(fā)”雜志評選的圖書震撼大獎。 是的,并非所有網(wǎng)絡(luò)應(yīng)用都要使用Web服務(wù)器(以及其他應(yīng)用服務(wù)器)和重量級組件模型,換個思路,它們或許也可以從輕量級的ACE組件中獲益?!禖++網(wǎng)絡(luò)編程》卷1和卷2并不僅僅教你關(guān)于ACE的方方面面,它還會教給你模式和通用框架設(shè)計等高級技術(shù)等。如果你準(zhǔn)備開發(fā)高性能通訊系統(tǒng),你應(yīng)該考慮考慮這一匯集世界頂尖專家智慧的成果。 ACE并不單單被大學(xué)和研究所追捧,它已經(jīng)被成功地應(yīng)用于世界上成千上萬個商業(yè)應(yīng)用中。ACE是一個面向?qū)ο?、跨平臺、開放源碼的網(wǎng)絡(luò)編程框架,目標(biāo)在于構(gòu)建高性能網(wǎng)絡(luò)應(yīng)用和中間件。Andrew Koenig和Barbara Moo在《Accelerated C++: Practical Programming by Example》一書末尾鄭重推薦另外兩本進(jìn)階好書(除了他們自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本書! 網(wǎng)絡(luò)編程 在網(wǎng)絡(luò)編程時代,C++應(yīng)該扮演著怎樣的角色,讓ACE(Adaptive Communications Environment)來告訴你??催^這本書以后,我想你也許會和我以及其他C++程序員一樣產(chǎn)生這樣的想法:Scott什么時候會寫出一本“More Effective STL”? 關(guān)于STL,我還提醒你留心Matthew H. Austern的《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》(《泛型編程與STL》,中國電力出版社)。在這本書中,Scott向我們講述STL容器和算法的工作機(jī)制以及如何以最佳方式使用它們。幸運的是,我們可以看到它的原版。 Scott Meyers, Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library 《Effec