来源:solidot
"Linux内核的创始人Linus Torvalds最近在一封邮件中说明了内核开发需要使用C语言而非C++的理由。在庞大的项目中,人们对不是自己开发的模块并不了解,能快速理解其他模块中函数的 确切含义才能提高开发效率,而C++引入的各种抽象则使代码变得晦涩难读。
另外Linus还认为C++的内存管理方式很弱智(that idiotic "new" keyword in C++)。邮件最后的总结是:很显然C并不适合所有项目,不过C++?还是算了吧。垃圾回收和并发等等,这些才是真正重要的特性。
那么他所期待的C++替代会是什么呢?是方兴未艾的Go语言?还是即将迎来2.0的D语言?或是用 Java, .net这些基于虚拟机的语言去代替?"
本文来源:Linux之父Linus Torvalds:讨厌C++


litkt 于 2010-06-15 14:31:25发表:
"C是手工打造,C++则为自动化生产作准备。许多软件代工业每天编码的量已经难以想象。"
Linus说得很明白,C++不利于代码重复利用。
许多软件代工业每天编码的量已经难以想象,这是闭源造成的问题,不是C的”效率不高“造成问题。
在开源情况下,没有必要重复编码,也不会有如此大的编码量了。所以新码产生的速度不重要,旧码的可利用可修改性才是重要的。
科学和技术的发展都是一代人站在前一人的肩膀上才有的成就,面向对象效率高是高──一条铁棒等身长,打得八百军州都姓赵──只可惜只会一代不如一代,赵宋之弱举世闻名。
一位贵妇用面向对象的态度问法拉第,你的电磁感应理论有什么用?法第用面向过程的态度反问──刚出生的婴儿有什么用?
复杂的事物是进化来的,不是创造来的。这也可以解释为什么用面向对象方法可以迅速创造一个新的复杂体系(如Windows或机器人),但它的质量和稳定性总不如面向过程缓慢进化的产物(如Linux或一棵树)。
面向对象可能会陷入人有多大胆地有多高产,定指标抓右派,资本运作专家说经济不断高速发展需要无止境增长的能源供应,工程师就把物理学家粗暴推开然后倾全国之力去研制永动机这类的误区。
有人会说了,面向对象才能保证资本运作的高效率,才能保证软件公司快速盈利。可是话说回来,如果软件生产的主要目的是为了软件公司以最快的速度赚钱,为了保证质量牺牲一点赚钱的速度都不干,这样的软件我坚决不用。
shampoo 于 2010-06-15 09:33:18发表:
在电脑语言里面,很避讳的一个东西,就是conflict rule(矛盾规则)
启动Turing Machine进行parsing的时候,只要出现conflict rule,这个语言便算破功了。
当初语言C草草出场,完全是一种克难的作为,因此它的语法中藏着一些矛盾规则,其中最著名的就是if-then-else。
C++并没有在语法规则做提升,但突显了一个Object Oriented的观念,这是一般人不会在乎的。就像学武术得从马步开始,哪个小孩喜欢蹲马步?
C是手工打造,C++则为自动化生产作准备。许多软件代工业每天编码的量已经难以想象。
axbyc123 于 2010-06-15 08:10:38发表:
shampoo 于 2010-06-15 00:07:33发表:
告诉你吧!20年前我写过Pascal的compiler。
倘若你不知道啥是paser?啥是电脑文法?
就把嘴巴比起来,否则我会号召红卫兵甩你!
绿色圣光 于 2010-06-14 20:11:41发表:
俺最喜欢的还是C
Tuzki 于 2010-06-14 20:05:59发表:
不用c++,任何语言都是为了更好地编译而已,说c不好的人是因为对c了解的不够,或者,根本没有理解c的精髓
shampoo 于 2010-06-14 06:10:03发表:
我用大家比较熟悉的方式说:
C:Linux kernel 1.0
C++:Linux kernel 2.0
Ada,Lisp,Fortran:FreeBSD
C还被保留的原因:
一。世界上还有一些恐龙活着,例如,shampoo
这些人,已经习惯于C的特性:要它怎么对就怎么对,要它怎么错就怎么错。
二。还有很多程序是以C编码的。
大型套装软件的历史一般超过10年,甚至15年,它们的原始版本大部分是C,后续者不想改写成C++,因此gcc还得留着。
我不知道,为何C++不把C给吃掉?
另外,C++设计时,不知为了掩饰C的弱点或是自卑,竟然搞了某些奇怪的说法,导致C的用户很难迁移到C++。
若说UNIX是历史的无奈,C或C++应该是历史的错误,既然大错已经铸成,只好继续错下去。
当初Ada,Fortran,Lisp,Pascal等等高阶语言都非常昂贵,而让C窜起,就像
UNIX很贵,促成了微软的独霸。
对于业余的编码人员来说,C已经足够。
可是,专业的编码者,愈早进入C++,愈早超生。
教学者则必须把C给忘啦!
shenhao0129 于 2010-06-13 22:06:53发表:
个有个的需求的把!有些c++的特性并不一定适合所有的场合,所以c从一开始出来一直到现在还是比较热的
shampoo 于 2010-06-13 16:09:53发表:
C++出来时,我已是C的老手,且没有时间好好把C++搞熟。
对于,年轻的或是刚入门的,肯定必须学习C++!
为何会有C++?因为C非常不成熟,C是给老江湖使用的语言。
为了让菜鸟使用C时比较不会出错,就把语法做了较严谨的规范,而成为C++。
早期Ada是最好最严谨的语言,如今似乎没有免费的编译器,只能转换成GCC。
在开源里面,只有一种语言C++。记得,C已经被phrased out。(淘汰出局)
其他,如Perl,Python,Java,。。。。应该都是衍生出去的C语言格式之interpreter,not compiler。
再说一次,如今的电脑语言只剩一种,C++!
nuvax 于 2010-06-13 11:45:22发表:
学过C程序,没学过C++
f0rrest 于 2010-06-13 11:45:10发表:
垃圾清理对于GUI来说就是一场噩梦。
iamxzg 于 2010-06-13 11:11:13发表:
C简单易学,就是好。
zhgyxj_85 于 2010-06-12 22:31:33发表:
我也感觉C比较好一点。不过无论什么,只要精通就行。另外,Linus Torvalds是用C出身的,呵呵。
wei554807385 于 2010-06-12 20:36:41发表:
c有接触 c++感觉难
jadefengling 于 2010-06-12 19:10:58发表:
学C中.C++不会.
sosohu 于 2010-06-12 14:14:28发表:
c++了解一点就可以了
shenhao0129 于 2010-06-12 14:11:50发表:
说实话,C++我觉得还是比较难的,还是喜欢C,哈哈