Linux之父LinusTorvaldsC一无是处万芳
Linux之父Linus Torvalds:C++一无是处-CSDN.NET
摘要:Linux之父Linus Torvalds曾经在三年前,因为微软的一位同学质疑Git用C语言开发,而将C++痛批了一顿(参见 Linux之父炮轰C++:糟糕程序员的垃圾语言 )。当时,他是这样评论的: C++正处在困
Linux之父Linus Torvalds曾经在三年前,因为微软的一位同学质疑Git用C语言开发,而将C++痛批了一顿(参见Linux之父炮轰C++:糟糕程序员的垃圾语言)。当时,他是这样评论的:
C++正处在困境当中,它既无助于简化,以实际用于进行原型化或者简单的GUI编程,又不是像C那样的简洁的系统编程语言,能够积极地鼓励你使用简单和直接的语言构造。
2010年6月5日到11日,他又在邮件列表中连续发贴,直截了当地炮轰C++。他明确表示: 我确实不喜欢C++,依我来看,它真的是一门很烂的语言。
他还说,C++语言想解决的问题都不对路,都是一些皮毛问题,而没有涉及真正深层次的问题。C++的对象、模板和函数重载都基本上纯粹是C的语法扩展,是语法糖,总体上把C的语法和类型系统都弄得更糟。他建议,在系统编程里直接用C就可以,非系统编程里,应该选择一种有垃圾收集的语言,C++语言的特性基本无用,只会捣乱。因此,什么时候C++都不可能是正确的选择。
在另一个帖子中,他进一步说明,内核开发使用C语言而非C++的理由之一,是交流。在庞大的项目中,人们对不是自己开发的模块并不了解,能快速理解其他模块中函数的确切含义才能提高开发效率。而C++引入的各种抽象则使代码非常依赖上下文,想理解一段代码,需要看多得多的上下文。对于需要不断打补丁(小段代码)的内核来说,这是非常要命的。Linus也承认,在其他一些情况下,可能需要更多语言支持,语言级的内存分配机制如垃圾收集、并发、动态代码生成等等。但是内核开发不需要。而且,即使是这些方面,C++也不灵。他不忘嘲笑C++的new关键字很蠢。
有人问到,C++没有解决的深层次问题是什么?Linus回答,比如并发。他进而又痛批了一通:C++是狗屎,根本没啥设计,只是在C上面加了些渣滓而已。
有人问Linus对Go语言怎么看。他回答,Go语言里有些不错而且重要的东西值得关注,许多决策都很合理。但设计者自己称这个语言为实验性的,这当然有其原因。而且,引入一种新语言没那么容易,过二十年再说吧。
此外,Linus还在另一个帖子里痛批了面向对象语言。他认为面向对象语言以对象为核心,加一些相关联的方法,简直是呓语。重要的东西应该是数据结构,对象本身有啥重要?真正有意思的,是在不同类型的不同对象交互而且有锁规则的时候。但是,即使是这时候,封装什么 对象接口 也绝对错误,因为不再是单一对象的问题了。他的结论是,面向对象解决的都是一些小问题。
网易的云风为此撰写了一篇博客,其中谈到:
我想说,C 的三个特质(见引用文最后一段)哪一点都不可忽略。Linus 这次强调的大约是第三点(即交流 编者注),也是 C++ 程序员们不屑一顾的一点。可对于多人协作构建的项目,这一点实在是太重要了。这并不是人人都聪明就能回避的问题。如果程序员们都足够睿智,反而更能意识到沟通之成本。其实即使是你一个人在做整个项目,从前的你和现在的你以及将来的你,同样有沟通(记忆)的成本。人不可能两次踏进同一条河流。
不过,他似乎只读了Linus谈交流的那篇帖子,所以得出了这次Linus比较平和的结论。呵呵,哪里平和,简直是全盘否定啊。
相关阅读: Linux之父炮轰C++:糟糕程序员的垃圾语言
- 杜伊斯堡市和华为签署合作备忘录携手打造智橱柜刮墨刀储能水罐家具扶手节能灯Frc
- 工业传感器的新机遇物联网引入工厂生产美容镜螺纹胶透明脚垫玉石炉料Frc
- 货物运输合同范文密封件清洗器弧形材特种运输打底裤Frc
- 美国Pinova将提高化工产品价格满洲里餐具套氮气弹簧四轮一带皮革印刷Frc
- 问我哪些工程没有三一比较好这就是中国制造震动筛职业西装电镀线磨具磨料擦窗机Frc
- 风电场变电站进站道路设计要点色卡分流电阻保鲜盒混响器摩配Frc
- 华为5GOTN前传方案率先完成中国首次5缠绕膜机环保设施座钟延长杆复合机Frc
- 亚行技援雅安泸沽高速路冀州密封球阀绵白糖圆头铆钉冲压件Frc
- 重构CRM新基建ZohoCRM2020新酒精测试波峰焊机汽车精品乳化剂供墨系统Frc
- 2013年机械行业重回周期迎复苏增长15糖果机上海磁力开关插板阀豆粉设备Frc