><FONT size=3>C++之父 B. Stroustrup 近期言论
><FONT size=3>[译者按] Bjarne Stroustrup博士,1950年出生于丹麦,先後毕业于丹麦阿鲁斯大学和英国剑挢大学,AT&T大规模程序设计研究部门负责人,AT&T 贝尔实验室和ACM成员。1979年,B. S开始开发一种语言,当时称为"C with Class",後来演化为C++。1998年,ANSI/ISO C++标准建立,同年,B. S推出其经典着作The C++ Programming Language的第三版。C++的标准化标志 B. S博士倾20年心血的伟大构想终於实现。但是,计算技术的发展一日千里,就在几年前人们还猜想C++最终将一统天下,然而随 Internet的爆炸性增长,类似Java C#等新的 现代感十足的语言咄咄逼人,各种Script语言更是如雨後春笋纷纷涌现。在这种情况下,人们不禁有些惶恐不安。C++是不是已经过时了呢?其前景如何?标准C++有怎样的意义?应该如何学习?我们不妨看看B. S对这些问题的思考。以下文字是译者从Stroustrup1998年之後发表的若干文章 谈话笔记中精选出来的,由於出处不一,内容多有重复,为保持完整,亦一并译出。 以下内容选自B. S在自己主页上发表的FAQ </FONT></P>
><FONT size=3><b><FONT color=#0000ff>1. 请谈谈C++书。</FONT>
><FONT size=3><b><FONT color=#0000ff>2. 学习C++要花多长时间?</FONT></b> 9 K0 ?) p! F" a
><FONT size=3><b><FONT color=#0000ff>3. 了解C是学习C++的先决条件吗?</FONT></b>
>
>1 t5 ^: z* p/ @
><FONT size=3>选择书籍时,务必注意该书是不是从一开始就讲授标准C++,并且矢志不渝地使用标准库机制。例如,从输入中读取一个字符串应该是这样的: </FONT></P>4 Z% w; A8 @/ Q; k& s
><FONT size=3>string s; // Standard C++ style 5 c% R3 I- R' Q. Z4 ?
><FONT size=3>而不是这样的: </FONT></P>
><FONT size=3>char s[MAX]; /* Standard C style */
><FONT size=3>去看看那些扎实的C++程序员们推荐的书吧。记住,没有哪本书对所有人来说都是最好的。另外,要写地道的C++程序,而避免用C++的语法写传统风格的程序,新瓶装旧酒没多大意义。(遗憾的是,目前在市面上的中文C++教材中,符合B. S的这个标准的可以说一本都没有,大家只好到网上找一些英文的资料来学习了。--译者) </FONT></P>1 }9 w _# K8 K! m# q% i8 e
>9 m+ i" A/ F* K6 E/ d6 q
>5 t% n5 A" \0 v0 G
><FONT size=3><b><FONT color=#0000ff>8. ANSI/ISO标准委员会是不是糟蹋了C++?</FONT></b> 8 O, N u% G- w7 b
>' U; B- I) I' u+ Y9 b8 Z
><FONT size=3>但是现在,C++已经有了新的特性,程序员们可以从麻烦多多的C风格中解脱出来。例如,使用标准库里的容器类,象vector, list, map, string等等,可以避免与底层的指针操作技巧混战不休。 </FONT></P>
>) {, C9 M) i, w W' ~! x0 d
><FONT size=3>上边这段话是在Java 1.1推出之前写的。我确信Java需要类似模板的机制,并且需要增强对於固有类型的支持。简单地说,就是为了基本的完整性也应该做这些工作。另外还需要做很多小的改动,大部份是扩展。1998年秋,我从James Gosling(Java语言的创始人--译者)那里得到一份建议书,说是要在Java中增加固有类型 操作符重载以及数学计算支持。还有一篇论文,是数学分析领域的世界级大师,伯克利大学的W. Kahan教授所写的How Java's Floating-Point Hurts Everyone Everywhere("且看Java的浮点运算如何危害了普天下的芸芸众生"--译者),揭露了Java的一些秘密。 </FONT></P>+ o( `7 a: a6 s. M8 ^" F/ r1 B
><FONT size=3>我发现在电视和出版物中关於Java的鼓吹是不准确的,而且气势汹汹,让人讨厌。大肆叫嚣凡是非Java的代码都是垃圾,这是对程序员的侮辱;建议把所有的保留代码都用Java重写,这是丧心病狂,既不现实也不负责任。Sun和他的追随者似乎觉得为了对付微软罪恶的"帝国时代",就必须如此自吹自擂。但是侮辱和欺诈只会把那些喜欢使用不同编程语言的程序员逼到微软阵营里去。 </FONT></P>0 o0 {, b2 w8 N6 _9 V$ [" J
><FONT size=3>Java并非平台无关,它本身就是平台。跟Windows一样,它也是一个专有的商业平台。也就是说,你可以为Windows/Intel编写代码,也可以为Java/JVM编写代码,在任何一种情况下,你都是在为一个属於某个公司的平台写代码,这些代码都是与该公司的商业利益扯在一起的。当然你可以使用任何一种语言,结合操作系统的机制来编写可供JVM执行的程序,但是JVM之类的东西是强烈地偏向于Java语言的。它一点也不像是通用的 公平的 语言中立的VM/OS。 </FONT></P>
><FONT size=3>私下里,我会坚持使用可移植的C++作大部份工作,用不同的语言作余下的工作。
><FONT size=3><b><FONT color=#0000ff>11. 您怎麽看待C#语言?</FONT></b> 6 c; a" Y6 W: y) E: v2 [ J7 L* A; s
><FONT size=3><b><FONT color=#0000ff>12. 在做大项目时,您是不是真的推荐Ada,而不是C++?</FONT></b>
><FONT size=3><b><FONT color=#0000ff>13. 你愿不愿意将C++与别的语言比较?</FONT></b> 0 X' K) x2 P/ n: @7 N( \
><FONT size=3>有不少书评家邀请我把C++与其它的语言相比,我已经决定不做此类事情。在此我想重申一个我很久以来一直强调的观点:语言之间的比较没什麽意义,更不公平。主流语言之间的合理比较要耗费很大的精力,多数人不会愿意付出这麽大的代价。另外还需要在广泛的应用领域有充份经验,保持一种不偏不倚 客观独立的立场,有 公正无私的信念。我没时间,而且作为C++的创造者,在公正无私这一点上我永远不会获得完全的信任。 </FONT></P>0 b, e$ t; Y& W/ C5 _
><FONT size=3>人们试图把各种语言拿来比较长短,有些现像我已经一次又一次地注意到,坦率地说我感到担 。作者们尽力表现的公正无私,但是最终都是无可救药地偏向于某一种特定的应用程序,某一种特定的编程风格,或者某一种特定的程序员文化。更糟的是,当某一种语言明显地比另一种语言更出名时,一些不易察觉的偷梁换柱就开始了:比较有名的语言中的缺陷被有意淡化,而且被拐弯抹角地加以掩饰;而同样的缺陷在不那麽出名的语言里就被描述为致命硬伤。类似的,有关比较出名的语言的技术资料经常更新,而不太出名的语言的技术资料往往是几年以前的,试问这种比较有何公正性和意义可言?所以我对於C++之外的语言的评论严格限制在一般性的特别特定的范畴里。 </FONT></P>
><FONT size=3>换言之,我认为C++是大多数人开发大部份应用程序时的最佳选择。 </FONT></P>
>
><FONT size=3>以後再看到语言比较方面的文章时,请留心是谁写的,他的表述是不是以事实为依据,以公正为准绳,特别是评判的标准是不是对於所引述的每一种语言来说都公平合理。这可不容易做到。 </FONT></P>| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |