2007年9月10日星期一

回应: Linux之父炮轰C++:"糟糕程序员的垃圾语言"

涉及到编程语言之争的帖子,在CSDN上一定会吵得不可开交,这不:
"Linux之父Linus Torvalds为了Linux内核开发而专门打造的版本控制软件Git已经引起了业界的广泛关注。昨天,有一位Dmitry Kakurin老兄在查看了源代码之后,发现使用的是纯C而非C++,表示不可理解,他直言:“别拿可移植性说事儿,这是屁话(BS,bullshit)。“(此外,他还批评Git蛮力地直接操作文本,既啰嗦又易错,而且很难跟上高层代码逻辑。)这个BS引起了Torvalds的强烈反应,他用*YOU* are full of bullshit.“(你才满嘴屁话呢)作为自己反驳的开场白。接着,他先转向了对C++的罕见的火药味十足的炮轰..."
从几年的实践来看,我觉得从面向对象这个角度来看,C++很好,但C++这个东西太复杂,太容易导致错误,用上几个模版后,编译时搞出一大堆不知所云的信息也是常事。俺是觉得C++写的东西很容易变得不可维护,尤其是有C++"高手"加入以后。而且印象中用C++做出来的可重用的库比较少。

大 家都说“我们在没有掌握得好的时候,不妨只用我们了解的那些特性。那些高级特性并不妨碍,你可以不用啊”,但这都是从单独一个人的角度来说的。放到一个团 队来说,你的队伍中有C++高手,有新手,还有更多的半生不熟的人,怎么办?Linus的考虑也是从这个角度出发的,就算你Dmitry Kakurin很懂C++,不会出什么问题,能写出漂亮的代码,但其他人怎么维护你的代码?


不过俺没有帖子里面各位这么确信,对很多事物都抱着一种敬畏的态度,因为我不知道是不是本人不够聪明,没有认识到C++的各个方面。



刚 才我统计了一下sourceforge.net上用C++和C的项目数,以及各自的处于stable和mature阶段的项目数。


































total stable mature
C++ 22462 4326(19.26%) 427(1.90%)
C 19623 4792(24.42%) 615(3.13%)
Java 26454 5097(19.27%) 353(1.33%)
Python 7224 1287(17.81%) 109(1.5%)

从总数上看似乎C++更适合大家写东西,但从stable和mature项目比率上看似乎C项目更容易稳定和成熟,可维护性高些。

不过也许这不能说明什么,因为sf.net上只是些开源软件,上面各位又说C++在windows上应用普遍,而windows上素来没有多少开源传统。又或者商业软件又有不同。各位自己乱炖吧。

参考:

没有评论: