多位技术专家针对C++展开语言选择之争

[来源] 达内    [编辑] 达内   [时间]2013-03-29

微软的一名工程师Dmitry Kakurin在查看了Linus Torvalds专为Linux内核开发的版本控制软件Gi源代码之后,发现使用的是纯C而非C++,表示不能够理解这种做法,他直言:别拿可移植性说事儿,这是屁话(BS,bullshit)。

  语言之争永远是火药味十足的话题,如果争论的对象换成目标市场有很高重合性的C++(C++培训 ) 和 C++,再有如Linux之父Linus Torvalds这样的旗帜和前辈出来炮轰,那么这样的争论一定会带给我们更多的思考了。

  事情的起因是这样的:微软的一名工程师Dmitry Kakurin在查看了Linus Torvalds专为Linux内核开发的版本控制软件Gi源代码之后,发现使用的是纯C而非C++,表示不能够理解这种做法,他直言:别拿可移植性说事儿,这是屁话(BS,bullshit)。

  Linus Torvalds曾经在十多年前尝试用C++来开发Linux内核,由于种种原因而失败。自那时起他就不时表达对C++的不满,Dmitry Kakurin的话更加引起了Torvalds对C++甚至C++使用者火药味十足的评论:C++是一种恐怖糟糕的(horrible)语言。令它更加恐怖的是,许多不合规范的程序员使用它&&(C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it&&)Linus Torvalds接着说道,使用C++实在是很差劲的选择,最后你会发现无尽的痛苦和低下的效率&&所有关于C++的优越性都是错误的言论&&实际上Linus要阐述的无非是C比C++更好这个观点。

  Dmitry Kakurin旋即对此展开反击,没有C的时候我用汇编编程。然后在C++诞生之前,我转向了C。现在我使用C++和C#,而且不再走回头路。差劲的程序员用任何语言都写不出好程序。但是为了将差劲的贡献者拒之门外这样一个没谱的理由而惩罚优秀的开发者,这简直是胡闹。

  只过了十几分钟,Torvalds便再次回帖,于是双方你一言我一语地展开了不眠不休的争论。

  针对这一争论,《程序员》杂志的技术主编孟岩在博客中以题为《Linux之父话糙理不糙》的文章发表了他的看法,孟岩认为做系统软件开发的时候,重要的是理解系统的运作方式,那些漂亮的抽象手法和高级特性是次要的,但是我个人是愿意用C++的。不过对我来说,Torvalds的话其实是很中肯的,即使是用C++,也要尽可能搞清楚其背后发生的事情,这样在写low level程序的时候才会有把握。

  国内游戏引擎的顶尖高手云风亦在他的博客中以《C 的回归》为题发表了他的观点, Linus 几句话还是说到我的心坎里去,我对这个问题的见解,可以再引用 Linus 的一段话作为收场。如果你想用更花哨的语言,C++绝对是最糟糕的选择。如果想要真正的高级特性,那就选择有垃圾回收或者好的系统集成的,而不是既缺乏C的简约(sparseness)又缺乏C的直接而且没有重要概念的高层绑定(high-level bindings to important concepts)的东西。。

  人邮出版社图灵公司总编刘江先生也在CSDN的博客中也发表了他个人对此事的看法,1. 对于要求性能高的系统编程领域,C++其实未必胜过C,而且事实上,也确实有很多此类项目是选择C作为主要语言的;2. C++目前确实处于一种被夹攻的态势,一方面在企业级系统开发(数据密集、业务规则复杂多变)中,C++已经基本被Java和C#等淘汰出局,另一方面在系统编程和嵌入式等更接近硬件的领域,又遭到C的强烈狙击。

资源下载