C++比C多的不只是两个+ - 北京——爱情沙漠 - 马侠麾-风妖

(这条文章已经被阅读了 274 次) 时间:2001-09-26 09:07:31 来源:马侠麾-风妖 (蝎族情战士) 原创-IT

今晚,在炳叔的Easytalking上结识了上海的兔兔。不知不觉聊到了C++的一个话题。

话说当时有一个记者采访C++的作者,问他编写C++的最初动机是什么。让记者大吃一惊的是:C++的作者编写C++的动机并不是什么通过面向对象的编程方式使程序开发周期缩短、使编写程序更加容易等,而是想给程序员创造更多的就业机会,并使程序员的薪金增加。

当年,开发程序主要是使用C语言,而当用C开发程序的程序员越来越多时,大家的平均薪水甚至还不及一个门僮。于是,C++的作者产生了开发C++的念头。诚然,面向对象的开发方式简化了编程的方式,也使学习编程更加的容易。但是,一个程序的开发周期并没有真正缩短。今天用C++开发一个大型软件,我们要使用上百,甚至上千的程序员用两三年来完成,但如果用C来开发,用同样多的程序员,是否会花的时间比用C++长呢?

C++曾使人们以为大家开发出的一些东西是可以共享的,这些劳动会节省以后的程序员的开发时间。但是,C++的函数库的更新速度使大家不相信有什么可以长期共用的东西。众多的公司在开发自己的软件时更愿意从头做起,完成一系列的工程,C++的通过共享已有劳动成果来节省开发时间的初衷并没有实现。

曾经有人说C++的出现会让使用C和汇编语言的程序员失业,但事实是,由于越来越多的程序员用C++来开发软件,精通C或汇编的程序员反而身价倍增。

C++的出现使开发一个软件使用的程序员大大增加,不会像以前用C时众多程序员争一个开发项目,大家都有饭吃了,而且吃得不错。而仍在用C和汇编等底层开发语言的程序员也吃得更香了。大家皆大欢喜。由于采用C++来编程,以前一个几百K的程序现在怎么说也得编成几十M,也促进了硬盘产业和光盘产业的发展。怎么样?是不是具有典型的西方经济学的味道?现代软件业的繁荣和程序员行业的健康发展,C++的作者功不可没呀!

现在,随着英特尔和超微两家CPU巨头都在向64位CPU转化,由64位CPU普及带来的32位程序向64位转化问题及32位程序在64位平台上的兼容问题也将带来更多的工作机会。

还有病毒和黑客带来的工作机会还没讲呢,越来越多的新病毒的产生使杀毒软件产业也茁壮成长起来。而且最近兴起的防黑产业、在线杀毒等新兴的工作机会也更是诱人呀。

嘻嘻,最后还有,由风妖这篇文章在网上的发表也带来了一些网站的点击率的上升(好多人想看看疯妖又想出了什么怪主意),如果您觉得这篇文章有点儿意思,想把它打印出来,又带动了打印耗材业的发展。(风妖在砖头雨中谢幕)

文章评论:C++比C多的不只是两个+ - 张翼轸 - 2001-09-26 12:27:10

好文章,微软的软件用这个伎俩知道的人很多。 但编程语言的发展也会有这种情况出现,的确不为人知。 - - - - - - - - - - - - - - - - - - - - - - 井鬼柳星张翼轸

RE:附件一 - 风妖 - 2001-09-27 08:59:09

【(风妖)回复(兔兔)的大作】 真是及时雨呀,你终于把原作找出来了。我还怕我说外行话被人笑呢。我不懂程序的,可能有些专业术语用的不对。 - - - - - - - - - - - - - - - - - - - - - -

RE:文章评论:C++比C多的不只是两个+ - 风妖 - 2001-09-26 13:36:56

【(风妖)回复(张翼轸)的大作】 在台湾省黑客的文章里还看到台湾省游戏公司为了多挣钱,把一两M的游戏做成200M,经DOS下用ARJ进行选择容量的压缩后压成了1M。真是气死人! - - - - - - - - - - - - - - - - - - - - - -

RE:文章评论:C++比C多的不只是两个+ - 梦飞行 - 2001-09-26 14:30:03

