自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

***個(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ā)的人的生活:

  1. Effective C++ 》——列舉了一些常見錯(cuò)誤,有用的特性和編程中需要注意的事項(xiàng)。最近更新于2005年。
  2. More Effective C++》——和上面一樣,不過講述得更多一些,同樣值得你去閱讀。
  3. 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í)間購入,本書的預(yù)覽部分已經(jīng)看起來相當(dāng)棒了。

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

編寫良好的代碼

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

  1. 程序設(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)該有這樣一本書。
  2. 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è)模塊都非常依賴其他模塊。

***,祝學(xué)習(xí)C++的童鞋進(jìn)步!

原文鏈接: bert hubert   翻譯: 伯樂在線 - 周昌鴻

譯文鏈接: http://blog.jobbole.com/61308/

責(zé)任編輯:林師授 來源: 伯樂在線
相關(guān)推薦

2011-07-05 13:24:03

C++

2010-01-27 09:38:27

C++書籍

2011-11-11 16:02:39

2009-08-13 16:41:12

C#結(jié)構(gòu)

2010-05-28 14:44:42

Linux開發(fā)工具

2021-05-11 22:24:56

C++符號(hào)Tab

2011-07-10 15:26:54

C++

2009-07-30 18:49:31

C#時(shí)間類型

2019-05-24 09:04:31

C++編程語言開發(fā)

2015-05-25 15:11:53

C#最佳書籍

2017-10-23 12:22:58

Android編程基礎(chǔ)總結(jié)

2009-08-12 11:20:51

C#運(yùn)算符重載

2009-08-06 16:01:30

C#接口成員

2009-08-19 16:59:25

C# 操作符

2012-01-18 10:13:50

Objective-CiOSself

2015-08-27 10:49:43

JavaScript開發(fā)框架

2011-08-04 13:55:10

Cocoa Objective- 文件

2009-08-13 09:49:16

C#關(guān)鍵字

2018-02-04 22:29:21

iOS開發(fā)

2014-05-13 09:55:13

iOS開發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)