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

剖析C++的復(fù)雜性的兩種分類方法

開發(fā) 后端
C++的復(fù)雜性有兩種分類辦法,一是分為非本質(zhì)復(fù)雜性和本質(zhì)復(fù)雜性;其中非本質(zhì)復(fù)雜性分為缺陷和陷阱兩類。另一種分類辦法是按照?qǐng)鼍胺诸悺?/div>

下面寫的文章是要介紹從一個(gè)較高的層次去把握C++中的復(fù)雜性。其中最重要的一個(gè)指導(dǎo)思想就是在學(xué)習(xí)的過(guò)程中注意你正學(xué)習(xí)的技術(shù)或細(xì)節(jié)到底是80%場(chǎng)景下的還是20%場(chǎng)景。

因此,當(dāng)你發(fā)現(xiàn)在這個(gè)習(xí)以為常的環(huán)境下居然出現(xiàn)了新的可能性時(shí),你當(dāng)然是會(huì)歡呼雀躍的(比如我當(dāng)年讀《Modern C++ Design》的時(shí)候就有一次從早讀到晚,午飯都沒(méi)吃),然而實(shí)際上呢?

其它語(yǔ)言中也許早就有first-class的支持了,其它語(yǔ)言也許根本不需要這個(gè)慣用法,因?yàn)樗鼈兙蜎](méi)有這些缺陷。此外,從實(shí)踐的角度來(lái)說(shuō),更重要的是,這些“解決方案”也許你平時(shí)編程根本就用不到。

不,我當(dāng)然不是說(shuō)這些補(bǔ)丁方案不重要。正如前面所說(shuō),C++中繁雜的技巧并非空穴來(lái)風(fēng),總有實(shí)際問(wèn)題在背后驅(qū)動(dòng)的。但問(wèn)題是,對(duì)于我們?nèi)粘>幊虂?lái)說(shuō),這些“實(shí)際問(wèn)題”簡(jiǎn)直是八桿子打不著的。犯不著先費(fèi)上80%的勁兒把20%時(shí)候才用到的東西揣在腦子里,用的時(shí)候查文檔或書就行了。

看到這里,塑造C++中特定的心態(tài)哲學(xué)的另一個(gè)原因想必你也已經(jīng)知道了。實(shí)際上,這個(gè)原因才是真正根本的。前面說(shuō)的一個(gè)原因是C++書籍市場(chǎng)(教育)造就的,然而為什么人們喜歡寫這些書呢?進(jìn)一步說(shuō),為什么人們喜歡讀這些書呢?

(我承認(rèn),我也曾經(jīng)讀得津津有味。)答案很簡(jiǎn)單:心理。每個(gè)人都喜歡戴著腳鐐跳舞(事實(shí)8)。認(rèn)識(shí)到這一點(diǎn)不是為了提倡它,而是只有當(dāng)我們認(rèn)識(shí)到自己為什么會(huì)津津有味地去鉆研一堆補(bǔ)丁解決方案的時(shí)候,我們才真正能夠擺脫它們的吸引。

總而言之,C++的復(fù)雜性只是一個(gè)必要條件,并非問(wèn)題的根本癥結(jié)。根本癥結(jié)在于人的心理,每個(gè)人都喜歡戴著腳鐐跳舞,并且以為是“創(chuàng)新”。意識(shí)到這一點(diǎn)之后可以幫我們避免被各種各樣名目繁多的語(yǔ)言細(xì)節(jié)和技巧占去不必要的時(shí)間。

然而,C++的復(fù)雜性始終是一個(gè)不可回避的現(xiàn)實(shí)。C++中有大量的陷阱和缺陷,后者導(dǎo)致了數(shù)目驚人的慣用法和workarounds。不加選擇的全盤預(yù)先學(xué)習(xí),是非常糟糕的做法,不僅低效,而且根本沒(méi)有必要,實(shí)在是浪費(fèi)生命。

