c++學習漸進數目

helloxchen發表於2010-11-23

《 Inside the C++ Object Model》我自己現在也在看這本書,對C++物件模型介紹的非常好,是深入瞭解C++的資料書籍。C++學習應該從兩個方面來學習,首先學習C++語言層面,也就是C++語法,如果深入學習的話就會進入C++底層。。。第二個層面就是物件,設計很廣泛:物件設計,物件複用,STL,COM, BOOST。。。

1. 《The C++ Programming Language》 (Special 3rd Edition) by Bjarne Stroustrup

C++之父著作的大頭作,非常不錯,很厚,對C++介紹的非常詳細。

2. 《The Design and Evolution of C++》 by Bjarne Stroustrup

如果你只打算購買一本書,那就選擇1,如果還想要第二本 — 那就是這兩本了。它們的作者是 C++語言的建立者。Stroustrup的文字語言絲毫不遜色於他所建立的程式語言。它們可以使你免於誤入歧途。

3. 《Effective C++》: 50 Specific Ways to Improve Your Programs and Designs

 by Scott Meyers

4. 《More Effective C++》: 35 New Ways to Improve Your Programs and Designs

 by Scott Meyers

5. 《Effective STL》: 50 Specific Ways to Improve Your Use of the Standard Template Library by Scott Meyers

我強烈推薦Meyers這個系列。它們是菜鳥進階必讀之作。遊刃有餘的技術,高超的寫作技巧。Meyers可能是世界上最優秀的C++技術作家。

6. 《The C++ Standard Library》 : A Tutorial and Reference by Nicolai M. Josuttis

C++標準庫字典式著作。內容全面,結構清晰。

7. 《C++ Templates》: The Complete Guide by David Vandevoorde,

Nicolai M. Josuttis Alexandrescu的Modern C++ Design閱讀門檻很高,這本書可以充當你的墊腳石。單單閱讀The C++ Standard Library或許並不足以使你具備定製、擴充標準庫元件的能力,這本書可以助你一臂之力。對於任何希望進入模板程式設計領域的C++程式設計師來說,這是一本必讀之作。

8. 《Modern C++ Design》: Generic Programming and Design Patterns Applied

 by Andrei Alexandrescu

一本天才的著作!泛型模式,無限延伸你的視野,足以挑戰任何一名C++程式設計師的思維極限。這本書幾乎可以滿足你對C++模板的所有幻想。

9. 《Design Patterns》

 by Erich Gamma , Richard Helm, Ralph Johnson, John Vlissides

設計可複用的物件導向的軟體,你需要掌握設計模式。這並不是一本專門針對C++程式設計師的著作,但它採用了C++(和Smalltalk)作為主要示例語言,C++程式設計師尤其易於從中受益。學習設計模式,這本書需要一而再、再而三的咀嚼。

再貼:

推薦C++教程

1. <> , Bjarne Stroustrup

這是一本每個人都應該買但不一定要看的書,強烈建議初學者不要看這本書,否則可能會一頭霧水,失去信心,BS寫書本來就不怎麼樣,他自己都說他的書有些晦澀難懂,但是買一本放在書櫃裡,有什麼不清楚的地方查查高人如何解析還是有必要的。中文版是裘老師翻譯的,以裘老師的深厚功力,技術上大家大可放心,但語言流暢上我就不敢認同了,況且這還是一本大書,如果要追求語言流暢的話,可能沒有兩3年是出不來的,而且國內的出版社又那麼急功近利,稿酬不高,做得那麼好有必要嗎?

2. <> , lippman

lippman的地位自然不用猜疑,此書也被評為C++的最佳入門書籍,也是Lipman寫得最認真的一本書,第3版在國內98年就有了。全書可謂是C++大全,深度適當,比較適合初學者,或者想對C++和程式設計有大概瞭解的讀者,但就是比較厚,這也只能怪C++的源遠流長,總是在打園場,不斷增加新特性,讓我們這群讀者都不得不捧著這本大書品讀。中文版是潘老師翻譯的,文字通順,但缺乏味道,看著一本千來頁的書,而且前面一部分講的都是程式設計思想,容易令人產生睏倦,也難怪很多人半道出家學java。

3. <> Scott meyer 同下

4. <> , meyer

這年本書乃是改善設計思維和設計思想的必讀書籍,書中每個item莫不是經過千錘百煉之後得出。其中,effective比較淺顯易懂,每個 item都比較短,而more設計思想更進一層,有些item已經多多少少有設計模式的味道。我看過的是繁體版,這兩本書候老師翻譯得不錯(我覺得是候老師翻譯得最好的兩本書,比較認真),讀起來比較有味道。建議初學者在看完一本C++比較完整的書後直接拜讀此2書。

5. <>

