c++學習進階之路

Jonny0318發表於2017-04-09

(一)語言入門:

《C++ Primer》
最新版本:第三版(第四版國外已上架, 國內一些網上書店也在預訂中)
適合有豐富C經驗,缺乏C++經驗的。不過我個人一直認為此書帶著過於強烈的C語言的痕跡,對於C++的學習未必是 好事。

《The C++ Programming Language》/《C++程式設計語言》
最新版本:第三版特別版
簡稱 TC++PL,有其他語言的豐富經驗的。(也有人簡稱之為“TCPL”,但需與另一本《The C Programmer Language》區分開來)

《Essential C++》
《Accelerated C++》
這兩本薄一些,都是不錯的選擇。《Accelerated C++》本人沒有讀過,從各方面的評價來看,完全值得推薦。

以上幾本書都有相應的中文版,而且翻譯的質量都不錯。上面的書未必都需要讀一遍,但無論如何,TC++PL是應該閱讀的。

(二) 進階A:
這個路線側重於語言本身

《Effective C++》
最新版本:第二版(第三版國外已上架,國內一些網上書店也在預訂中)
簡稱EC。C++程式設計師必讀! 很多時候,我們說C++聖經不是指TC++PL,而是這一本。《The Pragmatic Programmer》一書中寫到:“一旦你發現自己要參與C++專案的開發,趕快跑(不要走)到書店去購買Scott Mayer的《Effective C++》,可能還要《More Effective C++》”。

《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》/《C++ 程式設計規範》
個人認為此書應為C++程式設計師必備的案頭書。幾乎Effective系列和Exceptional系 列都在這裡得到了總結。最新的模版、異常的業界經驗都在這裡的到了體現。可能的唯一缺陷就是對一個新手而言,關於“為什麼這麼做”的問題,解釋的不夠。
我 的看法是:如果你不理解其中的條款,記憶,並且照做;如果你理解其中的條款,我猜你一定會同意書中的觀點。我認為這本書中的內容至少在2009年以前都不 會過時,人們將廣為傳誦它制定的101條戒律。
還不知道他的簡稱,也許“101”會成為一個候選者?

提到《Effective C++》,那麼另外三本書一一浮出水面:
《More Effective C++》
《Exceptional C++》
《More Exceptional C++》。
新書《Exceptional C++ Style》也是值得一看的好書。
上 述幾本書,一本也不應該放過。
個人建議上述書籍按順序閱讀。並且,在將來反覆閱讀這幾本書。

(三)進階B:
這 個路線側重於程式庫。

《The C++ Standard Library》/《C++標準程式庫—自修教程與參考手冊》
聽說過STL嗎?這本書會教你最基本 的,也是最重要的STL的使用。這本書,應該是必讀的。

《Effective STL》
會使用STL還不夠,還必須知道什麼時候選擇什麼STL元件,這是STL使用的必讀書。

《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》/《泛型程式設計與STL》。
這本書理論性較強,但是真的很嚴謹,而且並不是非常難懂。理解其 中對於Concept的解釋,將是非常重要的。

《C++ STL》
這不是講述使用程式庫的,而是講述程式庫實現原理的。腸胃不好的,需要慢慢吸收。

這個路線的書,仍然是建議按順序閱讀。
進階A、進階B兩個路線應該是可以並行的。

其他進階參考書
提 出這些參考書,只是避免爭議,也為開闊視野,筆者並不曾完全讀過所有的。

《Thinking in C++》/《C++程式設計思想》
這本書及其中文版傳言好壞都有,沒有認真看過,不做評價,如果確有興趣,不妨嘗試 一下該書。

以下幾本書基本上涉及的都是語言本身,大體上可以按照以下的順序閱讀。

《C++必知必會》
如果早一年,這本書將是重量級的,然而它被101和《Exceptional C++ Style》蓋過一頭。

《C++ Gotchas: Avoiding Common Problems in Coding and Design》/《C++程式設計陷阱》
這又是一本我未曾讀過,而且廣受好評的書。

《STL 原始碼剖析》
這本書我剛到手,就被人"借"走,以至於到現在也沒有看過。看過這本書的朋友,可以給一個合適的評價。

高階:
《The Design and Evolution of C++》/《C++語方的設計和演化》
簡稱D&E,內 容並不艱深,Bjarne的書,僅此,就值得一讀。
前段時間,互動網曾8塊一本(人民幣)賤賣此書,現在好像沒了。