愛因斯坦曾經(jīng)說(shuō)過(guò),“我只想知道‘他’(宇宙)的設(shè)計(jì)理念,其它的都是細(xì)節(jié)”。然而,正如另一些讀者指出的,如果對(duì)C++中的這些細(xì)節(jié)事先一點(diǎn)都沒(méi)有概念的話,那么實(shí)際編碼中一旦遇到恐怕就變成沒(méi)頭蒼蠅了,也許到哪里去RTFM都不知道。這也是為什么那么多C++面試都會(huì)不厭其煩地問(wèn)一些有代表性的語(yǔ)言細(xì)節(jié)的原因。

把細(xì)節(jié)全盤裝在腦子里固然不好,但對(duì)細(xì)節(jié)一無(wú)所知同樣也不是個(gè)辦法。那么對(duì)于C++程序員來(lái)說(shuō),在學(xué)習(xí)中究竟應(yīng)該以怎樣的態(tài)度和學(xué)習(xí)方法來(lái)對(duì)付C++的復(fù)雜性呢?其實(shí)答案也非常簡(jiǎn)單。

首先有一些很重要&必須的語(yǔ)言細(xì)節(jié)&特性是需要掌握的,然后我們只需知道在C++中大抵有哪些地方有復(fù)雜性(陷阱、缺陷),那么遇到問(wèn)題的時(shí)候自然能夠知道到哪兒去尋找答案了。具體的建議在后文。 #t#

本來(lái)這一節(jié)是打算做成一個(gè)C++復(fù)雜性索引的,然而一來(lái)C++的復(fù)雜性太多,二來(lái)網(wǎng)上其實(shí)已經(jīng)有許多資料(比如Bjarne Stroustrup本人的C++ Technical FAQ就是一個(gè)很好的文檔),加上市面上的大多數(shù)C++書里面也不停的講語(yǔ)言細(xì)節(jié);因此實(shí)際上我們不是缺乏資料,而是缺乏一種索引這些資料的辦法,以及一種掌控這些復(fù)雜性的模塊化思維方法。

由于以上原因,這里并不詳細(xì)羅列C++的復(fù)雜性,而是提供一個(gè)分類標(biāo)準(zhǔn)。 C++的復(fù)雜性有兩種分類辦法,一是分為非本質(zhì)復(fù)雜性和本質(zhì)復(fù)雜性;其中非本質(zhì)復(fù)雜性分為缺陷和陷阱兩類。另一種分類辦法是按照?qǐng)鼍胺诸悾簬?kù)開發(fā)場(chǎng)景下的復(fù)雜性和日常編碼的復(fù)雜性。從從事日常編碼的實(shí)踐者的角度來(lái)說(shuō),采用后一種分類可以讓我們迅速掌握80%場(chǎng)景下的復(fù)雜性。

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

2010-01-27 15:50:23

C++復(fù)雜性

2010-01-13 18:49:54

C++的復(fù)雜性

2010-09-17 09:37:27

Java安裝方法

2010-01-13 15:41:02

C++的復(fù)雜

2017-06-23 08:45:02

存儲(chǔ)技術(shù)復(fù)雜性

2010-03-11 14:34:47

Python環(huán)境

2010-01-21 17:30:12

C++復(fù)雜

2009-01-20 15:23:33

存儲(chǔ)安全密鑰數(shù)據(jù)保護(hù)

2019-05-13 15:47:29

Kubernetes云計(jì)算云復(fù)雜性

2010-03-02 10:59:04

2010-02-01 10:22:51

C++數(shù)據(jù)指針

2012-12-26 10:53:26

2020-03-24 09:52:34

大數(shù)據(jù)IT技術(shù)

2019-11-23 23:30:55

Python數(shù)據(jù)結(jié)構(gòu)時(shí)間復(fù)雜性

2019-07-29 12:35:15

云計(jì)算復(fù)雜性云計(jì)算平臺(tái)

2011-05-24 09:18:59

C++連接mysql數(shù)據(jù)庫(kù)

2009-07-22 15:50:36

J#和C++ASP.NET

2025-04-07 01:11:00

右值C++泛型

2020-06-15 09:58:23

云計(jì)算云安全數(shù)據(jù)

2011-04-25 09:53:31

C++mysql
點(diǎn)贊
收藏

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