我推薦的一些C\C++書籍

人們常常問我有什么C++和編程的書籍推薦泉手,也許是因?yàn)槲以赑owerDNS有一個(gè)關(guān)于“編寫可讀性良好的C++代碼”的演講压昼。這篇博文可以作為我對上述問題的一個(gè)回答,同時(shí)也包含了一些更廣泛的筆記編程烛芬。如果你有任何補(bǔ)充或喜歡的書籍但是我沒有提到缸沃,請給留言提示,我打算一有新書就更新這個(gè)頁面幌绍。

推薦C語言C++學(xué)習(xí)交流群:466572167

第一個(gè)注意項(xiàng):如果你打算學(xué)習(xí)C++颁褂,請務(wù)必學(xué)習(xí)最新版的C++ 2011。這個(gè)版本的C++移除了許多由C++強(qiáng)大帶來的一些痛苦之處傀广。另外颁独,也不用擔(dān)心C++ 2014的書籍,大多數(shù)編譯器已經(jīng)開始支持它了伪冰。

學(xué)習(xí)編程

學(xué)習(xí)編程包含以下幾個(gè)重要方面:

了解語言的語法

知道那些特性可以使用和何時(shí)使用

寫出可讀性好的代碼

編譯器可以理解誓酒,但是下一個(gè)人是否可以閱讀呢?

在一個(gè)更高層次設(shè)計(jì)結(jié)構(gòu)良好的程序

為了學(xué)習(xí)一門語言,通常我們可以找到叫《X語言編程》的書靠柑。這也形成了一個(gè)潛規(guī)則:當(dāng)你創(chuàng)建一門嚴(yán)肅的語言的時(shí)候寨辩,你需要編寫這樣一本書。學(xué)習(xí)語言有點(diǎn)像學(xué)習(xí)作文歼冰,但這并不意味著你能夠突然變成一個(gè)著名散文作家靡狞!

對于C++,這里有兩本相關(guān)的書:

《C程序設(shè)計(jì)語言》 (Brian W. Kernighan, Denis M. Ritchie, TCPL)隔嫡。這本書不是關(guān)于C++的甸怕,不過所有與C有關(guān)的東西都和C++有關(guān)。例如腮恩,這本書附帶的例子都可以看作C++的例子梢杭,只是不是真正的C,因?yàn)镃++比C的編譯器要求更加嚴(yán)格秸滴。但是大部分編寫良好的C程序都可以在C++下編譯通過武契,TCPL是一本小書,并且被譽(yù)為X語言編程中最好的書籍缸榛。書中每一頁都充滿智慧吝羞。

《C++程序設(shè)計(jì)語言》(Bjarne Stroustrup),一本杰出的書内颗,書中的每一頁同樣充滿智慧钧排。這本書有1400頁。Verity Stob對這本書有熱烈的評論均澳。在TCPL中恨溜,我們讀到的是“C不是一個(gè)大的語言,因此也不需要一本長篇大論的書來講解”找前,但是講解C++的書卻有1400頁糟袁。盡管這本書很難一頁一頁地讀下去(不過,我?guī)缀踝x過了書中的每一頁)躺盛,但是我建議每個(gè)人都擁一本项戴。它講解了C++中的每一個(gè)方面,并且講解得非常不錯(cuò)槽惫。有這本書可以作為C++的參考周叮,你的編程生涯會(huì)受益良多。

我需要聲明一點(diǎn)界斜,《C程序設(shè)計(jì)語言》不是一本學(xué)習(xí)C++的入門書籍仿耽,這本書是用來指導(dǎo)你學(xué)習(xí)的,同時(shí)各薇,《C程序設(shè)計(jì)語言》也單獨(dú)提取了《A Tour of C++ 》篇章项贺。

C++不僅是一門語言,也是指一個(gè)函數(shù)庫。在《C++程序設(shè)計(jì)語言》中也講解了C++標(biāo)準(zhǔn)庫开缎,為了全面了解C++標(biāo)準(zhǔn)庫棕叫,我推薦:

