c++學習路線與推薦書籍【轉】

(一)語言入門: 
《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++軟件開發的全部,但是他們很重要。閱讀這些書,未必需要化費太多的精力,有時候是會困難,但也有時候會很快速。 
最後,編程語言並非計算機科學技術的全部,尤其對於在校的學生來說,打好基礎、開闊視野都是非常重要的。 













1. 《C++ Primer》Lippman寫的,經典中的經典,C++入門的寶典,讀完這本書,基本語法過關,部分技巧掌握。  
2.《The C++ programming language》C++的創始人Bjarne Stroustrup寫的,這本書的權威性毋庸置疑,而且這裏面講到了一些比較底層的東西,如果你看過了《C++ Primer》的話,這本書可以跳着看,懂的就跳過。  
3.《Effective C++》 Scott Meyers頂級大師用活潑幽默的語言寫的書,這本書中講到了許多應該注意的問題,這是十分值得購買的書。(Lippman曾把程序員分爲看過effective c++的和沒看過的兩類。由此可見此書的重要性)  
4.《More Effective C++》上書的姊妹篇,這本書裏講到了許多關鍵性的技術,對提高程序的效率是非常有幫助的。  
5.《Advanced C++》這是一本神奇的書,裏面講到了許多連C++設計者都沒想到的妙法,解決了許多看似不可能解決的問題。Scott Meyers曾隆重推薦過的書。  
6.《Inside the C++ Objects Model》又是Lippman的大作!這本書講到了他在開發第一個C++編譯器時的許多想法,徹底解析了C++底層機制是如何實現對象模型的,看過這本書,你對C++的瞭解會有質的飛躍!從這刻起,你有權力說你是一個C++程序員了!  

光學C++語言基本上看完上述的書就是高手了,其他經驗要在實踐中累積,這是我個人的經驗。另外,你學了C++還要開發程序,開發軟件,無疑要使用MFC之類的東西  
《API Programming》和《MFC Windows 程序設計》兩書值得一看。這兩本書能迅速提高你的實踐水平。 













【學習基本路線圖】 

        順序:基本原理(進制轉換啊什麼的) -->  C(學習能力強的可以從C++開始)  -->   API -->  C++語法  -->  操作系統原理  -->  MFC   -->  數據庫  --  數據結構  --  硬件  --  領域編程(根據你自己以後的行業特點的專業性編程) 
         
       最後從數據庫開始可以交叉進行。 