《Inside The C++ Object Model》/《深度探索C++物件模型》
C程式設計師讀後一定會覺得C++原來並不神祕。

《C++ Template》
在閱讀STL、Boost或者Loki的原始碼之前,請仔細閱讀本書,它可以減輕一些閱讀的煩惱。這本書是討 論C++模版的權威。

《Modern C++ Design Generic Programming and Design Patterns Applied》/《C++設計新思維——泛型程式設計與設計模式之應用》
簡稱MCD。在閱讀MCD之前,建議先閱讀一下《C++ Template》。

《物件揭祕:Java、Eiffel和C++》
你對C++不滿嗎?這本書可以部分地幫你完成抱怨的目標。也許它還可以讓你不迷信C++。

最後,一份C++標準文件也是應該加以咀嚼的。 
還有一些書籍,並不能簡單的歸於C++,也難以在純粹的書本學習中加以掌握。 《Design Patterns》/《設計模式》一書就歸於此類。

所有上述的書籍,要麼談論C++語言本身,要麼談論STL的,要麼兼而有之(當然嚴格講STL也是C++語言非常重要的一部分)。偶爾,某些書中條 目也會涉及實際工程。這些書並不是C++軟體開發的全部,但是他們很重要。閱讀這些書,未必需要化費太多的精力,有時候是會困難,但也有時候會很快速。
最 後,程式語言並非電腦科學技術的全部,尤其對於在校的學生來說,打好基礎、開闊視野都是非常重要的。

**************************************************************

有幾本書,需要說明一下的。
《Multi-Paradigm Design For C++ 》,這本書有些陳舊,也許在出版的年代還是很優秀的,現在,這樣的書已經完全可以被推薦書目覆蓋了。最重要的是,書中的某些觀點今天已經不合時宜了。

《C++程式設計慣用法》這是一本如雷貫耳的書,可惜,這本書是1992年出版的,書中的很多內容,已經被後來的作品覆蓋,而且講述得更全面嚴謹。另 外,該書中對於C++的認識,在今天看來,已經過時甚至成為錯誤的觀點。因此,只適合已經通曉C++的人蔘考。

《深入淺出MFC》
這是一本講述如何使用MFC庫的書。今天,MFC日漸式微,而且,MFC所使用的C++技術也是一直為人所詬病的。書確實是不錯的,但是,學習C++並不 一定要學習MFC。因此,對於學習C++而言,這本書不是必須。

《The Art Of C++》
老實說,我對這本書的評價一般般。而且,“Art”名不副實,有翻譯成《C++實戰》,到是更確切一些。

《大規模C++程式設計》
這是一本重要的書,特別是對於缺乏大規模C++軟體開發的人來說,尤其如此。但是,這本書的中文版翻譯太差勁了。這是一本關於工程的書,因此,並不是 C++學習必備的。另外,書中的觀點略嫌保守,對於最新的C++技術運用不多。

《Imperfect C++》
這是一本基礎於實踐結合的書,確實很優秀,而且所講內容並不很難。但是從學習C++的角度而言,理解這本書需要許多的實踐經驗。推不推薦,屬於兩難的一本 書。

《C++ Primer》和《TC++PL》都不適合初學者
這個書目的目標是:幫助一個人在C++領域儘快地登堂入室,幫助一個人成為合格的C++程式設計師。
這個書目不適合下列目標:應付各類計算機考試,應付面試,快速瞭解C++。

《C語言參考手冊(原書第5版)》       ----        作為參考書,沒錯的
引用China-pub上的介紹:
本書是經典C語言參考手冊的最新版,在強調正確性、可移植性和可維護性的基礎上,對C語言的具體細節、執行庫以及C語言程式設計風格做了完整、準確的描述。本 書涵蓋了傳統C語言、C89、C95、C99等所有C語言版本的實現,同時討論了C++與C語言相容的部分。全書自上而下介紹了C語言的詞法結構、預處理 器、宣告、型別表示式、語句、函式和執行庫,是所有C語言程式設計人員必備的參考書。 這本暢銷的權威參考手冊對C語言的基本概念和執行庫提供了完整的描述,同時還強調了以正確性、可移植性和可維護性為根本出發點的良好的C語言程式設計風格,被 國外眾多高校廣泛採用為教材或教學參考書,本書描述了C語言各個版本的所有細節,是C語言程式設計人員和實現者惟一必備的參考手冊。最新的第5版經過修訂和更 新,融入了最新C語言標準ISO IEC 9899:1999的完整描述,包括強大的語言擴充套件和新的函式庫。 Web站點www.CAReferenceManual.com中包 含了本書較長示例的原始碼、對C語言爭論點的深入討論、最新ISO IEC語言標準修訂以及其他重要C語言資源的連結。本書作為參考手冊,提供了非常詳細、清晰的c語言描述:

