五本最重要的C++圖書

最重要的五本C++圖書:

《The C++ Programming Language》,作者Bjarne Stroustrup,Addison-Wesley出版社。1986年首版,1991年再版,1997年第三版,2000年特別版。對於C++老人們來說,此書的首版是打開知識大門的鑰匙。目前的版本已經膨脹到千頁以上,增加了很多那時候還不存在的特性,如模板、異常、多繼承等,不過未提及標準模板庫;顯然首版——也是我逐頁閱讀過的唯一版本——更易馴服,只有328頁。身處80年代後半頁的C++程序員,對這本書的完全旅行是必不可少的,它對早期的C++從業者和追夢人的重要影響,怎麼評價都不過分。即使介紹C++的圖書滿天飛的現在,我仍然推薦專業開發人員閱讀這本書(當前版本),因爲我認爲無論就C++本身,還是如何用好C++來說,它都是最全面的參考書。

Stroustrup因爲吝於詞句的寫作風格而遭詬病,大家都知道我說過,如果閱讀TC++PL(譯者注:即The C++ Programming Language的簡稱。此書行文簡潔)時,你無意忽略了哪怕一個句子,就有可能丟掉了很重要的東西(再想想目前版本千頁以上的篇幅,你就能明白我爲什麼說它是最全面的參考書了)。然而,精煉恰是這本書無與倫比的魅力之一。比如,首版中對自賦值處理方法的說明,就再好不過證明了這一點:

if (this == &a) return;            // beware of s=s;

《Effective C++》,作者Scott Meyers,Addison-Wesley出版社。1992年首版,1998年再版,2005年第三版。
1991年前後,大部分程序員已經掌握了語言基礎,能做到根據需求編寫C++程序,但同時總覺得自己無法避免看似可以避免的諸多問題。這是業界第一本專注於如何深入使用C++,全力幫助開發者解決常見問題,最好地使用非C特性(如構造器、析構器、繼承、虛函數和類內存分配器等)的圖書。這本書裏不像當時大多數人將重點放在討論C++的靈活性上,採用了一種很特別的指導式思路來寫作。這本書做到了。“一定要這麼做”,“千萬不要那樣幹”。一代程序員將這些原則熟記於心,也催生了不少協助性工具。比如Gnu C++編譯器,甚至設置了《Effective C++》指導原則的檢測警告選項。

《Design Patterns》,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides。Addison-Wesley出版社,1995年。它本身不是一本針對C++的書,但它對使用C++以及其他任何面向對象編程語言進行良好設計都產生了深遠影響。此書在專業軟件開發人員中發起了模式啓蒙運動,而且提出了一系列至今仍居常用模式詞彙表核心地位的設計模式。如果你熟悉命令(Command)、訪問者(Visitor)、裝飾(Decorator)或單例(單態,Singleton)等模式——甚至已經深入掌握了設計模式,那麼基本上可以肯定你讀過這本書,我們應該感謝它。
此書中提到的模式,至今仍是C++技術界的熱門話題。例如Herb Sutter於2003年9月,在其C/C++ Users Journal專欄提出了觀察者(Observer)模式新的實現方法,Andrei Alexandrescu也分別於2005年4月和6月,在其C/C++ Users Journal專欄對這個模式做過討論。

《International Standard for C++》,ISO/IEC。1998年首版,2003年第二版。標準類資料讀起來枯燥乏味,但必須有這樣的東西去定義什麼是C++,什麼不是C++,這本書就擔此重任。在這以前,若想知道C++的正確實現,最好要讀Margaret Ellis和Bjarne Stroustrup合著的《The Annotated C++ Reference Manual》(即著名的ARM,Addison-Wesley1990年版),並用不同的編譯器檢查代碼,得想方設法理解Bjarne Stroustrup的意思(如通過讀他的書)。1998年版的C++標準不能回答所有問題(任何資料都做不到),比如,vector的內存佈局必須與C數組兼容嗎?但它仍不失爲一本C++權威參考書,無論是爲編程實現還是語言使用者,都在標準化上做出了巨大努力。2003年出的第二版,實際上是一個Bug修復更新版,更像是1.1而不是2.0版本,但它也是一個語言官方規範修訂本。

《Modern C++ Design》,作者Andrei Alexandrescu。Addison-Wesley2001年版。設計模板的初衷是實現類型的容器(“containers of T”),但它能做的遠不僅僅這點。實際上,在Alexandrescu的書出現之前,1998版C++標準的STL部分要求的模板實現就遠遠超出“類型的容器”。但《Modern C++ Design》的出現,才真正爲C++技術界打破了模板的牢籠。此書影響深遠,堪稱新舊兩代C++程序設計的分水嶺;此後,“modern C++”一般都被用來專指採用了因此書而普及的模板技術的代碼。

節選自:http://blog.csdn.net/lxpbuaa/archive/2006/11/09/1375988.aspx

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章