【學習方法】 

        1.基本原理: 

        這個部分主要理解就行了,至於是不是非要記住十六進制怎麼轉換二進制啊,CPU結構圖啊什麼的,完全沒有必要。記住主要是理解,記憶並沒有什麼意 義,有些人略過這些一樣能學會C++,之後回頭再詳細學習效果會更好,更開始就大概知道有這個回事就行了。 
        推薦書籍:《微機原理與接**術》作者:牟琦  這本書看到第23頁就行了,知道進制轉換的大概方法和有這麼一回事就行了。 
                       《彙編語言》第二版   作者:王爽(只看第一,二,三章)    這是第一本讓我覺得過人也能寫出好書的書,相當經典,彙編領域過人寫的出還真的是不錯,一本80X86領域的就是這本,WIN32的就是羅雲彬的那本 《WIN32彙編程序設計》第三版,現在好像出第四版了,叫什麼玉拙成器什麼什麼的。 

        2.C 

        既然我們是學習C++,那麼C就是路過的,C是一門面向過程的語言(哲學說法,現在你還不需要懂,不要怕呵呵),而C++是一門面向過程的語言(也 是哲學呵呵,不懂先彆着急,這個要慢慢去領悟),說白了,C++是C的一個超集,對C做了一些有意義的擴充,這個說多了暫時你還不明白,總之這個階段的學 習有些人喜歡從C開始,有些人喜歡直接從C++開始,其實多半都是一樣的,學了C以後你學起來C++更加簡單,因爲很多東西都是一樣的,著名的《C++ primer plus》就把C++的學習分成了兩個部分,C部分和C++部分。 
        推薦書籍:如果你想快速掌握C和C++的基礎語法,那麼選擇譚浩強的綠本本吧,這本書寫的很簡陋,快速瀏覽一下C和C++的基礎語法還是可以的,真 正掌握就算了吧。 
                      還有網上不論青紅皁白推薦的書下面做一下介紹: 
                      回覆最多的無非就是兩本: 譚浩強 C 和 K&R C,K&R是C的創始人,他們的書根本不適合新人去看,到不是有多難,他們只是在建立一種標準,而不是一本真正的教程。 
                      個人認爲真正想學習C的人,看清楚了,真正想學習C的人啊,不是路過的人,應該看一下《C primer plus》,這本書有些羅嗦,但是講的很全面,可以當字典使用。 

        3.API 
        這部分的話,其實是慢慢積累的,你去Google查一下什麼是API就好了,學習Windows原理的時候你會理解到是個什麼東西的,大概說起來就 是微軟給我們提供了一些封裝好了的函數,我們可以調用過來實現一些簡單而且常用的功能,比如MessageBox是彈出一個窗口,你只要在他的參數裏自己 設定大小啊和現實什麼啊就是了。 
        推薦書籍:MSDN 微軟提供的字典式的幫助文檔,這個是你積累API什麼的最好的老師。 

        3.C++ 
        
         重點來了,如果你前面學習了C,那麼你現在可以先溫習一下C的語法,因爲在你沒有學習面向對象之前,C和C++的語法是基本一樣的,注意是基本,循環 啊,指針啊,數組啊,結構啊,函數啊,+—×/%啊什麼的。然後你要開始重要的一步:學習C++自己獨有的特性,類啊,封裝啊,重載啊,多態啊,繼承啊什 麼的,這些都是非常重要的,在你日後寫Windows程序的時候都是經常用到的知識,並且是必不可少的。 
        推薦書籍:《C++ primer plus》 第五版中文版 這本書詳細到真是有些羅嗦,C++的每一個角落都不放棄,學習的時候不求掌握所有的特性,但是必須去理解,以後你遇到了不懂的或者比較生疏的可以回頭來 查,這樣學習的才比較紮實。 
                       《C++ primer》第四版 這是C++領域裏我讀過最經典的書籍之一了,在這本書裏,你將震驚於大師的技法和教學角度,你會經常感嘆,再感嘆。這本書呢,不是你現在學的,而是等自己 寫出幾個像樣的Windows程序以後,再回頭來看,你纔能有所領悟。 

        4.操作系統原理 
         
        這個其實是學習MFC(下一步要介紹的)必須學習的,如果你用C寫過Windows程序,你會對這個瞭如指掌,但是我們只是學了語法,這部分就必須 去學習,其實很快,我們不必知道的太多,只需要得到必須的就可以了,這部分當年我一天學完的,就是看孫鑫的視頻學會的(只看視頻第一章就行了,第二章講C++特性 的你也可以看看,MFC從第三章開始,以後接着看)。 
        推薦書籍:這裏推薦孫鑫的視頻,這部視頻在《深入詳解VC++》這本書的的配套光盤裏,非常經典,不可多得的過人講解的超高水平的視頻,看不懂就多 看幾遍,我當年看了三遍纔看懂(光看是絕對看不懂的,自己跟着寫才行)。你只要看第一章就行了。 
       
       5.MFC 
    
       堅持住,學完這部分你就能寫出真正的WIN32應用程序了,MFC呢就是微軟把你所需要實現的功能進一步封裝起來了(比API),你只需要實現你的功能, 至於程序的框架(最大化按鈕啊,關閉按鈕啊,邊框啊,標題啊,什麼的都給你提供好了,不用你自己用API代碼實現了),具體的你學完操作系統原理(看完孫鑫的視 頻第一章以後才能理解,現在不多說)。 
       MFC雖然給編程提供了諸多方便,但是無形中給學習卻增加了難度,這部分要堅持住,多看幾遍孫鑫的視頻,好好的去啃纔能有收穫。 
       推薦書籍:孫鑫《VC++深入詳解》,主要是視頻比較著名。 
                     侯先生(臺灣)《深入淺出MFC》第二版,這本書很老了,但是依然是MFC的經典,但是是你以後真正拿MFC寫出程序了以後,再去看,不然你絕對是看不 懂的,現在不着急看。 

      6.最後你們都會有自己的想法了,具體我也教不了你們什麼了,之後你要設計的領域都寫在路線圖裏了,至於更高級的領域,設計模式什麼的,是有一定經驗以後再去加深的。 
      這個時候你要做的,就是還要不斷的學習 
