就是現在賣得比較熱的書,夢魘和候節翻譯的,翻譯得很好,語言很通順,技術上也很好,只是書中有些程式碼我是除錯不過,或許只能怪STL裡面有幾個經典錯誤,不知看這本書的讀者發現了沒有?我嚴重建議C++的初學者看這本書,先知道應該怎麼來用C++,怎麼來充分利用標準庫,而不是一頭鑽入C++的龐大晦澀語法裡面,先用標準庫才能養成良好的程式碼編寫風格,更可以提高自己的實作能力,否則你如果花上一年半載在C++的語言細節上,可能自己都生氣為什麼還是寫不出好的程式出來,公欲善其事,必先利其器就是這個道理。

6. <> Andrei Alexandrescu

這是天才Andrei Alexandrescu的作品,很好的一本高階書,此書我只是瀏覽一下大概,沒有仔細看,有些地方看不懂,全書把C++和設計模式融為一體,向人展示了許多不平常的設計技巧與設計規範,令人折服。但有些難度,還望各位慎重。至於裡面的技術實不實用,就要因人而異了。

7. <> 據說書中展示了模板的精華之處

8. <>

Herb Sutter的書讀起來比較輕鬆,此2書可以作為effective與more effective的姐妹篇,寫作風格有些如蘇格拉底的提問式教學,但應用得還不夠火候。書的內容確實不錯,定位和effective差不多,但我個人而言還是更喜歡Meyer的書。More有中文版,有Lostmouse翻譯,質量一般,翻譯給人的感覺比較倉促,很多地方都過於直譯,味道怪怪的。

9. <> lippman 很簡單的一本書,初學者如果覺得自己確實很菜可以先看這本書,你肯定能看懂,也是lippman的書,但英文版有些地方值得商榷,還是看候節的中文版吧,翻譯得還可以,就是臺灣味道太濃了些,有點喧賓奪主之嫌。如了門的讀者就沒必要看這本書了,看它還不如看lippman的inside the C++ object model呢。

10 . <> 關於重用和程式庫設計的一本書,是由AT&T的Ellis夫婦寫的,書寫得很好,充分考慮了設計可重用程式庫的方方面面,對於每個想設計程式庫和的讀者都應該看這本書,中文版名是《設計和重用C++程式庫》,即將出版。

11. <> 我是覺得此書一般,並沒有外面吹的那麼好,可以說是中等偏上吧,要看就要看英文版的,中文版的千萬別看,那個譯者太不負責了

12. <> 據說人郵既要出版了,是由konnig夫婦寫的,如果你想知道cfront的歷史,還想清楚cfront的領導者,就找他們夫婦吧,那時,konig和 BS是獨立的,而其它的人都是由konig夫人Barbara領導的,konig在C++中可算是number 2,屬於學術派的那種,實際上C++也是分派別的。 英文版的質量肯定很好,有很多新的設計觀念,中文版還要期待,看看結果如何。

13. <<16Accelerated C++>> 也是koenig和Barbara夫婦寫的,據說很好,但我沒機會看,實在不敢評價。

14 <>

"<> 也是koenig和Barbara夫婦寫的,據說很好,但我沒機會看,實在不敢評價。 "

這書主要是講入門的人如何快速上手使用C++的,對C++的基礎概念、庫的使用講得多。使用這書的確很容易上手。

“<> ”,作者在序言裡面也寫了,此書是用作《C++ Primer》的入門鋪墊的。講得也不錯。但我覺得如果看後者沒什麼問題,這書可以只翻翻就行。

“<> 據說書中展示了模板的精華之處”模板相關的書聽說這書不錯的,我下到的不知道是不是完整的版本。

《Effective STL》這書怎麼說呢,使用STL的確用這書容易上手,但其中的有些條目得出的結論會讓你莫名其妙,除非你先看過《The C++ Standard Library》。

《The C++Programming language》,這書就不用講了。以前曾以為若能通讀此書無甚困惑,C++即至中高階水準,現在看來還不止。但正如樓上同仁所講,這書因為作者就是C ++的始作俑者,所以講述的題目往往是信手拈來,只講自己覺得重要的。其實遺漏了不少地方。絕對不適合初學者使用的。

最後想說的幾句,C++本身從C裡面繼承了不少特性,特別關於資料型別轉換的東東,特別讓人頭暈。

C++本身的設計是即可以作為庫使用,也可以作為語言使用。而且試圖透過使用庫來擴大語言的功能。這就給學習者很多困惑,因為很多特性和知識都是涉及在庫的設計方面。如果覺得困惑也不要氣餒。其實如果看過《Accelerated C++》和《C++ Primer》,C++的使用應該是沒有什麼問題的。

但如果要作為一個庫的設計者來說,即使這些書都看完了。也不一定能解決你的困惑的。再去看看ISO的C++標準吧。然後使用GCC,開源的編譯器可以讓你找出困惑你的C++精微之處。

http://blog.csdn.net/oanqoanq/archive/2009/02/17/3898789.aspx

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24790158/viewspace-1041923/,如需轉載,請註明出處,否則將追究法律責任。

相關文章