●標準C語言(1999):是標準C語言的新版本,支援複數型別與布林型別、變長陣列、精確浮點 數程式設計和具有可移植性與國際化的新的庫函式

●標準以C語言(1989):當前大多數程式設計人員使用的C語言版本

●傳統C語言:1990年之前常用的版本,還有幾百萬行程式碼正在使用

●C++相容C語言:可以同時在C語言與C++中使用的程式碼

●所有C語言版本的完整執行庫

《C語言的科學與藝術》 ---       非常好的一本書,現在也有中文版
引用China-pub上的介紹:
本書是電腦科學的經典教材,介紹了電腦科學的基礎知識和程式設計的專門知識。本書以介紹ANSI C為主線,不僅涵蓋C語言的基本知識,而且介紹了軟體工程技術以及如何應用良好的程式設計風格進行開發等內容。本書採用了庫函式的方法,強調抽象的原則, 詳細闡述了庫和模組化開發。此外,本書還利用大量例項講述解決問題的全過程,對開發過程中常見的錯誤也給出瞭解決和避免的方法。本書既可作為高等院校計算 機科學入門課程及C語言入門課程的教材,也是C語言開發人員的極佳參考書。

《C語言介面與實現:建立可重用軟體的技術》
引用China-pub上的介紹:
本書概念清晰、內容新穎、例項詳盡,是一本有關設計、實現和有效使用C語言庫函式,掌握建立可重用C語言軟體模組技術的參考指南。本書倡導基於介面的C語 言設計理念及其實現技術,深入詳細地描述了24個C語言介面及其實現。
本書通過敘述如何用一種與語言無關的方法將介面的設計與實現獨立開來,從而形成一種基於介面的設計途徑來建立可重用的API,本書是一本針對C語言程式設計師 的不可多得的好書,也是值得所有希望掌握可重用軟體模組技術的讀者閱讀的參考書籍。關於如何設計、實現和有效使用庫函式的指南少之又少(如果說還有的 話)。這本力作填補了這個空白。它可以作為下一代軟體的工具書.所有的C語言程式設計師都應該閱讀。               ——W.Richard Stevens 
“我向每位專業C語言程式設計師推薦這本書。C語言程式設計師們忽視書中所描述的各種技術已經太長時間了。”                                           ——Norman Ramsey,貝爾實驗室研究員

《C程式設計語言(第2版·新版)》
引用China-pub上的介紹:
本書是由C語言的設計者Brian W. Kernighan和Dennis M. Ritchie編寫的一部介紹標準C語言及其程式設計方法的權威性經典著作。全面、系統地講述了C語言的各個特性及程式設計的基本方法,包括基本概念、類 型和表示式、控制流、函式與程式結構、指標與陣列、結構、輸入與輸出、UNIX系統介面、標準庫等內容。
本書的講述深入淺出,配合典型例證,通俗易懂,實用性強,適合作為大專院校計算機專業或非計算機專業的C語言教材,也可以作為從事計算機相關軟硬體開 發的技術人員的參考書。 在計算機發展的歷史上,沒有哪一種程式設計語言像C語言這樣應用如此廣泛。
本書原著 即為C語言的設計者之一Dennis M.Ritchie和著名的電腦科學家Brian W.Kernighan合著的 一本介紹C語言的權威經典著作。我們現在見到的大量論述C語言程式設計的教材和專著均以 此書為藍本。原著第1版中介紹的C語言成為後來廣泛使用的C語言版本—— 標準C的基礎。人們熟知的“hello, World”程式就是由本書首次引入的,現在,這一程式已經成為所有程式設計語言入門的第一課。原著第2版根據1987年制定的ANSIC標準做了適當的 修訂.引入了最新的語言形式,並增加了新的示例,通過簡潔的描述、典型的示例,作者全面、系統、準確地講述了C語言的各 個特性以及程式設計的基本方法。對於計算機從業人員來說,本書是一本必讀的程式設計語言方面的參考書。

相關文章