(一)語言入門: 
《C++ Primer (3RD)中文版》Stanley B.Lippman, Josee Lajoie 
適合有豐富C經驗,缺乏C++經驗的。 
  
《The C++ Programming Language》/《C++程序設計語言》Bjarne Stroustrup(c++之父) 
簡稱TC++PL 
  
《The Design and Evolution of C++》Bjarne Stroustrup  
簡稱D&E 
TC++PL和D&E是C++語言聖經 
  
《Essential C++》Stanley B. Lippman 
《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++ 編程規範》 
  

提到《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》 
這不是講述使用程序庫的,而是講述程序庫實現原理的。腸胃不好的,需要慢慢吸收。 
  
  
網絡編程 
《C++網絡編程,卷1:運用ACE和模式消除複雜性》,華中科技大學出版社 
《C++網絡編程,卷2:基於 ACE 和框架的系統化複用》,電子工業出版社 
  
雜項 
《C++編程思想(第2版)第1卷:標準C++導引》,機械工業出版社 
《C++編程思想(英文版 第2版)》,機械工業出版社 
《C++沉思錄》,人民郵電出版社 
《深度探索C++對象模型》,華中科技大學出版社 
《深度探索C++對象模型(影印版)》,中國電力出版社 

  
C++工程領域的最高境界: 
《設計模式:可複用面向對象軟件的基礎》,機械工業出版社 

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

















首先是 c++的,我想買這個C ++ Prime 第四版,這本書很多人評論說很好,不知道看過這本書的人覺得怎麼樣?還有更好的書推薦碼? 

其次是數據結構的書,我原本想買嚴蔚敏的,但是聽別的朋友說最好是買國外的。 

再次是windows編程,這個是sdk編程。不知道《Windows核心編程》適合我不? 

最好是MFC編程,這個我已經選了孫鑫的視頻了,但是還是缺一本書,不知道 《MFC Windows應用程序設計 》 任哲著這本書如何?《Windows程序設計 第二版》王豔萍的,這本書又如何呢? 

  

最後還有就是一本 《VC++技術內幕第四版》的,這本書什麼程度才能看呢?至於《Windows程序設計第五版》電子書我已經有了。 

對於初學者,應該從《C++ Primer》第四版、《C++ Primer Plus》(第5版),《C++編程思想》或者《Accelerated C++》開始,當然《C++入門經典》(第3版)或者《C++大學教程(第五版)》也可以考慮,在書店裏翻看,根據自己的閱讀和學習習慣進行選擇好了。唯一的忠告是:不要選擇國內自編的入 門教程。在學習的同時,可以將《C++編程規範》和一本鉅著放在一旁,閱讀對應的相關段落和章節,如果有時間,做對應的習題。掌握基本特性後,可以對照 《C++必知必會》和《C++編程規範》,並試着做一做Exceptional系列中難度較小的題目,檢查自己的學習效果。編程實踐時可以閱讀《C++高 級編程》或者《C++編程思想》中的一些段落,當然,其他比較實用的軟件工程書也可以。這期間應該閱讀Effective系列,並挑選難度合適的 Exceptional題自測。經過這樣的錘鍊,你應該已經基礎非常紮實,可以步入C++的殿堂了。 
發佈了8 篇原創文章 · 獲贊 11 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章