C++是一門廣泛用于工業(yè)軟件研發(fā)的大型語言。它自身的復雜性和解決現(xiàn)實問題的能力,使其極具學術研究價值和工業(yè)價值。和C語言一樣,C++已經(jīng)在許多重要的領域大獲成功。
然而,一個不可否認的現(xiàn)實是,在低階程序設計領域,C++擠壓著C同時也在承受著C的強烈反彈,而在高階程序設計領域,Java和C#正在不斷蠶食著C++的地盤。也許C++與C合為一體永遠都是一
個夢想,也許Java和C#的狂潮終將迫使C++回歸本位 — 回到它有著根本性優(yōu)勢的開發(fā)領域:低級系統(tǒng)程序設計、高級大規(guī)模高性能應用設計、嵌入式程序設計以及數(shù)值科學計算等。果真如此,我認為這未嘗不是一件好事。
C++吸引如此之多的智力投入,以至于這個領域的優(yōu)秀作品,包括重量級的軟件產(chǎn)品、程序庫以及書籍等,數(shù)不勝數(shù)。文題“C++程序設計之四書五經(jīng)”一個不太嚴格的含義是:C++程序設計之四書 五經(jīng)。是的,在本文(及其下篇)中,我將分門別類推薦20多本C++好書,你可以根據(jù)自己的需要選讀。
TCPL和D&E
TCPL和D&E分別是《The C++ Programming Language》和《The Design and Evolution of C++》的簡稱,均出自Bjarne Stroustrup之手。我將它們單列出來,首先是因為Bjarne是C++語言的創(chuàng)建者,然后是因為比“首先”那個原因更重要的原因:這兩本書是C++領域毋庸置疑的杰作。說它們是C++語言圣經(jīng),并不為過。
Bjarne Stroustrup, The C++ Programming Language (Special 3rd Edition)
《C++程序設計語言(特別版)》,機械工業(yè)出版社
《C++程序設計語言(特別版)(英文影印版)》,高等教育出版社
迄今為止,TCPL是除了C++標準文獻之外權威的C++參考手冊。和大多數(shù)人的看法不大一樣,我認為Bjarne的文字語言并不遜色于他所創(chuàng)建的程序語言,至少我喜歡這種學院氣息濃厚的作品。本書對C++語言的描述輪廓鮮明、直截了當。它從C++語言創(chuàng)建者的角度來觀察C++,這是任何別的作者和書籍做不到的 — 沒有任何人比Bjarne自己更清楚該怎么來使用C++。
這是一本嚴肅的著作,以中、高級C++開發(fā)人員為目標讀者。如果你是一名有經(jīng)驗的C++程序員,需要了解更加本質(zhì)的C++知識,本書正是為你而寫。它不是那種讓你看了會不斷竊喜的小書,需要用心體會,反復咀嚼。在閱讀過程中,請?zhí)貏e留心Bjarne先生強調(diào)了什么,又對什么一語帶過。我個人比較喜歡這本書的第四部分“使用C++做設計”,這樣的內(nèi)容在類似的程序設計語言書籍中很難看到 — 我甚至認為Bjarne應該將這部分獨立出來單獨寫一本書。
Bjarne Stroustrup, The Design and Evolution of C++
《C++語言的設計和演化》,機械工業(yè)出版社
《C++語言的設計和演化(英文版)》,機械工業(yè)出版社
D&E是一本關于C++語言設計原理、設計決策和設計哲學的專著。它清晰地回答了C++為什么會成為今天這個樣子而沒有變成另外一種語言。作為C++語言的創(chuàng)建者,Bjarne淋漓盡致地展示了他獨到而深刻的見解。除了廣受贊譽的語言特性外,Bjarne沒有回避那些引起爭議的甚至被拒絕的C++特性,他一一給出了邏輯嚴密、令人信服的解釋。內(nèi)容涵蓋C++的史前時代、帶類的C、C++的設計規(guī)則、標準化、庫、內(nèi)存管理、多重繼承、模板等,對包括異常機制、運行時類型信息和名字空間在內(nèi)的重要的新特性都分別進行了深入探討。每一名C++程序員都應該可以從Bjarne的闡釋中加深對手中這門語言的認識。
需要再次提醒的是,這兩本書知識濃縮,信息量極大,請不要錯過Bjarne每一句看似漫不經(jīng)意的話。
入門教程
學習任何一門語言都需要一個從入門到精通、從新手到高手循序漸進的過程。不過,對于一個所謂的新手而言,究竟是一個完完全全的新手,還是一個熟悉某種別的語言的“新手”,甚至是在某種語言程序設計領域已經(jīng)頗有建樹的高手,很 難一概而論?不同的C++新手需要不同的入門書籍。
Andrew Koenig, Barbara E. Moo, Accelerated C++: Practical Programming by Example
《Accelerated C++中文版》,中國電力出版社
和市面上大多數(shù)C++教程不同,本書不是從“C++中的C”開始講解,而是始于地道的C++特性。從一開始就使用標準庫來寫程序,隨著講述的逐漸深入,又一一解釋這些標準庫組件所依賴的基礎概念。另外,和其他C++教材不同的是,這本書以實例拉動語言和標準庫的講解,對后兩者的講解是為了給實例程序提供支持,而不是像絕大多數(shù)C++教材那樣,例子只是用作演示語言特性和標準庫用法的輔助工具。
作者在C++領域的編程實踐、教育培訓以及技術寫作方面都是世界一流水準。我喜歡這種大量使用標準庫和C++語言原生特性的清新的寫作風格。在這本教材面前,幾乎迄今為止的所有C++教材都黯然失色或顯得過時。盡管這本教材也許對于國內(nèi)的高校教育來說有些前衛(wèi),不過我仍然極力向我的同行們推薦。順帶一提,在Bjarne和我近的一封通信里,他這樣評價本書:對于有經(jīng)驗的程序員學習C++而言,這本書可能是世界上好的一本。
然而,一個不可否認的現(xiàn)實是,在低階程序設計領域,C++擠壓著C同時也在承受著C的強烈反彈,而在高階程序設計領域,Java和C#正在不斷蠶食著C++的地盤。也許C++與C合為一體永遠都是一
個夢想,也許Java和C#的狂潮終將迫使C++回歸本位 — 回到它有著根本性優(yōu)勢的開發(fā)領域:低級系統(tǒng)程序設計、高級大規(guī)模高性能應用設計、嵌入式程序設計以及數(shù)值科學計算等。果真如此,我認為這未嘗不是一件好事。
C++吸引如此之多的智力投入,以至于這個領域的優(yōu)秀作品,包括重量級的軟件產(chǎn)品、程序庫以及書籍等,數(shù)不勝數(shù)。文題“C++程序設計之四書五經(jīng)”一個不太嚴格的含義是:C++程序設計之四書 五經(jīng)。是的,在本文(及其下篇)中,我將分門別類推薦20多本C++好書,你可以根據(jù)自己的需要選讀。
TCPL和D&E
TCPL和D&E分別是《The C++ Programming Language》和《The Design and Evolution of C++》的簡稱,均出自Bjarne Stroustrup之手。我將它們單列出來,首先是因為Bjarne是C++語言的創(chuàng)建者,然后是因為比“首先”那個原因更重要的原因:這兩本書是C++領域毋庸置疑的杰作。說它們是C++語言圣經(jīng),并不為過。
Bjarne Stroustrup, The C++ Programming Language (Special 3rd Edition)
《C++程序設計語言(特別版)》,機械工業(yè)出版社
《C++程序設計語言(特別版)(英文影印版)》,高等教育出版社
迄今為止,TCPL是除了C++標準文獻之外權威的C++參考手冊。和大多數(shù)人的看法不大一樣,我認為Bjarne的文字語言并不遜色于他所創(chuàng)建的程序語言,至少我喜歡這種學院氣息濃厚的作品。本書對C++語言的描述輪廓鮮明、直截了當。它從C++語言創(chuàng)建者的角度來觀察C++,這是任何別的作者和書籍做不到的 — 沒有任何人比Bjarne自己更清楚該怎么來使用C++。
這是一本嚴肅的著作,以中、高級C++開發(fā)人員為目標讀者。如果你是一名有經(jīng)驗的C++程序員,需要了解更加本質(zhì)的C++知識,本書正是為你而寫。它不是那種讓你看了會不斷竊喜的小書,需要用心體會,反復咀嚼。在閱讀過程中,請?zhí)貏e留心Bjarne先生強調(diào)了什么,又對什么一語帶過。我個人比較喜歡這本書的第四部分“使用C++做設計”,這樣的內(nèi)容在類似的程序設計語言書籍中很難看到 — 我甚至認為Bjarne應該將這部分獨立出來單獨寫一本書。
Bjarne Stroustrup, The Design and Evolution of C++
《C++語言的設計和演化》,機械工業(yè)出版社
《C++語言的設計和演化(英文版)》,機械工業(yè)出版社
D&E是一本關于C++語言設計原理、設計決策和設計哲學的專著。它清晰地回答了C++為什么會成為今天這個樣子而沒有變成另外一種語言。作為C++語言的創(chuàng)建者,Bjarne淋漓盡致地展示了他獨到而深刻的見解。除了廣受贊譽的語言特性外,Bjarne沒有回避那些引起爭議的甚至被拒絕的C++特性,他一一給出了邏輯嚴密、令人信服的解釋。內(nèi)容涵蓋C++的史前時代、帶類的C、C++的設計規(guī)則、標準化、庫、內(nèi)存管理、多重繼承、模板等,對包括異常機制、運行時類型信息和名字空間在內(nèi)的重要的新特性都分別進行了深入探討。每一名C++程序員都應該可以從Bjarne的闡釋中加深對手中這門語言的認識。
需要再次提醒的是,這兩本書知識濃縮,信息量極大,請不要錯過Bjarne每一句看似漫不經(jīng)意的話。
入門教程
學習任何一門語言都需要一個從入門到精通、從新手到高手循序漸進的過程。不過,對于一個所謂的新手而言,究竟是一個完完全全的新手,還是一個熟悉某種別的語言的“新手”,甚至是在某種語言程序設計領域已經(jīng)頗有建樹的高手,很 難一概而論?不同的C++新手需要不同的入門書籍。
Andrew Koenig, Barbara E. Moo, Accelerated C++: Practical Programming by Example
《Accelerated C++中文版》,中國電力出版社
和市面上大多數(shù)C++教程不同,本書不是從“C++中的C”開始講解,而是始于地道的C++特性。從一開始就使用標準庫來寫程序,隨著講述的逐漸深入,又一一解釋這些標準庫組件所依賴的基礎概念。另外,和其他C++教材不同的是,這本書以實例拉動語言和標準庫的講解,對后兩者的講解是為了給實例程序提供支持,而不是像絕大多數(shù)C++教材那樣,例子只是用作演示語言特性和標準庫用法的輔助工具。
作者在C++領域的編程實踐、教育培訓以及技術寫作方面都是世界一流水準。我喜歡這種大量使用標準庫和C++語言原生特性的清新的寫作風格。在這本教材面前,幾乎迄今為止的所有C++教材都黯然失色或顯得過時。盡管這本教材也許對于國內(nèi)的高校教育來說有些前衛(wèi),不過我仍然極力向我的同行們推薦。順帶一提,在Bjarne和我近的一封通信里,他這樣評價本書:對于有經(jīng)驗的程序員學習C++而言,這本書可能是世界上好的一本。