《C++標(biāo)準(zhǔn)程序庫:自修教程與參考手冊》(Nikolai Josuttis),和《C++程序設(shè)計(jì)語言》一樣啥箭,這也是一本大部頭的書谍珊。但是這本書涵蓋了C++標(biāo)準(zhǔn)庫的每一個(gè)方面(同時(shí),也被稱作C++標(biāo)準(zhǔn)模版庫)急侥,第二版中涵蓋了C++2011標(biāo)準(zhǔn)。

如果你之前從事高級(jí)語言比如python侮邀,perl或者java坏怪,C和C++可能讓人生畏。不像其他語言绊茧,C/C++非常接近硬件铝宵。這也有一個(gè)優(yōu)點(diǎn),可以充分利用硬件優(yōu)勢华畏,但也讓你需要面對現(xiàn)實(shí)細(xì)節(jié)鹏秋。Simon Tatham (作為Putty的開發(fā)者和編寫《缺失代碼怪味》的作者而知名,雖然他現(xiàn)在使用C開發(fā))寫了一篇非常棒的文檔:《The Descent to C》亡笑,這會(huì)降低你的學(xué)習(xí)難度侣夷,甚至經(jīng)驗(yàn)豐富的C開發(fā)者也可能受益一二。

如果你讀了上面三本書和鏈接仑乌,你已經(jīng)可以熟練掌握C++了百拓,并且善用C++標(biāo)準(zhǔn)庫。不過晰甚,你還沒有學(xué)習(xí)如何使用和何時(shí)適合使用C++的特性衙传。C++作為一門強(qiáng)大的語言,有句話說:“使用C厕九,你犯錯(cuò)可能砸到自己的腳蓖捶,而使用C++,你犯錯(cuò)可能導(dǎo)致你整條腿都廢了“扁远,這說的都是真的俊鱼。

另外,C++強(qiáng)大之處在于你可以繼續(xù)使用你之前語言的開發(fā)方式穿香⊥ひ“我可以在任何語言中寫編寫FORTRAN代碼”。不過這樣不利于你成為一個(gè)更好的開發(fā)者皮获。

用好C++

這里也有三本書焙蚓,作者都是Scott Meyers,這將大大簡化一個(gè)立志于C++開發(fā)的人的生活:

《Effective C++ 》——列舉了一些常見錯(cuò)誤,有用的特性和編程中需要注意的事項(xiàng)购公。最近更新于2005年萌京。

《More Effective C++》——和上面一樣,不過講述得更多一些宏浩,同樣值得你去閱讀知残。

《Effective STL》——最后更新于2001年,和《Effective C++》一樣比庄,不過關(guān)注于C++標(biāo)準(zhǔn)庫求妹。

如果你只想讀其中一本,選擇《Effective C++》佳窑,如果你想選擇兩本制恍,再選擇《Effective STL》。

需要注意的是神凑,Scott正在準(zhǔn)備一本新的書净神,全面覆蓋了新的C++2014標(biāo)準(zhǔn)(這可以看著是對C++2011標(biāo)準(zhǔn)的改進(jìn),并且當(dāng)前大多數(shù)編譯器已經(jīng)支持了C++2014)溉委。一旦這本書出版鹃唯,你應(yīng)當(dāng)?shù)谝粫r(shí)間購入,本書的預(yù)覽部分已經(jīng)看起來相當(dāng)棒了瓣喊。

更新:許多讀者都推薦了Stanley Lippman的《C++ Primer》坡慌,我不了解這本書,不過它更新了C++2011標(biāo)準(zhǔn)并且收到了很多贊譽(yù)型宝,請告訴我你的觀點(diǎn)八匠。

編寫良好的代碼

下面提到的書都討論了代碼風(fēng)格,如果編寫代碼趴酣,不過它們其實(shí)范圍更廣梨树。指導(dǎo)你如何編寫可讀性好的代碼的書有:

《程序設(shè)計(jì)實(shí)踐》,(Brian W. Kernighan, Rob Pike, TPoP)岖寞,這不是一本特定于C++的書抡四,不過談?wù)摿嗽S多關(guān)于如何組織代碼,何時(shí)優(yōu)化代碼仗谆,何時(shí)不做優(yōu)化指巡,如果調(diào)試和如何編寫代碼避免調(diào)試等等,我覺得每個(gè)開發(fā)組織都應(yīng)該有這樣一本書隶垮。

