TCPL和D&E分別是《The C++ PRogramming Language》和《The Design and Evolution of C++》的簡稱,均出自Bjarne Stroustrup之手。我將它們單列出來,首先是因為Bjarne是C++語言的創建者,然后是因為比“首先”那個原因更重要的原因:這兩本書是C++領域毋庸置疑的杰作。說它們是C++語言圣經,并不為過。
Bjarne Stroustrup, The C++ Programming Language (Special 3rd Edition)
盡管這本書省略了一些高級C++特性的討論,但仍然可以稱得上是迄今為止最全面的C++學習教程。事實上,假如一名C++初學者能夠扎扎實實地讀完本書并對照《C++ Primer Answer Book》完成全部習題的話,他的水平肯定可以進入職業C++程序員的行列。我個人認為,即使你已經擁有了TCPL,這本書依然有擁有的價值,因為在許多方面它比TCPL來得更具體、更易懂。
以上三本書都不是為了完完全全的編程新手而寫。完全的C++編程新手可以閱讀Francis Glassborow的新書(尚未出版):《A Beginners IntrodUCtion to Computer Programming : You Can Do It!》。這也是Bjarne的推薦。Francis Glassborow是ACCU主席,多年來他對幾乎每一本C++經典名著評頭論足,他自己的這一本自然會引起C++社群的極大愛好。
高效、健壯編程
兩年前我在負責一個省級電力調度系統項目時編寫了一個網關程序,它從SCADA系統獲取電力實時信息。通訊接口采用了不常用的數據庫直連方式(這個網關程序一端連接SQL Server 6.5,另一端連接Oralce 8.1.6)。由于實時測點近萬,每次將全部取樣更新或插入一遍顯然是低效的。我在網關程序里建了一個內存庫,獲取到的數據首先在其中進行比較,然后決定是否更新物理數據庫(同時還做了別的更復雜的事情……),從而在效率和資源占用兩方面達到了預期效果。
David Vandevoorde, Nicolai M. Josuttis, C++ Templates: The Complete Guide
《C++ Templates全覽(繁體版)》,臺灣碁峰資訊股份有限公司
《C++ Templates全覽(簡體版)》,人民郵電出版社
有一種老套的贊美一本書的手法,大致是“沒有看過這本書,你就怎么怎么地”,這里面往往夸張的成分居多。不過,倘若說“沒有看過《C++ Templates: The Complete Guide》,你就不可能精通C++模板編程”,那么這個論斷對于世界上絕大多數C++程序員來說是成立的。
這本書填補了C++模板書籍領域由來已久的空白。此前,上有《Modern C++ Design》這樣的專注于模板高級編程技術和泛型模式的著作,下有《The C++ Standard Library》這樣的針對特定模板框架和組件的使用指南。然而,假如對模板機制缺乏深入的理解,你就很難“上下”自如。鑒于此,我向每一位渴望透徹理解C++模板技術的朋友推薦這本書。