Stephan Lavavej提出了一個非常有趣也很尖銳的問題:“C++的未來在哪裡?”
這個問題是有解的。沒有哪個語言會成為永恆,不是嗎?(盡管C語言現在依舊生機勃勃)我不希望C++在2017年,或者甚至在2057年也依然那麼有活力。在計算機行業,50年已經是一個幾乎不可思議的時間了;雖然到今年為止,晶體管已有60年的歷史。所以,在我問“C++的未來在哪裡?”這個問題的時候,實際上是想問在接下來的10年,20年或者30年,C++會有什麼變化?
在文章中,Stephan引經據典,提到了Bjarne Stroustrup發布的一篇關於C++的論文,和Alexander Stepanov關於C++底層機器模型的訪談。
然後他指出,盡管C++作為一門語言一直關注性能的問題,但根據Herb Sutter在2005年發表的一篇關於並發的趨勢以及語言必須演進以迎接這些挑戰的論文,由於工藝的限制,底層硬件的發展現在處於一個不穩定的狀態。Stephan說:
在C++改變最大的核心語言屬性列表中,應該包括可變參數模板(Variadic Template)、概念和左值引用(rvalue reference)等。前兩個會使得寫模板更加有趣,這當然很好,因為模板是生產高效代碼的一個很有力的方法。另外第三個主要面向C++03中最為薄弱的領域之一——復制數值的趨勢。
一個叫Jared的評論者也同意Stephan的觀點,但對.NET能否像C++那麼長盛不衰,沒有太大的信心:
說得好,但是我相信C++會一直興盛到2057年。實際上我認為C++會比.NET撐得更久。(我認為.NET最終會因為市場驅動而成為一個技術實體,但不好說)
Jim Grow不同意關於托管C++沒有像其他.NET語言引起別人注意的論點:
看上去C++將會被打入冷宮,只有幾個頑固不化的分子堅守陣地,大部分人都已轉投.NET編碼陣營。因為C++和現代的工具集那麼地不合拍,公司和開發人員在無路可走的時候才會選擇它。真的好慘,C++本來可以使.NET平台上的一個非常優秀的語言。可悲地是,有些人卻別有動機,說.NET開發人員都在使用其他的語言。
Olivier Giroux擔憂的是C++內存模型在未來的表現:
在單個芯片裡同時運行100多個線程的性能,和只運行2到8個的情況是非常不同的,盡管你知道將來的趨勢是可以做到的。
因為有足夠多的線程同時運行,指令就非常充足,你可以將已有的指令全都塞滿。很快,阿姆達爾定律(譯者注:該定律指出在體系結構的優化設計過程中,應該挑選對整體有重大影響的部件來進行優化,以得到更好的結果。)就把你牢牢拴在內存接口處。在過去,我們用緩存設計解決這樣的問題,但那要比一個超線程負載需要更多的分部一致性。
所以,C++在性能方面最大的威脅可能來自硬件,因為通過C++現在提供的內存模型還不容易對其進行相應的編程工作。
那麼InfoQ中文站的讀者對於C++作為一門語言的前景是如何理解的呢?它是會繼續昂首上前,還是即將輝煌不再?