标题:都说C++比C更强大,到底强大在哪
只看楼主
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
 问题点数:0 回复次数:19 
都说C++比C更强大,到底强大在哪
C++之父谈C++(全)一定要读一读[转帖]

发信人: CRC (秋深,冬近,春亦近), 信区: Program

标 题: C++之父谈C++(全)一定要读一读




在1998年的元旦,Bjarne Stroustrup(C++之父)接受了IEEE《计算机》



杂志记者的专访。



编辑很自然的认为他会对于过去七年来使用他创建的语言进行面对对象



设计做一个历史性的回顾。







而在这个专访中,记者获得了更有价值的新闻,但是最后编辑决定为了



整个IT产业,这个稿子不能发表,但是就像其它被砍掉的新闻,往往还是弄得路



人皆知的。

这一篇适当时专访的完全拷贝,没有被编辑、删改或者做过什么润色处

理,也没有发布过,可能看起来不像常见的杂志文章,但这是实情。







你会发现真正引人入胜的地方... ...



----------------------------------------------------------------------







记者: 您在几年前你改变了软件设计世界的面貌,现在再回首往事您有什么感想?







Stroustrup: 事实上我在你到来之前的这些天里一直在考虑这件事,你还记得几



乎所有的人都在写 C程序那会儿吗?麻烦的是这些人写得太好了,而且那些个大



学也都在努力的传授 C编程技术。的确他们是十分的成功??我要特别的指出“



成功”这个词因为这种显著的 C程序员的培养效率,这就是产生问题的原因。







记者: 这难道是个问题吗?







Stroustrup: 当然,你记得大家都在用Cobol语言写程序的时候吗?







记者: 哦,当然,当时我也一样。







Stroustrup: 在一开始的时候,这些人简直象半个上帝似的拿着高工资,享受着



贵族一样的待遇。



记者: 唉,那些日子多么的让人怀念,是吧?







Stroustrup: 当然了。但是接着发生了什么?IBM觉得这样不舒服,就投资了数百



万来培养程序员,直到程序员多得一毛钱就可以雇一打。







记者: 这就是为什么当时我撤出来了,工资在一年里就降到人们在说做个记者都



比程序员强的地步。







Stroustrup: 对啦!那时侯相同的事情发生在了C程序员身上了。







记者: 这个我明白了,可是您要说的是……







Stroustrup: 有一天,我坐在办公室里就在想如何能把这件事挽回一些。我想知



道如果有一种特别复杂而且难以学会的语言,是否就没有人可以又把程序员们搞



到市场的泥潭里去呢?我用了从X10里了解到的东西,,噢,就是X-Windows,真



是一个该死的图形系统,只能运行在那些个SUN 3/60的机器里,哈!它具有所有



我想要的特征:可笑而复杂的语法,含混的功能描述,还有伪装的OO结构,就算



是在现在,还是没有人愿意用那些东西,如果你不想发疯的话,Motif才是唯一解



决方案。







记者: 你是在开玩笑吗?

Stroustrup: 没有,事实上还有另外的一个问题,UNIX是用C写的,就是说任何一



个C 程序员都可以很容易的成为系统程序的开发者。还记得一个大型的主机系统



应用的开发者通常能挣多少钱吗?







记者: 你肯定是知道我当时就是干这个的。







Stroustrup: 好吧,因此这个新的语言一定要通过隐藏所有的系统调用来和UNIX



分离开来,这样可以使那些个就只是知道DOS的人也可以活得很体面。







记者: 我不大相信您说的这个……







Stroustrup: 而且到现在时间也够长的了,我相信有很多的人已经指出了C++是对



时间的浪费,我要说的是,这个过程比我想象的要长的多了。







记者: 那么您又是如何做到的呢?







Stroustrup: 那只是一个玩笑,我真的没有想到人们?



记者: 什么?





Stroustrup: 再说代码重用,你什么时候听说过有公司重用他的代码?







记者: 事实上从来没有,但是……







Stroustrup: 那么我提醒你一下,在早期有很多的例子。哦,有一家叫Menter G



raphics的俄勒冈州公司,我认为他们应该是感冒了,竟然在90年或者是91年把所



有的代码用C++重写了一遍,对不起,我实在是想不起确切的时间了,我看大家应



该从这个事件中吸取教训。







记者: 没有人真正的吸取了教训吗?







Stroustrup:没有,而且还有很多公司犯同样的错误,还向他们的股东解释说那3亿



美圆的损失是正常的,他们就是做了这样的事情。







记者: 真的?可是这也只能证明OO方法是能够工作的,不是吗?







Stroustrup: 也许吧,执行文件是那么大,在一台有128M内存的HP工作站上只是装