《Linux內(nèi)核代碼規(guī)范》(Linus Torvalds)藻雪,這也不是一本關(guān)于C++的書,但是在第4節(jié)“命名”狸吞,第六節(jié)“函數(shù)”和第八節(jié)“注釋”中勉耀,我們都可以學(xué)習(xí)到許多指煎。

每個(gè)想要提高其代碼的程序員最好認(rèn)真閱覽《程序設(shè)計(jì)實(shí)踐》的每一頁。

設(shè)計(jì)大規(guī)模的代碼

我只知道一本書講述了這一點(diǎn)便斥,我的一些思想形成也有賴于它至壤。

《Large-Scale C++ Software Design 》(John Lakos),盡管本書有些年頭枢纠,里面的一些建議用于指導(dǎo)當(dāng)初為缺乏存儲(chǔ)并且性能低下的機(jī)器開發(fā)程序的人們像街,從這本書我學(xué)習(xí)了如何將一個(gè)復(fù)雜系統(tǒng)拆解為多個(gè)有意義的模塊。特別需要注意的是在循環(huán)中處理依賴代碼晋渺。那些額外出現(xiàn)的細(xì)節(jié)镰绎,使得你的代碼幾乎不能測試,因?yàn)槊總€(gè)模塊都非常依賴其他模塊些举。

推薦C語言C++學(xué)習(xí)交流群:466572167

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跟狱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子户魏,更是在濱河造成了極大的恐慌,老刑警劉巖挪挤,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叼丑,死亡現(xiàn)場離奇詭異,居然都是意外死亡扛门,警方通過查閱死者的電腦和手機(jī)鸠信,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來论寨,“玉大人星立,你說我怎么就攤上這事≡岬剩” “怎么了绰垂?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長火焰。 經(jīng)常有香客問我劲装,道長,這世上最難降的妖魔是什么昌简? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任占业,我火速辦了婚禮,結(jié)果婚禮上纯赎,老公的妹妹穿的比我還像新娘谦疾。我一直安慰自己,他們只是感情好犬金,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布念恍。 她就那樣靜靜地躺著六剥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪樊诺。 梳的紋絲不亂的頭發(fā)上仗考,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機(jī)與錄音词爬,去河邊找鬼秃嗜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛顿膨,可吹牛的內(nèi)容都是我干的锅锨。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼恋沃,長吁一口氣:“原來是場噩夢啊……” “哼必搞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起囊咏,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤恕洲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后梅割,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霜第,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年户辞,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泌类。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡底燎,死狀恐怖刃榨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情双仍,我是刑警寧澤枢希,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站殊校,受9級(jí)特大地震影響晴玖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜为流,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一呕屎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧敬察,春花似錦秀睛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椭迎。三九已至,卻和暖如春田盈,著一層夾襖步出監(jiān)牢的瞬間畜号,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工允瞧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留简软,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓述暂,卻偏偏與公主長得像痹升,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子畦韭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 本文把程序員所需掌握的關(guān)鍵知識(shí)總結(jié)為三大類19個(gè)關(guān)鍵概念疼蛾,然后給出了掌握每個(gè)關(guān)鍵概念所需的入門書籍,必讀書籍艺配,以及...
    dle_oxio閱讀 11,139評論 6 244
  • 轉(zhuǎn)自http://blog.csdn.net/xugangwen/article/details/44811783...
    扎Zn了老Fe閱讀 12,751評論 1 142
  • Java程序員在入門時(shí)察郁,最痛苦的事情莫過于選擇入門書籍,很多的同學(xué)在會(huì)咨詢我转唉,推薦下應(yīng)該看什么書绳锅。市面上很多人都會(huì)...
    加油小杜閱讀 754評論 2 4
  • 前言 在本文的前半部分我我會(huì)談?wù)?我看過的書,和我個(gè)人的一些理解 酝掩,并且會(huì)提供 C++標(biāo)準(zhǔn)委員會(huì)相關(guān)鏈接 和 C+...
    yche閱讀 5,501評論 5 147
  • 早上好!#幸福實(shí)修#~每天進(jìn)步1%#幸福實(shí)修10班-22號(hào)-@金珠清--富陽 20170817(24/30) 【幸...
    金珠清閱讀 206評論 2 1