標籤:

C++會過時嗎?如果會,大概可以估計幾年後會過時呢?


實際上現在已經出現原有CC++應用領域被不斷蠶食的趨勢了.

拿我擅長的網路伺服器編程領域來說,現在除非對性能要求苛刻的地方,否則首選不會選C系語言了,Java/Py/Go等等都是很好的選擇.原因我看主要還是好的C系程序員現在越來越難找,而很多公司也不願意花太多時間在不停的編譯/找內存泄露等等無關業務的事情耗費時間了.


C++當然會過時,問題的重點是什麼時候。

但是過時是沒有一個明確的定義的,首先要給過時下個定義。

如果我們把 TIOBE排行榜跌出前十定義為過時,就是說C++跌成現在的Perl這個樣子。

那麼這個過程可能需要20年。

操作系統內核無疑是C語言的主場,還有其他直接和硬體打交道的地方也是。

而C++的主場則是應用基礎平台,大型基礎服務,編輯開發工具等

比如,LLVM,Webkit,V8,Visual Studio,Office。

這種軟體的生命周期都超級長,基本都能到20-30年,為了能參與開發維護和定製這類軟體,就能吸引大批工程師學習C++。

如果用其他語言取代C++,那麼重新編寫這類軟體可能也需要至少10年的時間。

C++首先會退出客戶端App開發,目前手機的三大平台都不把C++最為首選語言了,雖然也支持但是是為了實現某些特殊目的而存在的,不算主流了。

然後會退出服務端應用開發,目前除非是追求極端性能,否則新項目首選也很少是C++了。

下一個退出的領域目前還不好預測。


以前什麼東西都用C++來寫,所以覺得C++特別牛逼。現在很多語言都可以專門做一些奇怪的事情了。譬如說我寫那麼多玩具編譯器,覺得他們之間的pattern實在太像了,忍不住要發明一門語言來包括這些pattern,有沒有,有沒有!

於是C++過時的時候大概是一番什麼景象呢?就是幾乎所有領域都有他自己獨特的一門語言,各個領域之間的語言的核心包含了自己的pattern以至於舉一反三越來越難,不像現在什麼語言出來都說自己是general purpose的所以你學會了一門語言就覺得好像其他的都差不多看看語法手冊就行了。於是你們這些人類感覺到自己的腦細胞不夠用了,再過個幾十年,還得回到C++來(想想HLSL、GLSL、CG和微軟的C++/AMP吧)。不過那時候估計會有別的general purpose語言來代替C++?總之不會是現在這些新興的號稱自己是xxx領域的最好的語言這樣的。


首先看一下C++的設計的目的(可以參見TC++PL 4th的1.2節),有一個重要的原則:C++雖然有很高級的抽象機制但不會在性能上妥協,其性能不差於低級(彙編)語言(leave no room for low-level language)。

每個語言都有不同的trade off ,C++追求的是性能,無論何時都會有追求最大利用性能的需求,所以過時遠談不上,但隨著機器性能的不斷提高市場份額會縮小是一定的。


@寫代碼的狸


推薦閱讀:

C++有右值引用以後是否可以直接return 字元串、結構體而無需考慮大量數據複製的性能問題了?
為什麼 C++ 列表初始化時會執行兩次拷貝構造函數?
計算機中缺失MSVCP120D.dll和MSVCR120D.dll怎麼解決?
你有什麼關於Linux下C++並行編程的好書和經驗跟大家分享?
模塊相比於 #include 指令的優點是什麼?

TAG:C |