天天看點

C++書籍大彙報 應該比較全

由于見到論壇上不少找書的,于是就稍稍彙總總結了一下,作為本人即将推出的《C++資源大彙》系列文章的引子。本文隻是初稿,其中有不少的纰漏、筆誤、打誤(打字錯誤)希望各位糾正。

本文總結了标準C++的東西,沒有MFC等東西的書,也有一些作者的簡介,希望有用。

意見建議到:[email protected]   [email protected]

由于最近忙于某種考試,是以回信比較緩慢,敬請原諒。

C++   書籍大彙

語言基礎入門:

1.   C++   Primer   《C++入門》(通常不用中文名)

by   Stanley   B.   Lippman

有第三版和第四版,如其名,是C++入門的不二選擇,是全面廣泛的參考書目,内容豐富,筆觸嚴謹。

如果說Bjarne   Stroustrup是C++之父的話,那麼Lippman可以說是C++之母了:)

晨星:适合有豐富C經驗,缺乏C++經驗的。不過我個人一直認為此書帶着過于強烈的C語言的痕迹,對于C++的學習未必是好事。

2.   The   C++   Programming   Language   《C++程式設計語言》

by   Bjarne   Stroustrup

有第三版特别版,剛剛為一個朋友買了一本,不用說了   Bjarne   Stroustrup寫的,權威之作,可以說與C++   Primer是同等廣博的“聖經”級别

的參考書。

晨星:簡稱TC++PL,有其他語言的豐富經驗的。(也有人簡稱之為“TCPL”,但需與另一本《The   C   Programmer   Language》區分開來)

3.   Essential   C++   《C++基礎》

by   Stanley   B.   Lippman

同樣是入門的基礎,也是由Stanley   B.   Lippman執筆的作品,研究文法÷語意再好不過的了。

4.   Accelerated   C++

by   Andrew   Koenig   and   Barbara   E.   Moo

夫妻一同的作品,Koenig夫婦可以說也是頂尖領域的專家,相比Barbara   E.   Moo比較注重教學,這本本人同晨星老大一樣沒有讀過,當時它的

副标題應該能說明一些内容了吧。

Practical   Programming   by   Example   通過執行個體來實踐程式設計

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

以上的書籍都應該随手查閱的,即使是将來,也有一些細節可能一下不能回憶依然需要查閱,然而這四本内容涉及程度有一定的交叉,可以選

擇而讀,個人認為和晨星的建議一樣:TC++PL是應該閱讀的。

進階A,經驗與慣用法:

5.   Effective   C++   ,   More   Effective   C++

by   Scott   Meyers

這幾本我認為應當歸在一起介紹,老實說這些條款是開發項目以及平時學習中不可缺少的Golden   Tips,反複閱讀,你會發現這些條款實在是再

深刻不過的了。

晨星:簡稱EC。C++程式員必讀!很多時候,我們說C++聖經不是指TC++PL,而是這一本。《The   Pragmatic   Programmer》一書中寫到:“一旦

你發現自己要參與C++項目的開發,趕快跑(不要走)到書店去購買Scott   Mayer的《Effective   C++》,可能還要《More   Effective   C++》”。

可見晨星對于Scott   Meyers的這兩本推薦的程度了!

6.   Exceptional   C++   ,   More   Exceptional   C++   ,   Exceptional   C++   Style

by   Herb   Sutter

這三本也是該歸在一起的,Herb   Sutter是C++标準委員會的老大,現在人在微軟,他的書當然也是相當具有啟發意義的。

7.   C++   Coding   Standards:   101   Rules,   Guidelines,   and   Best   Practices   《C++   程式設計規範》

by   Herb   Sutter   and   Andrei   Alexandrescu

這本最近又看了一遍也是感到尤其深刻,案頭書的描述再好不過了,裡面豐富的名言,豐富的内涵,以及每次重複閱讀都能有新的發現,哎,

不稱之為經典也不幸哎!

晨星:個人認為此書應為C++程式員必備的案頭書。幾乎Effective系列和Exceptional系列都在這裡得到了總結。最新的模闆、異常的業界經驗

都在這裡的到了展現。可能的唯一缺陷就是對一個新手而言,關于“為什麼這麼做”的問題,解釋的不夠。

我的看法是:如果你不了解其中的條款,記憶,并且照做;如果你了解其中的條款,我猜你一定會同意書中的觀點。我認為這本書中的内容至

少在2009年以前都不會過時,人們将廣為傳誦它制定的101條戒律。

還不知道他的簡稱,也許“101”會成為一個候選者?  

晨星的評論似乎有點冗長,作為進階的Guidelines,絕對是首選。 

進階B,STL與範型(GP):

作為标準庫的一部分,STL已經深入我們的開發生活,vector,list,deque,set,map等等都是我們首選的容器,iterator的機制已經無可厚非地

被接受,STL引入的範型也給我們打開了一閃窗。

8.   The   C++   Standard   Library   《C++标準程式庫—自修教程與參考手冊》

A   Tutorial   and   Reference   by   Nicolai   M.Josuttis,

STL怎麼用?看看本書吧。Nicolai   M.Josuttis好像也是C++标準委員會的成員,也是C++   Template的作者。

晨星:聽說過STL嗎?這本書會教你最基本的,也是最重要的STL的使用。這本書,應該是必讀的。

9.   Effective   STL

簡單的使用後的提升

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

10.   Generic   Programming   and   the   STL:   Using   and   Extending   the   C++   Standard   Template   Libra   《泛型程式設計與STL》。

Using   and   Extending   the   C++   Standard   Template   library   by   Matthew   H.Austern

書的副标題很謙虛,似乎說本書隻是使用和擴充,其實本書可謂GP理論入門的必讀,STL的内涵與設計都可以看到

晨星:這本書理論性較強,但是真的很嚴謹,而且并不是非常難懂。了解其中對于Concept的解釋,将是非常重要的。  

11.   C++   Standard   Template   Library   《C++   STL》

by   P.J.Plauger,Alexander   A.Stepanov,   Meng   Lee,David   R.Musser

兩位STL庫的設計人員P.J.Plauger和Meng   Lee,講述STL實作的原理

晨星:這不是講述使用程式庫的,而是講述程式庫實作原理的。腸胃不好的,需要慢慢吸收。

12.   C++   Template   《C++模闆》

by   David   Vandevoorde,   Nicolai   M.   Josuttis

本書可謂全面介紹了模闆的使用細則,當然本人認為介紹的細節不是很細緻,歸類不如C++   Primer,當然模闆的基本用法都可以看到。

晨星:在閱讀STL、Boost或者Loki的源代碼之前,請仔細閱讀本書,它可以減輕一些閱讀的煩惱。這本書是讨論C++模闆的權威。  

C++   Template   Metaprogramming   :   Concepts,   Tools,   and   Techniques   from   Boost   and   Beyond

by   David   Abrahams   and   Aleksey   Gurtovoy

本書沒有看到中文版,也是一本介紹模闆元程式設計的專業參考書,十分細緻地講述了進階的模闆技術,隻是本書隻有英文版的。

再進階A,底層機制:

13.   The   Annotated   C++   Reference   Manual

by   Margaret   A.Ellis   and   Bjarne   Stroustrup  

标準庫的全面解析,BS老大為标準庫量身定做的很OFFICAL的參考。

簡稱:ARM

14.   Inside   the   C++   Object   Model   《深度探索C++物件模型》

by   Stanley   Lippman

即使反複學習了進階A,依然有許多語言實作方面的Puzzle問題,尤其是虛繼承,臨時對象等令人麻煩的深層問題值得學習,Lippman以一位專

家的身份給了我們一個深窺語言内部的可能,正如晨星所言,Lippman的書都有C和底層實作的影子。

晨星:C程式員讀後一定會覺得C++原來并不神秘。

再進階B,設計模式:

15.   Design   Patterns   -   Elements   of   Reusable   Object   Oriented   Software   《設計模式》

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

老實說不應該把設計概念的東西拿到這裡來,當時本書大多數以C++語言為例子,也是我們應該學習的。

GoF聽說過嗎?Gang   of   Four四人幫:)就是說的本文的四位作者,他們是設計模式總結的先驅,看了本書之後,OO的設計模式會深入裡的大腦。

由于模式的粒度過大,是以不能被代碼化,隻是一種概念,可以說是展現在項目中的靈魂。

還要提到的是最近John   Vlissides去世了,在此我對他的逝世感到萬分的惋惜。

16.   Modern   C++   Design   :   Generic   Programming   and   Design   Patterns   Applied   《C++設計新思維》

by   Andrei   Alexandrescu

本書最近好好地研究過了,這裡終于要介紹Andrei   Alexandrescu了,他是Real公司的項目經理,是GP模闆技術的天才,他的高深模闆技術影響

了BOOST以及全世界的模闆怪傑,本書中他介紹他的庫Loki,雖然庫十分激進沒有實際用途,當時展現的絢爛的特技令人歎服!同時本書是設計

模式用範型實作的經典展現,以及Policy設計模式在其中的極緻應用,直接影響了BOOST的adaptor設計(7個Policy)甚至影響了标準庫的智能

指針項目(雖然最後被否認了,當時絕對是完美的實作方法)

晨星:簡稱MCD。在閱讀MCD之前,建議先閱讀一下《C++   Template》。

其他:

