2012,C++,學,還是不學?

openkk 12年前發布 | 13K 次閱讀 C/C++

賴勇浩近期的一篇博客引起社區內熱烈討論。他在其中認為:C++是 2012 年不宜進入的三個技術點之一;其他兩個是:ActionScript/MXML線程

賴勇浩對于“不宜進入”的定義是:

如果你現在不是這三個技術點的專家,并且手上沒有使用這三個技術點的項目,進入這三個技術點僅為技術儲備,那么就“不宜進入”。

至于為什么不宜進入,賴勇浩認為根本原因在于:

標準化過程中的超長流程,一次次將 C++ 推向深淵。

接下來,賴勇浩首先回顧了 20 世紀 90 年代:

其實在 90 年代,計算機的運算能力有限,市場上非常需要一款性能較高、抽象較強的編程語言,C++ 獲得了成功,但它標準化的時間過長,造成各種編譯器有各自互不兼容的“方言”,成了它的第一個軟肋。

然后,賴勇浩又指出:“C++ 在 21 世紀的第一個十年里仍然地位穩固”,其原因在于:“Linux 和 MacOS X 大獲成功,在這兩個平臺上 C++ 都是非常有競爭力的編程語言,C++ 自然水漲船高。”

但是,賴勇浩提出開發效率成為阻擋更多人采用 C++ 的另一個因素:

但隨著 web2.0 和 web app 概念的興起,以及 CPU 的主頻進一步提升,服務器端編程語言漸漸地對執行效率不再敏感,而是更在意程序員的開發效率,眾多的腳本語言開始蠶食 C++ 的市場份額??新興的貴族是動態語言。面對動態語言在開發效率上的強勁挑戰,C++ 社區除了在 2003 年對 C++98 做了小小的 patch,基本上睡著了,完全沒有應對之策,哦不,連應用的姿態都沒有。

在賴勇浩看來,

進入 21 世紀的第二個十年,??在這個十年,我們需要這樣的編程語言:
  1. 能充分利用現代 CPU 的計算能力,不僅僅是多個核心,更是巨大的 L1/L2/L3 Cache、超線程等;
  2. 能夠大量減小異步 I/O 的性能提升的同時帶來的副作用:異步編程的復雜性以及對可維護性的傷害
兩句話其實也可以壓縮為一句:需要有更好的并發模型的語言。

上述主要針對服務器編程領域,在桌面和移動領域,賴勇浩認為:

rust 會進入桌面開發,google go 肯定會順道啃一口。而移動設備方面,??編譯型語言加腳本的模式就會占大頭??C++還是前景堪憂。

最后,賴勇浩的總結是:

回首 C++ 的 30 年,展望它的未來,總結起來可能就是:標準化流程拖死人了。如果不是 15 年不能標準化,java/c# 的攪局可能不會出現;如果在 2005 年能夠應對動態語言……如果云時代有更好的并發模型……

對于賴勇浩的觀點,知乎上有人提出質疑,知名 C++ 程序員陳碩做出了回應,他認為:

C++目前堅守的陣地:服務端基礎架構(例如淘寶 OceanBase 是 C++ 寫的),PC 客戶端的 3D 游戲(DirectX 是提供 COM/C++接口),某些嵌入式上的(準/軟)實時程序,其他 Java/C#/Python 未能涉足的領域(會遇到C的抵抗)。如果你正好在這幾個領域,我看不出有擔心的必要。

陳碩還指出:

C++目前仍然是最快的語言(見 google language benchmark 論文和 shootout.alioth.debian.org/)。如果你的應用領域確實在乎這個性能??那么 C++ 仍然是不二之選。

技術博客酷殼的博主陳皓對此次討論也發表了一篇博客《Why C++ ? 王者歸來》,他在其中引用了 Herb Sutter 的一次演講,Herb Sutter 是 Exceptional C++C++ Coding Standards 的作者、ISO C++ 委員會的主席、C++/CLI 首席架構師、Microsoft 的軟件架構師。這次演講是C++ and Beyond 2011上的一次公開演講。

陳皓在文中摘取了本次演講的幻燈片,并做了一些注釋和內容提要。 他首先指出:

為什么C++?因為 Performance per $,也就是說 performance 就是錢,這個分成三個方面,

  • 耗電,芯片的耗電量,移動設備的耗電量,家用電腦的耗電量都和錢有關系。
  • 資源,家用電腦和移動設備上的處理器資源有限,因為要讓一般消費者買的起。
  • 體驗,在更小的設備上會有更好的體驗,有更好的體驗就可以掙更多的錢。

此后,他也回顧了 C++ 的歷史,并借助幻燈片中的一張表格指出:

如果把我們的對編程語言的需求總結為四個: 效率,靈活,抽象,生產率。那么,C語言玩的是前兩個,而 C++ 玩的是前三個,Java 和 C# 玩的是后兩個(抽象和生產率)

任保一種設計都不可能讓你什么都要的,這就是 Trade-Off——什么事都需要交換的。

接下來,陳皓從移動設備、數據中心兩個角度,說明了 C++ 的性能效率的重要性,同時還指出:

當然,不是 C++ 不注重開發效率,看看C++0X 的標準引入了多少東西我們就知道了。但是本質上,C++還是致力于性能和抽象的完全平衡

來自: InfoQ

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!