偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

詳述C++庫(kù)的使用與維護(hù)工作

開(kāi)發(fā) 后端
學(xué)習(xí)C++庫(kù)兩個(gè)主要原因:一,了解底層知識(shí)有助于寫(xiě)出高效的代碼。二,C++這樣的接近硬件的語(yǔ)言為了降低語(yǔ)言抽象的效率懲罰。

C++擁有很多現(xiàn)代的、令人激動(dòng)的語(yǔ)言特性,例如模板、泛型編程等。在這一點(diǎn)上,C#和Java也在迅速跟進(jìn),學(xué)好C++基本上也意味著可以學(xué)好任一種其他的高級(jí)程序設(shè)計(jì)語(yǔ)言,好吧,那么本章先從C++庫(kù)的問(wèn)題進(jìn)行說(shuō)明介紹。

在語(yǔ)言設(shè)計(jì)上作了很多折衷,比如內(nèi)建的有限精度整型和浮點(diǎn)型,比如指針。這就意味著,用這類(lèi)語(yǔ)言編程容易掉進(jìn)Joel所謂的“抽象漏洞”,需要你在語(yǔ)言提供的抽象層面之下去思考并解決遇到的問(wèn)題,此時(shí)的底層知識(shí)便能幫上大忙。

因此,一本從程序員(而不是電子工程師)的角度去介紹底層知識(shí)的書(shū)會(huì)非常有幫助——這就是推薦《Computer Systems:A Programmers Perspective》(以下簡(jiǎn)稱(chēng)CSAPP)(中譯本《深入理解計(jì)算機(jī)系統(tǒng)》)的原因。 #t#

另一方面,C++不同于C的一個(gè)關(guān)鍵地方就在于,C++在完全保留有C的高效的基礎(chǔ)上,增添了抽象機(jī)制。而所謂的“現(xiàn)代C++風(fēng)格”便是倡導(dǎo)正確利用C++的抽象機(jī)制和這些機(jī)制構(gòu)建出來(lái)的現(xiàn)代C++庫(kù)(以STL為代表)的,Bjarne也很早就倡導(dǎo)將C++當(dāng)作一門(mén)不同于C的新語(yǔ)言來(lái)學(xué)習(xí)。

(就拿內(nèi)存管理來(lái)說(shuō),使用現(xiàn)代C++的內(nèi)存管理技術(shù),幾乎可以完全避免new和delete),因此,一本從這個(gè)思路來(lái)介紹C++的入門(mén)書(shū)籍是非常必要的——這就是推薦《Accelerated C++》的原因(以下簡(jiǎn)稱(chēng)AC++)?!禔ccelerated C++》的作者Andrew Koenig是C++標(biāo)準(zhǔn)化過(guò)程中的核心人物之一。

C++是在C語(yǔ)言大行其道的歷史背景下發(fā)展起來(lái)的,在一開(kāi)始以及后來(lái)的相當(dāng)長(zhǎng)一段時(shí)間內(nèi),C++是C的超集,所有C的特性在C++里面都有,因此導(dǎo)致了大量后來(lái)的C++入門(mén)書(shū)籍都從C講起。

實(shí)際上,這是一個(gè)誤導(dǎo),因?yàn)?FONT size=+0>C++雖然是C的超集,然而用抽象機(jī)制擴(kuò)展C語(yǔ)言的重大意義就在于用抽象去覆蓋C當(dāng)中裸露的種種語(yǔ)言特性,讓程序員能夠在一個(gè)更自然的抽象層面上編程。

比如你不是用int*加一個(gè)數(shù)組大小n來(lái)表示一個(gè)數(shù)組,而是用可自動(dòng)增長(zhǎng)的vector;比如你不是用malloc/free,而是用智能指針和RAII技術(shù)來(lái)管理資源;

比如你不是用一個(gè)只包含數(shù)據(jù)的結(jié)構(gòu)體加上一組函數(shù)來(lái)做一個(gè)暴露的類(lèi),而是使用真正的ADT。比如你不是使用second-class的返回值來(lái)表達(dá)錯(cuò)誤,而是利用first-class的語(yǔ)言級(jí)異常機(jī)制等等。然而,C畢竟是C++的源頭。

剝開(kāi)C++庫(kù)的抽象外衣,底層仍然還是C;而且,更關(guān)鍵的是,在實(shí)際編碼當(dāng)中,有時(shí)候還的確要“C”一把,比如在模塊級(jí)的二進(jìn)制接口封裝上。Bjarne也說(shuō)過(guò),OO/GP這些抽象機(jī)制只有用在合適的地方才是合適的。

當(dāng)人們手頭有的是錘子的時(shí)候,很容易把所有的目標(biāo)都當(dāng)成釘子,有時(shí)候C的確能夠提供簡(jiǎn)潔高效的解決方案,比如C標(biāo)準(zhǔn)庫(kù)里面的printf和fopen(此例受云風(fēng)的啟發(fā))的使用界面就是典型的例子。

簡(jiǎn)而言之,理解C語(yǔ)言的精神不僅有助于更好地理解C++,更理性地使用C++,而且也有其實(shí)踐意義——這就是推薦《The C Programming Language》(以下簡(jiǎn)稱(chēng)TCPL)的原因。此外,建議在閱讀《Accelerated C++庫(kù)》之前先閱讀《The C Programming Language》。

因?yàn)椋?,《The C Programming Language》非常薄。二,如果你帶著比較的眼光去看問(wèn)題,看完《The C Programming Language》再看《Accelerated C++》,你便會(huì)更深刻的理解C++語(yǔ)言引入抽象機(jī)制的意義和實(shí)際作用。

責(zé)任編輯:chenqingxiang 來(lái)源: 天極
相關(guān)推薦

2010-01-12 14:16:31

Visual C++語(yǔ)

2010-01-11 13:19:24

C++代碼

2009-11-27 17:06:24

2010-01-07 18:32:38

JSON

2010-01-11 16:59:50

C++源代碼

2010-01-26 15:51:06

C++變量

2010-01-14 15:46:27

C++標(biāo)準(zhǔn)庫(kù)

2012-09-05 09:04:36

C++SQLite

2009-01-11 10:23:00

2010-01-15 19:49:04

C++類(lèi)庫(kù)

2010-01-15 19:49:04

C++類(lèi)庫(kù)

2015-05-13 09:57:14

C++靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)

2010-01-08 16:00:46

C++編譯器

2010-01-25 15:55:50

托管C++

2024-01-24 12:30:18

C++開(kāi)發(fā)庫(kù)

2022-02-09 15:24:06

SwiftC++開(kāi)發(fā)者

2010-01-27 15:58:35

C++數(shù)據(jù)結(jié)構(gòu)

2011-03-15 13:25:41

Oracle數(shù)據(jù)庫(kù)管理員維護(hù)

2011-07-01 14:55:28

Qt QML C++

2011-05-05 13:47:46

微型投影機(jī)
點(diǎn)贊
收藏

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