C++ 学习书目
C++書單
第一篇
一些同學問我,如何學好C++,我沒有別的辦法給你們,唯一的辦法就是讀書,讀大量的書,就可以解決。要把C++作為日常語言,而不是一種程序語言,這樣就好辦了。
有人又要問我,那么我應該讀什么書才好?沒有時間怎么辦?我只能對你們說,沒時間的話,就別學C++了,做你們喜歡做的事。生活中沒有C++,也同樣美好。如果你準備學,一定要學好,那么我開個書單,應該問題不是甚大。
首先肯定要讀一讀Bjarne Stroustrup的The Design and Evolution of C++,了解
一下這個語言的歷史。接下來就可以看別的書了,但要不停地回頭看這本書,看到你不斷地學到的新技術是怎么樣一點點地被接納到這個語言中去的。
第一本書因人而異,基礎好一些的,可以看Stanley B. Lippman的C++ Primer,這本書非常地巨大,你打星號的部分可以不要看。基礎不太好的,可以看Stanley B.Lippman的Essential C++,這本書份量要輕得多,不過四個C++的范型都講了,而且講得非常清楚。
第二本應該停止技術層面的東西,靜下心來看看Pike和Kernighan的The Practice of Programming,好好地整理一下,在程序設計中應該有哪些注意的事項。這本非常薄的booklet,可以說是程序員必讀的指南。
第三本書,就應該是Bruce Eckel寫的、候捷譯的Thinking in C++,這本書每過半年我就要重讀一遍。可以說每一章都是寫得發人深省的,這本書讓我感覺到了技術運用的非常高的境界,但是語言非常平實,只要認真地讀,即使基礎不行,也一定可以懂。我在教課的時候,就是用這本書(面對的學生是零基礎)。
要更上一層的話,就要慢一步,先要把握C++設計習慣的良好。這是Scott Meyers的Effective C++和More Effective C++帶給我們的無盡收益。我More Effective C++買不起,只好花了10塊錢復印裝訂了一本"線裝本",看起來像葵花寶典。這兩本書是真正的經典,作者對C++的純熟,使得語言的風格讀起來簡直是如飴甘甜,就像他站在對面在講課。我手中有這兩本書的原版CD,如果有興趣,可以發E-mail到sjtu@263.net或在飲水思源投條兒給gaobo索要,只要您提供光盤我就給免費燒。如果你已經深刻地理解了Effective C++和More EffectiveC++,那你可以發現,你在眾人中已經是雞群之鶴。可以指導項目運作了,可以編寫一切你想做的程序了,可以指出別人看起來不錯的代碼的大小問題了。如果你能一眼看出有人的代碼是對應于"條款27"或"條款M6",那你可真是讓本人刮目了。
我已經講了,如果要寫程序,EC++和MEC++的境界已經足以使你自如應付,可是如果你還不滿足,想關注一些理論層面的問題,或是想看看實現的代碼,你就不應該錯過這幾本好極了的書。我是說Herb Sutter的Exceptional C++和More Exceptional C++,這兩本書的難度是非常大的,我對每一條的閱讀筆記都是十多頁。特別是泛型程序設計的部分,這兩本書旁征博引,極盡深入探討之能事,每每看懂一條,都抹汗一次,大感酣暢淋漓;還有侯捷的 STL源碼剖析,以實際的例子一點點地講解一個STL是怎么樣實現的,我是剛開始讀,不發表評論;而Stanley B. Lippman,Cfront的實現者之一,執筆寫出Inside the C++ Object Model,我只有一個字,就是基本帥呆了。我從中了解了無數的編譯器解釋源代碼的細節,以及記憶體分配的細節,呵呵,這些都知道了,我還怕什么呢?最近得到了另一Cfront實現者、C++標準委員會Koenig的C++沉思錄,看起來非常不錯,這里也推薦給大家,但我也沒看完,亦無發言權。
最后最后,你們,未來的C++理論家們,可要記住,Bjarne Stroustrup的The C++ Programming Language無論如何也應該讀個四五遍!這是一切C++的書本的源泉。
如果還覺得不夠,就向C++標準委員會訂購一本C++標準。
一切中國大陸作者的書,一概不要看(包括我的)。一切VC++或講特定的編譯器的書,一概不要看。如果需要補C語言的課,買一本非常小的K&R的The C Programming Language足矣,其它的書一概不要看。不要先學C,再學C++,而要直接學C++。你不是先學古文,再學白話的,對不對?所以相信我,直接來更容易。
以上文字,皆為原創,本人愿意為每個字負責。
第二篇
【階段一】:
《C++程序設計語言(特別版)》
??????? The C++ Programming Language (Bjarne Stroustrup)
《C++語言的設計和演化》
《The Design and Evolution of C++》
《C++ Primer plus (3RD)中文版》
《C++ Primer plus(4RD)中文版》***
《Essential C++中文版》
《Accelerated C++中文版》
《Thinking In C++》(不要看中文版)*
【階段二】:
《Effective C++中文版》
《More Effective C++中文版》
《Exceptional C++中文版》
《More Exceptional C++中文版》
《C++沉思錄》
【階段三】:
《深度探索C++對象模型》
??????? Inside The C++ Object Model (Stanley B. Lippman)
《設計模式:可復用面向對象軟件的基礎》
???????? Design Patterns
【STL】:
《C++ Templates全覽》
《C++設計新思維:泛型編程與設計模式之應用》***
《C++標準程序庫:自修教程與參考手冊》
??????? STL Tutorial and Reference Guide (David R. Musser)
《Effective STL》
【網絡】
《C++網絡編程,卷1:運用ACE和模式消除復雜性》
《C++網絡編程,卷2:基于 ACE 和框架的系統化復用》
第三篇
C++學習推薦書目
語言入門:
有豐富C經驗,缺乏C++經驗的: 《C++ Primer (3RD)》 ;有其他語言的豐富經驗的: 《The C++ Programming Language》簡稱TCPL(對不住純C的fans了) ;如果選擇薄一點的書:《Essential C++》《Accelerated C++》都是不錯的選擇。 其實,我個人一直認為C++Primer帶著太過強烈的C的痕跡,對于學習C++未必是好事。 Accelerated C++我沒有讀過,從各方面的評價來看,完全值得推薦。
這幾本書都有相應的中文版,而且翻譯的質量都不錯。上面的書未必都需要讀一遍,但無論如何,TCPL是應該閱讀的。
進階A:
這個路線側重于語言本身
《Effective C++》 簡稱EC,C++程序員必讀!如果我有權招聘程序員的話,沒有讀過這本C++“圣經”的人,大概...很多時候,我們說C++圣經不是指TCPL,而是這一本。
《C++ Coding Standards: 101 Rules, Guidelines, and Best Practices》簡稱《C++編程規范》,個人認為,這是C++程序員必備的案頭書。幾乎Effective系列和Exceptional系列都在這里得到了總結。最新的模版、異常的業界經驗都在這里的到了體現。可能的唯一缺陷就是對一個新手而言,對于為什么這么做,解釋的不夠。我的看法是:如果你不理解其中的條款,記憶,并且照做;如果你理解其中的條款,我猜你一定會同意書中的觀點。我估計,這本書中的內容至少在2009年以前都不會過時,人們將廣為傳誦它制定的101條戒律。還不知道他的簡稱,也許101會成為一個候選者?
提到《Effective C++》,那么另外三本書一一浮出水面:
《More Effective C++》簡稱MEC,《Exceptional C++》和《More Exceptional C++》,新書《Exceptional C++ Style》也是值得一看的好書。 上述幾本書,一本也不應該放過,個人建議上述書籍按順序閱讀。并且,在將來反復閱讀上述幾本書。
進階B:
這個路線側重于標準程序庫。
《The C++ Standard Library》聽說過STL嗎?這本書會教你最基本的,也是最重要的STL的使用。
STL編程指南(Programmer's Guide)電子書http://www.shubulo.com/thread-35929-1-1.html
中文版名稱:《C++標準程序庫 自修教程與參考手冊》,這本書,應該是必讀的。
《Effective STL》會使用STL還不夠,還必須知道什么時候選擇什么STL組件,這是STL使用的必讀書。
《Generic Programming and the STL: Using and Extending the C++ Standard Template Library》,中文名稱《泛型編程與STL》,這本書理論性較強,但是真的很嚴謹,而且并不是非常難懂。理解其中對于Concept的解釋,將是非常重要的。
《C++ STL》這不是講述使用程序庫的,而是講述程序庫實現原理的。腸胃不好的,需要慢慢吸收。是不是翻譯的問題呢? 這個路線的書,仍然是建議按順序閱讀。
AB兩個路線應該是可以并行的。
?
其他進階參考書
提出這些參考書,只是避免爭議,我只認真看完了其中的一本。
《Thinking in C++》這本書及其中文版傳言好壞都有,沒有認真看過,不做評價,如果確有興趣,不妨嘗試一下該書。
《C++必知必會》,如果早一年,這本書將是重量級的,然而它被101和《Exceptional C++ Style》蓋過一頭。
《C++ Gotchas: Avoiding Common Problems in Coding and Design》,這是一本我未曾讀過的書,而且廣泛的獲得好評。中文版《C++程序設計陷阱》
《STL 源碼剖析》這本書我剛到手,就被人“借”走,以至于我到現在也沒有看過。看過這本書的朋友,可以給一個合適的評價。
《Imperfect C++》,這確實是一本好書,個人認為不大適合缺乏工程經驗的人。不過,如果你看完了前面步驟的書,那么看這一本書將是一件非常輕松的事情。書中光盤所附的stlsoft庫還真的是一個精品。到目前為止,這本書我剛看了一半。
?
高級:
《The Design and Evolution of C++》簡稱D&E,內容并不艱深,Bjarne的書,僅此,就值得一讀。
《Inside The C++ Object Model》中文版:《深度探索C++對象模型》,這個C程序員一定會覺得C++原來并不神秘。
《C++ Template》在閱讀STL、Boost或者Loki的源代碼之前,請仔細閱讀本書,它可以減輕一些閱讀的煩惱。這本書是談論C++模版的權威。
《Modern C++ Design Generic Programming and Design Patterns Applied》簡稱MCD,中文書名《C++設計新思維:泛型編程與設計模式之應用》。在閱讀MCD之前,簡易先閱讀C++ Template。
你對C++覺得不滿嗎?《對象揭秘:Java、Eiffel和C++》可以部分的幫助你完成抱怨的目標。也許它還可以讓你不迷信C++。
?
另外,一份C++標準文檔也應該是加以咀嚼的。
還有一些書籍,并不能簡單的歸于C++,也難以在純粹的書本學習中加以掌握。《設計模式》一書就是這樣。因此,這里推薦的僅僅限于C++語言本身。
所有上述的書籍,不是談論C++語言本身,就是談論STL的。偶爾,某些書中條目也會涉及問題相關的現實工程。這些書并不是C++軟件開發的全部,但是他們很重要。閱讀這些書,未必需要化費太多的精力,有時候會困難,有時候會很快速。回顧我自己閱讀上述書籍的經歷,這差不多是3年的時間。
?
有幾本書,需要說明一下的。
《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++技術運用不多。
?
轉載于:https://www.cnblogs.com/dLong/p/3436652.html
總結
- 上一篇: Zend Server更新至6.2版本—
- 下一篇: 开发中的几款小工具