家居装修知识网

首页 装修资讯 家居知识 家居百科
当前位置 >> 家居知识 Linux之父炮轰C++是糟糕程序员的垃圾语言

Linux之父炮轰C++是糟糕程序员的垃圾语言 2011-04-24

https://m.biud.com.cn 2011年04月24日07:32 家居装修知识网  


   这场争论的主角之一,微软的Dmitry Kakurin有一句话特别准确:“这是一种信仰问题。因此,任何讲道理和争论都会无穷无尽,而且也毫无意义……”

我想,准确的态度,应当是从高手们的争论中汲取营养,提高和深化自己对相关语言的认识,结合自己的实际环境,想想应当怎么学,怎么用。孟岩和云风、 pongba在这方面都有“有营养的”文字,大家可以看看。

各种语言都是有自己的局限性的,也都有自己最擅长的用武之地。今天,软件项目中越来越倾向于采用多语言开发,所以与其花精力做口舌之争,不如多学学对方的语言。写《程序员修炼之路》的Andy Hunt和David Thomas大师早就教导我们,要在软件开发这个行当立于不败之地,应当“每年学一种新的语言”。

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正是原因之一。

对上面的最后一句话,Torvalds后来又做了如下补充:

”说得更详细一些:

“——简朴和明白的核心数据结构, 特别精益(lean)且颇具雄心的代码管理着它们,将”简朴胜于花哨”

这一方法发挥到极致。

”——有意识地不抽象数据结构和算法,因为它们恰恰是Git核心的全部要素(whole point)。

”如果你想用更花哨的语言,C++绝对是最糟糕的选择。如果想要真正的高级特性,那就选择有垃圾回收或者好的系统集成的,而不是既缺乏C的简约(sparseness)又缺乏C的直接而且没有重要概念的高层 绑定(high-level bindings to important concepts)的东西。

“一言以蔽之,C++正处在困境当中,它既无法帮助原型化或者简朴的GUI编程充足简化从而真正可用,又 不是C那样积极地鼓励你运用简朴和直接的语言构造的精益系统编程语言。

(另一位同学插了一句:这还没有提到很难找到两个C++编译器支持同样的特性。)

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

相关知识

Linux之父炮轰C++是糟糕程序员的垃圾语言
单身程序员的个性公寓
80后程序员的美式老干部的家!71㎡古色古香2室实景赏析
设计师之父高文安来沈与年轻后辈面对面交流
被动式建筑之父到访森鹰 世界最大的被动式工厂受瞩目
《女娲传说之灵珠》前十集讲的是什么故事?
木之屋实木家具:家具卖的是情感是故事
怀孕之美,岂是峰子说的那么轻巧!
联手高文安 面对面打造国际标准设计服务团队
龙之翼 “三老一新”华泰龙的经营之道

本文来自 家居装修知识网 Linux之父炮轰C++是糟糕程序员的垃圾语言 https://m.biud.com.cn/zhidao-view-id-11223.html