C 是一种糟糕的语言 Linux之父炮轰C

2008-02-23 05:40:57来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  Linux之父Linus Torvalds为了Linux内核研发而专门打造的版本控制软件Git已引起了业界的广泛关注。昨天,有一位Dmitry Kakurin老兄在查看了源代码之后,发现使用的是纯C而非C ,表示不可理解,他直言:“别拿可移植性说事儿,这是屁话(BS,bullshit)。“(此外,他还批评Git蛮力地直接操作文本,既啰嗦又易错,而且很难跟上高层代码逻辑。)

  这个BS引起了Torvalds的强烈反应,他用“*YOU* are full of bullshit.“(您才满嘴屁话呢)作为自己反驳的开场白。接着,他先转向了对C 的罕见的火药味十足的炮轰:

  “C 是一种糟糕的(horrible)语言。而且因为有大量不够标准的程式员在使用而使情况更糟,以至于极容易产生彻头彻尾的垃圾(total and utter crap)。老实说,选择C就是为了把C 程式员踢出去。……我有这样的结论,任何喜欢用C 而不是C研发项目的程式员可能都是我希望踢出去的人,免得他们来搞乱我参和的项目。C 会导致很很糟糕的设计选择。您们这些C 程式员总是一上来就用语言的那些‘漂亮的’库特性比如STL、Boost和其他彻头彻尾的垃圾,这可能对您们的程式有所‘帮助’,但是却会导致:

  ——当库无法工作时无穷无尽的折磨(别跟我说什么STL尤其是Boost很稳定而且可移植性很好,那全是屁话,而且一点都不可笑)

  ——低效的抽象编程模型,可能在两年之后您会注意到有些抽象效果不怎么样,但是任何代码已依赖于围绕他设计的‘漂亮’对象模型了,假如不重写应用程式,就无法改正。

  也就是说,使用优秀的、高效的、系统级的和可移植的C 的唯一方式,最终还是限于使用C本身具备的任何特性。项目限制只用C,意味着参和的人不会捣乱,也意味着会得到许多真正懂得底层问题,而不会折腾那些白痴‘对象模型’垃圾的程式员。

  所以,我很抱歉,但是对于Git这样效率是主要目标的软件,C 的所谓长处只是巨大的错误。而我们将看不到这一点的人排除在外却成了一个巨大的附加优势。

  假如您想要用C 写的版本控制系统,去玩Monotone吧。他们确实使用了‘真格的数据库’,使用了‘漂亮的面向对象库’、使用了‘漂亮的C 抽象’。可是说老实话,任何这些对某些电脑专业人士而言富于吸引力的设计决定,其最终结果确是一堆可怕、难以维护的垃圾。”

  Torvalds和Dmitry Kakurin争论继续中。

  对Torvalds的回击,Dmitry反唇相讥:“随着只用C编程的恐龙们逐渐灭绝,您很快就会发现只剩下自己一个人在固执己见。用Git贡献者的数量是说明不了问题的。显然C 研发者也能够贡献C代码。但是以为他们喜欢这种方式,那可就错了。

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

  只过了10几分钟,Torvalds就回贴了:“和您不同的是,我实实在在地给出了不喜欢C 的原因,而且指出了他可能导致的各种问题的一些例子。而您呢,没有给出一条像样的使用C 的理由。事实上,Git比其他软件配置管理软件都要好。而好的品味(taste)和C正是原因之一。

  “这和什么恐龙毫无关系。好的品味永远不会过时。将C和汇编语言相提并论,恰恰说明您对自己所讨论的问题缺乏起码的概念(don't have a friggin idea)。”




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 二级C 重点难点分析:类和对象[1]

下一篇: C 箴言:使用对象管理资源

热门词条
热门标签