C++的明天是否會(huì)依舊輝煌?
語(yǔ)言的發(fā)展是一個(gè)過(guò)程,C++語(yǔ)言過(guò)于復(fù)雜,經(jīng)歷了長(zhǎng)年的演變,直到現(xiàn)在。從而一個(gè)非常有趣也很尖銳的問(wèn)題誕生了:“C++的明天是否會(huì)依舊?”這是很多人都關(guān)心的一個(gè)問(wèn)題。
這個(gè)問(wèn)題是有解的。沒(méi)有哪個(gè)語(yǔ)言會(huì)成為永恒,不是嗎?(盡管C語(yǔ)言現(xiàn)在依舊生機(jī)勃勃)我不希望C++在2017年,或者甚至在2057年也依然那么有活力。在計(jì)算機(jī)行業(yè),50年已經(jīng)是一個(gè)幾乎不可思議的時(shí)間了;雖然到07年為止,晶體管已有60年的歷史。所以,在我問(wèn)“C++的未來(lái)在哪里?”這個(gè)問(wèn)題的時(shí)候,實(shí)際上是想問(wèn)在接下來(lái)的10年,20年或者30年,C++會(huì)有什么變化?
Bjarne Stroustrup發(fā)布的一篇關(guān)于C++的論文,和Alexander Stepanov關(guān)于C++底層機(jī)器模型的訪談。
然后他指出,盡管C++作為一門語(yǔ)言一直關(guān)注性能的問(wèn)題,但根據(jù)Herb Sutter在2005年發(fā)表的一篇關(guān)于并發(fā)的趨勢(shì)以及語(yǔ)言必須演進(jìn)以迎接這些挑戰(zhàn)的論文,由于工藝的限制,底層硬件的發(fā)展現(xiàn)在處于一個(gè)不穩(wěn)定的狀態(tài)。Stephan說(shuō):
在C++改變***的核心語(yǔ)言屬性列表中,應(yīng)該包括可變參數(shù)模板(Variadic Template)、概念和左值引用(rvalue reference)等。前兩個(gè)會(huì)使得寫(xiě)模板更加有趣,這當(dāng)然很好,因?yàn)槟0迨巧a(chǎn)高效代碼的一個(gè)很有力的方法。另外,第三個(gè)主要面向C++03中最為薄弱的領(lǐng)域之一——復(fù)制數(shù)值的趨勢(shì)。
一個(gè)叫Jared的評(píng)論者也同意Stephan的觀點(diǎn),但對(duì).NET能否像C++那么長(zhǎng)盛不衰,沒(méi)有太大的信心:
說(shuō)得好,但是我相信C++會(huì)一直興盛到2057年。實(shí)際上我認(rèn)為C++會(huì)比.NET撐得更久。(我認(rèn)為.NET最終會(huì)因?yàn)槭袌?chǎng)驅(qū)動(dòng)而成為一個(gè)技術(shù)實(shí)體,但不好說(shuō))
Jim Grow不同意關(guān)于托管C++沒(méi)有像其他.NET語(yǔ)言引起別人注意的論點(diǎn):
看上去C++將會(huì)被打入冷宮,只有幾個(gè)頑固不化的分子堅(jiān)守陣地,大部分人都已轉(zhuǎn)投.NET編碼陣營(yíng)。因?yàn)镃++和現(xiàn)代的工具集那么地不合拍,公司和開(kāi)發(fā)人員在無(wú)路可走的時(shí)候才會(huì)選擇它。真的好慘,C++本來(lái)可以是.NET平臺(tái)上的一個(gè)非常優(yōu)秀的語(yǔ)言。可悲地是,有些人卻別有動(dòng)機(jī),說(shuō).NET開(kāi)發(fā)人員都在使用其他的語(yǔ)言。
Olivier Giroux擔(dān)憂的是C++內(nèi)存模型在未來(lái)的表現(xiàn):
在單個(gè)芯片里同時(shí)運(yùn)行100多個(gè)線程的性能,和只運(yùn)行2到8個(gè)的情況是非常不同的,盡管你知道將來(lái)的趨勢(shì)是可以做到的。
因?yàn)橛凶銐蚨嗟木€程同時(shí)運(yùn)行,指令就非常充足,你可以將已有的指令全都塞滿。很快,阿姆達(dá)爾定律(譯者注:該定律指出在體系結(jié)構(gòu)的優(yōu)化設(shè)計(jì)過(guò)程中,應(yīng)該挑選對(duì)整體有重大影響的部件來(lái)進(jìn)行優(yōu)化,以得到更好的結(jié)果。)就把你牢牢拴在內(nèi)存接口處。在過(guò)去,我們用緩存設(shè)計(jì)解決這樣的問(wèn)題,但那要比一個(gè)超線程負(fù)載需要更多的分部一致性。
所以,C++在性能方面***的威脅可能來(lái)自硬件,因?yàn)橥ㄟ^(guò)C++現(xiàn)在提供的內(nèi)存模型還不容易對(duì)其進(jìn)行相應(yīng)的編程工作。
那么,您對(duì)于C++作為一門語(yǔ)言的前景是如何理解的呢?它是會(huì)繼續(xù)昂首上前,還是即將輝煌不再?
【編輯推薦】
- 如何更好學(xué)習(xí)C++ ——及C++學(xué)習(xí)方法總結(jié)
- 條款01:視C++ 為一個(gè)語(yǔ)言聯(lián)邦
- 玩轉(zhuǎn)C++ 托管技術(shù)簡(jiǎn)介
- 帶您尋求Visual C++ 6.0的奧秘