呵呵,真是不错的好主意,希望国内的商家、企业也好好学一学。 :【 在风妖(小风妖)的大作中提到:】 :【(风妖)回复(张翼轸)的大作】 :在台湾省黑客的文章里还看到台湾省游戏公司为了多挣钱,把一两M的游戏做成200M,经DOS下用ARJ进行选择容量的压缩后压成了1M。真是气死人! : : ...... - - - - - - - - - - - - - - - - - - - - - - 既然飞过,怎能忘记翱翔的感觉~~~~ 火热青春,怎能不飞扬~~~~~~~~~~~~

RE:文章评论:C++比C多的不只是两个+ - 风妖 - 2001-09-26 16:15:08

【(风妖)回复(梦飞行)的大作】 倒。 - - - - - - - - - - - - - - - - - - - - - -

附件一 - 兔兔 - 2001-09-26 16:58:04

【(兔兔)回复(风妖)的大作】 这是一篇对C++之父Bjarne Stroustrup的专访记录,时间是1998年初,这篇稿子没 > 有被发表过,也没有经过编辑润色。我想它也许能让我们这些用C++的人产生一些思 > 考…… > > 作者:佚名 > 翻译整理:pigprince > ---------------------------------------------------------------------- > > > 在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 > Graphics的俄勒冈州公司,我认为他们应该是感冒了,竟然在90年或者是91年把所有 > 的代码用C++重写了一遍,对不起,我实在是想不起确切的时间了,我看大家应该从 > 这个事件中吸取教训。 > > 记者: 没有人真正的吸取了教训吗? > > Stroustrup: > > 没有,而且还有很多公司犯同样的错误,还向他们的股东解释说那3亿美圆的损失是 > 正常的,他们就是做了这样的事情。 > > 记者: 真的?可是这也只能证明OO方法是能够工作的,不是吗? > > Stroustrup: 也许吧,执行文件是那么大,在一台有128M内存的HP工作站上只是装载 > 到内存中就要用5分钟时间,然后将象毛毛虫爬树一样的运行。事实上我在第一个礼 > 拜就发现了这个缺点,奇怪的是好象没人在乎这个,Sun和HP好象只在乎买出那些功 > 能强大的各种玩意儿,而不在乎在上面跑什么程序。在AT&.T的时候我编了一个 > “Hello World”程序,简直是难以置信,执行文件有2.1M。 > > 记者: 那么大?是啊,就是从那时候开始的编译程序产生大个的文件的。 > > Stroustrup: 就是这个样子,如果你不信的话,可以用最新版的g++试一下,你得到 > 的东西不会小于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。 > > 记者: 那么你写了吗? > > Stroustrup: 事实上,我写了,我完成后可以给你一个DEMO,我在机房里的一台4个 > CPU的Sparc 20上做的,运行得特别的快,而且只占了70M的硬盘空间。 > > 记者: 有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: 谁会相信呢?你能把这盘录音带给我拷一个吗? > > 记者: 可以。 > 正文完 > > 下面是我自己的一点看法:看完这篇文章我想提醒一下,电脑界没有权威,软件世界 > 是年轻人的天下。我这里所指的年轻人是指思想而不是年龄。 > > 如果说BASIC都能够存在C++就有千倍于BASIC存在的理由。其实现在的开发工具各有 > 千秋,很难说那一种拥有绝对的优势,只是在不同的领域有各自的优势。 > > 此外OO技术出现已久,当到目前来讲都很难得到广泛的应用。我想OO会成为一种趋 > 势,但也绝对无法取代面向过程的开发方式。OO不带包含了开发同样也包含了设计, > OO与面向过程的开发模式来将还是新事物,至少面向过程的各种技术都已经很成熟。 > 世界是一个多元的,OO也绝对扮演不了面向过程开发的终结者,我深深相信这一点, > 虽然OO技术有具有许多面向过程技术所不具备的优势。 > > 代码重用,是开发人员的梦想,所有的人都在向这个方向努力,在这过程中开发者遇 > 到非常大的阻力,但我想无论多大的阻力也无法阻挡前进的步伐。 > > 我想我的看法不一定正确,而且我也不是什么权威。但我认为能够思考和会用自己的 > 方法想问题至少表明他对这些问题有了解而且真正去思考过而不是盲从。 >