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