我也不太曉得你的判斷依據,不過我先說好了

來源: 2009-05-12 19:01:33 [舊帖] [給我悄悄話] 本文已被閱讀:
首先C++做為提出超過25年的標準,很多方麵已經跟不上時代發展了。最突出的矛盾就是C++嚐試涵蓋過多應用領域,卻沒辦法讓大家脫離繁瑣的語言標準本身。下麵分幾個方麵討論一下:

1. OOP
C++作為第一個實用的OOP Language為行業進步做出了輝煌的貢獻(所謂實用主要是相對於smalltalk),不過C++的OOP畢竟很不純。我個人覺得可以用波爾的原子模型來類比,即大致上建立了可行的模式,但是當需求觸及邊界的時候模型就開始失效。用C++來做大項目,程序員很難專注於OO Modeling本身,需要了解太多所謂的C++ gotchas。當項目進入維護階段的時候這種語言標準本身的先天不足更是噩夢一般的煩擾。
之前的人們是沒有選擇,不過現在立項的新項目大多尋求Ruby, Python之類的腳本語言來做複雜的OO Modeling,輔以C來做核心的數據結構和算法實現。比如Google就遵循C+Python的模式。

2. 語法
C++的語法嚴重偏向imperative。在20年前是沒有任何爭議的東西,不過現代語言都需要在imperative和declarative之前取得一定平衡。具體到使用上,C++太容易出所謂的human mistake,這也使得C++的維護非常困難。當然了,C也是純粹的imperative,不過C是門簡單的小語言,而且有明確的應用場合(核心數據結構/算法優化,嵌入式開發,操作係統底層,驅動等等),而C++應用無所不含卻又很真正難適應需求。所以C的生命力一直頑強。

3. 易用性
這個和語法相關,當然也和別的語言特性相關。總的來說初學者不容易上手是公認的,而且熟練程序員也不容易出效率。

總的來說新項目用到C++的越來越少,cutting edge的用到的就更少了。如果不是在已有code base上開發,大家現在都不傾向於選C++。這就是為什麽我判斷C++已經死的差不多了。就算是0x的幾個諸如smart pointer的標準出來,也很難讓C++再一次具備競爭力。