17.   Thinking   in   C++   《C++程式設計思想》

by   Bruce   Eckel

本書本人隻是瞄了一眼,似乎第二本實用程式設計技術比較有用。

晨星:這本書及其中文版傳言好壞都有,沒有認真看過,不做評價,如果确有興趣,不妨嘗試一下該書。

18.   C++必知必會

by  

如同101一樣,當然也是權威的作品,隻是沒有遇到好的天時而已。

晨星:如果早一年,這本書将是重量級的,然而它被101和《Exceptional   C++   Style》蓋過一頭。

19.   C++   Gotchas:   Avoiding   Common   Problems   in   Coding   and   Design   《C++程式設計陷阱》

by  

正常,曾經有許多人讓我去看此書,可惜一直沒有去看的精力,于是擱置許久,當時深刻了解此書中被引用内容的權威,好評也是不斷。

晨星:這又是一本我未曾讀過,而且廣受好評的書。

20.   STL   源碼剖析

by   候捷

最近剛剛看了電子版,少有的國人之作,内容方面還可以,隻是一些候氏方言令人頭疼。

晨星:這本書我剛到手,就被人 "借 "走,以至于到現在也沒有看過。看過這本書的朋友,可以給一個合适的評價。  

其他進階:

21.   The   Design   and   Evolution   of   C++   《C++語方的設計和演化》

by   Bjarne   Stroustrup

又是BS老大的一本,值得一看

晨星:簡稱D&E,内容并不艱深,Bjarne的書,僅此,就值得一讀。

前段時間,互動網曾8塊一本(人民币)賤賣此書,現在好像沒了。

如果有我一定屯個N本:)

22.   《對象揭秘:Java、Eiffel和C++》

by  

沒有看過,是以沒有資格作評論

晨星:你對C++不滿嗎?這本書可以部分地幫你完成抱怨的目标。也許它還可以讓你不迷信C++。

23.   Imperfect   C++   《不完美的C++》

by   Matthew   Wilson

新書,本書介紹了許多新一代技術,以及C++很多有趣的技術,BS本來想把它加入C++   In   Depths行列的,可惜最後說了一句:“如果本書再少

一些,也許我會考慮的。”就完了,但是無論如何本書都是一本好書,值得一看。

最後提一下C++   In   Depths系列,這個是Bjarne   Stroustrup發起的将一些比較有價值的有意義的好書歸成一類的選集。這裡是英文的介紹:

Accelerated   C++:   Practical   Programming   by   Example,   Andrew   Koenig   and   Barbara   E.   Moo

Applied   C++:   Practical   Techniques   for   Building   Better   Software,   Philip   Romanik   and   Amy   Muntz

The   Boost   Graph   Library:   User   Guide   and   Reference   Manual,   Jeremy   G.   Siek,   Lie-Quan   Lee,   and   Andrew   Lumsdaine

C++   Coding   Standards:   101   Rules,   Guidelines,   and   Best   Practices,   Herb   Sutter   and   Andrei   Alexandrescu

C++   In-Depth   Box   Set,   Bjarne   Stroustrup,   Andrei   Alexandrescu,   Andrew   Koenig,   Barbara   E.   Moo,   Stanley   B.   Lippman,   and   Herb  

Sutter

C++   Network   Programming,   Volume   1:   Mastering   Complexity   with   ACE   and   Patterns,   Douglas   C.   Schmidt   and   Stephen   D.   Huston

C++   Network   Programming,   Volume   2:   Systematic   Reuse   with   ACE   and   Frameworks,   Douglas   C.   Schmidt   and   Stephen   D.   Huston

C++   Template   Metaprogramming:   Concepts,   Tools,   and   Techniques   from   Boost   and   Beyond,   David   Abrahams   and   Aleksey   Gurtovoy

Essential   C++,   Stanley   B.   Lippman

Exceptional   C++:   47   Engineering   Puzzles,   Programming   Problems,   and   Solutions,   Herb   Sutter

Exceptional   C++   Style:   40   New   Engineering   Puzzles,   Programming   Problems,   and   Solutions,   Herb   Sutter

Modern   C++   Design:   Generic   Programming   and   Design   Patterns   Applied,   Andrei   Alexandrescu

More   Exceptional   C++:   40   New   Engineering   Puzzles,   Programming   Problems,   and   Solutions,   Herb   Sutter

For   more   information,   check   out   the   series   web   site   at   www.awprofessional.com/series/indepth/

沒有資格作總結,國文水準一直很差,況且隻是一介菜鳥,更沒有資格喳喳亂叫。

感謝:

wingfiring(别逗了)(非典型秃子)和steedhorse(晨星)

本文很多晨星的意見都出自晨星的《晨老大的推薦書籍》一文