载到内存中就要用5分钟时间,然后将象毛毛虫爬树一样的运行。事实上我在第一个



礼拜就发现了这个缺点,奇怪的是好象没人在乎这个,Sun和HP好象只在乎买出那些



功能强大的各种玩意儿,而不在乎在上面跑什么程序。在AT&.T的时候我编了一个

(后序见下帖)
搜索更多相关主题的帖子: IEEE 计算机 元旦 杂志 
2006-05-18 13:33
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
得分:0 

接上。。。

记者: 那么大?是啊,就是从那时候开始的编译程序产生大个的文件的。







Stroustrup: 就是这个样子,如果你不信的话,可以用最新版的C++试一下,你得



到的东西不会小于0.5M,而且就在最近也有一些在各个国家的例子,比如在British



Telecom公司发生的灾难,但是幸运的是他们把原来的计划废弃了,又重新开始,



他们就比Australian Telecom公司幸运,现在我又听说Siemens公司又在造“恐龙”



了,他们目前是越来越担心要用来加速执行软件所要使用的昂贵的高速硬件,难道你



真的认为那些个多态继承是一种乐趣吗?







记者: 噢,但是C++的确是一种可靠的语言啊!







Stroustrup: 你是真的相信的,对吧?你有没有真的坐下来用C++开发过项目?我



来告诉你会发生什么:首先,我会加入足够的缺陷来让那些微不足道的模块先执



行,让工作超载,在工程扫尾的阶段,你回发现几乎所有的模块都会有这种缺陷



,这是因为人们以为就是应该这样做,因为在C++的教程中就是这样写的。在相同



的模块中执行不同对象的相似操作意味着:有一些东西在各个模块中是完全不相



同的。当你有了互不相同的上百个这样的模块,就可以把他们集成在一起了。其



次,我再说说所谓的数据隐藏,上帝啊,当我听说了有的小组实现了什么对象协



同通信,我真的是憋不住想笑!我看,OO方法中的“协同”这个词可以把项目经



理的肋条累断?





记者: 我不得不说着太可怕了!你还说这是用来提高程序员的工资,这太龌龊了



Stroustrup: 龌龊?不是这样的,任何人都有选择的权利。我是并不想让事情发



展成这个样儿的。不管怎么说,我基本上还是成功的。C++现在已经不行了不是?



而且程序员现在还是能挣到高工资的。特别是那些还要维护这些该死的“++”



东西的那些程序员。你应该明白如果你去维护一个不是由你开发的C++模块是不可



能的。







记者: 怎么会这样的?







Stroustrup: 你糊涂了?还记得typedef吗?







记者: 噢,当然。







Stroustrup: 知道要在头文件里发现象'RoofRaised'这样的变量是一个双精度数



要用多长的时间吗?想象一下要在一个工程里所有的类定义里寻找那些typedefs



... ...







记者: 那么你为什么认定你已经成功了呢?







Stroustrup: 还记得一般一个C程序项目要多长时间吗?一般是6个月。这对于一



个要养活妻子孩子的程序员是不够的。如果是一样的项目,但是用C++来开发,会



怎么样呢?我告诉你:要一两年才能做完!这不好吗?就是一个小小的编程语

选择的决定,语言程序员就不会轻易的下岗了不是?而且那些个大学已经很久没



有传授C了,现在是对C程序员的短缺。特别是对UNIX编程熟悉的程序员。在使用



了这么多年的“new”以后,而且一直以来一直都不用担心返回值的问题。还有多



少程序员知道使用“malloc”?事实上,大多数的C++程序员舍弃了返回值,无论



什么样的结果,甚至于返回了“-1”,其实用不着什么'throw'、'catch'、'try'



之类的东西,至少你应该知道产生了错误。







记者: 但是继承的确不是可以节省很多时间的吗?







Stroustrup: 是吗?你注意过C项目计划和C++的项目计划之间的不同吗?在进行



了三次系统功能分解后,要确定所有的东西都可被继承到,如果没有那么说明还



是有错,但是有谁在C编程里听说过存储渗漏这个说法?现在你可以在业界的大厂



商的产品中发现了!有很多的公司不得不放弃了,并且把工程转包出去,他们知



道最后可能象筛沙子似的把内存站用完,他们才不想遭那份罪呢!







记者: 也有一些工具来……







Stroustrup: 大多数的防渗漏的工具不还是用C++写的。







记者: 果把这些东西发表了,我们可能在这个行业里无法立足了,你知道吗?







Stroustrup: 我不相信,就象我所说的,现在C++已经是在垂死挣扎了。任何公司



只要清醒,就会认识到用C++来做项目简直是一场灾难。如果还没认识到这些,那



就是活该!有一段时间我使劲的劝Dennis Ritchie用C++重写UNIX。







记者: 啊?天哪!他是怎么说的?







Stroustrup: 我不得不承认他的洞察力,我想他和Brian在很早的时候就清楚的明



白了我的意图,但是从来没有说出来,他说如果我愿意的话,他可以帮我用C++写



个DOS。



&sp;



记者: 有For PC的版本吗?







Stroustrup: 现在你在开玩笑了,难道你没见过Windows 95吗?我认为它是我成



功标志之一,







记者: 我也总是在想关于Unix++,还是有人在试着搞这么个东西的。







Stroustrup: 那是因为他们还没有看到这个采访手迹。



记者: 对不起,不过依我看,我们恐怕不会刊发这些东西的。







Stroustrup: 但是这是个世纪故事,我只是想让我的程序员伙伴们记住我为他们



做了什么,你知道这些个日子里C++程序员可以挣多少钱吗?







记者: 我所听说的是一个顶尖的C++程序员一小时可以挣到70~80美圆。







Stroustrup: 知道了吧!而且我打赌他肯定可以挣那么多!!单步跟踪我放在C+



+里面的那些gotcha,并不是容易的事了。在在项目中使用C++的所有特性即使是



有经验的程序员也会感到困惑. 事实上有时侯我也是觉得挺难受的,虽然这个特



性是为我的初衷而做的,我几乎喜欢上了这个语言。







记者: 你的意思是说你以前是不喜欢的?







Stroustrup: 我是狠它的!难道你不同意它是挺笨重的吗?但是当那本书的版税



源源不断的…… 我想你能够明白这些。







记者: 等一下,关于参数的定义,请您一定要回答,您是否真的改良了C的指针。







Stroustrup: 呵,我也是总是想知道这个。一开始我认为我做了,但是有一天我



和一个刚开始学习 C++的程序员讨论了这个问题。他说:“他从来就不知道他的

变量是否被引用了,所以我还是在使用指针,那个星号总是在提醒我。”



记者: OK,一般在这个时候我一般是说:“Thank you very much.”,但是现在用在这里好象还是不够。







Stroustrup: 答应我一定要发表。







记者: 好的,我会通知您的,但是我已经知道了我的编辑会说什么了。



Stroustrup: 谁会相信呢?你能把这盘录音带给我考一个吗?

由于工作,N久都没来了!
2006-05-18 13:34
shuaiye
Rank: 1
等 级:新手上路
帖 子:445
专家分:0
注 册:2006-5-15
得分:0 
个人看法...

看了之后,我觉得,真有这种感觉,c++的确在很多地方不太好,想着c就像是钻石一样的可靠!还

有汇编也是很好,也许,这些经过几十年时间洗礼的,才是最好的吧,只是要有功力的人才会更

好的使用她们....

由于工作,N久都没来了!
2006-05-18 13:35
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
得分:0 
没有看过C++.\
不过用过引用参数

明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-05-18 13:42
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
得分:0 

C++强大在在C的基础上,应该改进的地方没改进,不应该改进的地方改进了一大堆,改进的天花乱坠,神神秘秘,挺简单的问题让C++说的相当复杂


也许这就是C++的强大之处吧


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-18 13:52
myajax95
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:30
帖 子:2978
专家分:0
注 册:2006-3-5
得分:0 
怀疑其真实性。一个人写了十年被全世界接受的东西自己却回头来说大家都被他愚弄了?C只是C++的子集,C++具有几乎所有C的功能,同时大为扩展。文中说的例子几乎没有一个是正确的。

http://myajax95./
2006-05-18 13:54
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
得分:0 
以下是引用myajax95在2006-5-18 13:54:00的发言:
怀疑其真实性。一个人写了十年被全世界接受的东西自己却回头来说大家都被他愚弄了?C只是C++的子集,C++具有几乎所有C的功能,同时大为扩展。文中说的例子几乎没有一个是正确的。

严重同意


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-05-18 14:41
–★–
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1512
专家分:0
注 册:2006-5-1
得分:0 
虽然楼主的帖子有点耸人听闻,我倒有几分相信是真的
因为你马上看看这会儿C论坛与C++论坛在线人数之比,
就知道C++好不好学了.(南京的)东南大学四系一年级
曾经直接学JAVA,现在还不是偃旗息鼓?!所以不要追随
老外太紧了,小心被马蹄子踢着.

落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
2006-05-18 14:52
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
得分:0 

学C的人不懂C++没事,学C++的人不懂C白学.


九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-05-18 14:54
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
得分:0 
楼上的意思,我是白学了。
另外我认为这个帖子不是真的。

2006-05-18 15:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-65247-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.345684 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved