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

我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站設(shè)計、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、方城ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的方城網(wǎng)站制作公司
因此,當(dāng)你發(fā)現(xiàn)在這個習(xí)以為常的環(huán)境下居然出現(xiàn)了新的可能性時,你當(dāng)然是會歡呼雀躍的(比如我當(dāng)年讀《Modern C++ Design》的時候就有一次從早讀到晚,午飯都沒吃),然而實際上呢?
其它語言中也許早就有first-class的支持了,其它語言也許根本不需要這個慣用法,因為它們就沒有這些缺陷。此外,從實踐的角度來說,更重要的是,這些“解決方案”也許你平時編程根本就用不到。
不,我當(dāng)然不是說這些補丁方案不重要。正如前面所說,C++中繁雜的技巧并非空穴來風(fēng),總有實際問題在背后驅(qū)動的。但問題是,對于我們?nèi)粘>幊虂碚f,這些“實際問題”簡直是八桿子打不著的。犯不著先費上80%的勁兒把20%時候才用到的東西揣在腦子里,用的時候查文檔或書就行了。
看到這里,塑造C++中特定的心態(tài)哲學(xué)的另一個原因想必你也已經(jīng)知道了。實際上,這個原因才是真正根本的。前面說的一個原因是C++書籍市場(教育)造就的,然而為什么人們喜歡寫這些書呢?進一步說,為什么人們喜歡讀這些書呢?
(我承認(rèn),我也曾經(jīng)讀得津津有味。)答案很簡單:心理。每個人都喜歡戴著腳鐐跳舞(事實8)。認(rèn)識到這一點不是為了提倡它,而是只有當(dāng)我們認(rèn)識到自己為什么會津津有味地去鉆研一堆補丁解決方案的時候,我們才真正能夠擺脫它們的吸引。
總而言之,C++的復(fù)雜性只是一個必要條件,并非問題的根本癥結(jié)。根本癥結(jié)在于人的心理,每個人都喜歡戴著腳鐐跳舞,并且以為是“創(chuàng)新”。意識到這一點之后可以幫我們避免被各種各樣名目繁多的語言細(xì)節(jié)和技巧占去不必要的時間。
然而,C++的復(fù)雜性始終是一個不可回避的現(xiàn)實。C++中有大量的陷阱和缺陷,后者導(dǎo)致了數(shù)目驚人的慣用法和workarounds。不加選擇的全盤預(yù)先學(xué)習(xí),是非常糟糕的做法,不僅低效,而且根本沒有必要,實在是浪費生命。
愛因斯坦曾經(jīng)說過,“我只想知道‘他’(宇宙)的設(shè)計理念,其它的都是細(xì)節(jié)”。然而,正如另一些讀者指出的,如果對C++中的這些細(xì)節(jié)事先一點都沒有概念的話,那么實際編碼中一旦遇到恐怕就變成沒頭蒼蠅了,也許到哪里去RTFM都不知道。這也是為什么那么多C++面試都會不厭其煩地問一些有代表性的語言細(xì)節(jié)的原因。
把細(xì)節(jié)全盤裝在腦子里固然不好,但對細(xì)節(jié)一無所知同樣也不是個辦法。那么對于C++程序員來說,在學(xué)習(xí)中究竟應(yīng)該以怎樣的態(tài)度和學(xué)習(xí)方法來對付C++的復(fù)雜性呢?其實答案也非常簡單。
首先有一些很重要&必須的語言細(xì)節(jié)&特性是需要掌握的,然后我們只需知道在C++中大抵有哪些地方有復(fù)雜性(陷阱、缺陷),那么遇到問題的時候自然能夠知道到哪兒去尋找答案了。具體的建議在后文。 #t#
本來這一節(jié)是打算做成一個C++復(fù)雜性索引的,然而一來C++的復(fù)雜性太多,二來網(wǎng)上其實已經(jīng)有許多資料(比如Bjarne Stroustrup本人的C++ Technical FAQ就是一個很好的文檔),加上市面上的大多數(shù)C++書里面也不停的講語言細(xì)節(jié);因此實際上我們不是缺乏資料,而是缺乏一種索引這些資料的辦法,以及一種掌控這些復(fù)雜性的模塊化思維方法。
由于以上原因,這里并不詳細(xì)羅列C++的復(fù)雜性,而是提供一個分類標(biāo)準(zhǔn)。 C++的復(fù)雜性有兩種分類辦法,一是分為非本質(zhì)復(fù)雜性和本質(zhì)復(fù)雜性;其中非本質(zhì)復(fù)雜性分為缺陷和陷阱兩類。另一種分類辦法是按照場景分類:庫開發(fā)場景下的復(fù)雜性和日常編碼的復(fù)雜性。從從事日常編碼的實踐者的角度來說,采用后一種分類可以讓我們迅速掌握80%場景下的復(fù)雜性。
名稱欄目:剖析C++的復(fù)雜性的兩種分類方法
網(wǎng)頁網(wǎng)址:http://fisionsoft.com.cn/article/ccopcig.html


咨詢
建站咨詢
