我也不太晓得你的判断依据,不过我先说好了
首先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++再一次具备竞争力。
乱弹
2009-05-12 19:22:59你说得似乎都在点子上, 应该是高手。 我不太写程序。