C++之父近期言论.docVIP

  • 1
  • 0
  • 约1.23万字
  • 约 25页
  • 2017-07-10 发布于河南
  • 举报
C之父近期言论

C++之父 B. Stroustrup 近期言论 译者 孟岩 侯捷注:本文系 CSDN(中国程序员网站)上的贴文。可读性高,译笔流畅。 承译者孟岩先生应允, 转载於此以飨台湾读者,非常感谢。 未得孟岩先生之同意,任何人请勿将此文再做转载。 以下蓝色为提问,黑色为回答。红色为译注,紫色为侯捷个人认为宜再斟酌之处。 浅蓝色是侯捷个人阅读时的神秘标记。 本繁体文系直接转码,并未将大陆惯用术语转换为台湾惯用术语。 [译者按] Bjarne Stroustrup博士,1950年出生于丹麦,先後毕业于丹麦阿鲁斯大学和英国剑挢大学,ATT大规模程序设计研究部门负责人,ATT 贝尔实验室和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 1. 请谈谈C++书。 没有,也不可能有一本书对於所有人来说都是最好的。不过对於那些真正的程序员来说,如果他喜欢从经典风格的书中间学习一些新的概念和技术,我推荐我的The C++ Programming Language, 1998年的第三版和特别版。那本书讲的是纯而又纯的C++,完全独立於平台和库(当然得讲到标准库)。该书面向那些有一定经验的程序员,帮助他们掌握C++,但不适合毫无经验的初学者入门,也不适合那些临时程序员品尝C++快餐。所以这本书的重点在於概念和技术,而且在完整性和精确性上下了不少功夫。如果你想知道为什麽C++会变成今天的模样,我的另一本书 The Design and Evolution of C++ 能给你满意的答案。理解设计的原则和限制能帮助你写出更好的程序。是最好的书评网站之一,很多有经验的程序员在此仗义执言,不妨去看看。 2. 学习C++要花多长时间? 这要看你说的学习是什麽意思了。如果你是一个Pascal程序员,你应该能很快地使你的C++水平达到与Pascal相近的程度;而如果你是一个C程序员,一天之内你就能学会使用C++进行更出色的C风格编程。另一方面,如果你想完全掌握C++的主要机制,例如数据抽象,面向对象编程,通用编程,面向对象设计等等,而此前又对这些东西不很熟悉的话,花上个一两年是不足为奇的。那麽是不是说这就是学习C++所需要的时间呢?也许再翻一番,我想打算成为更出色的设计师和程序员最起码也要这麽长的时间。如果学习一种新的语言不能使我们的工作和思想方式发生深刻 的变革,那又何苦来哉?跟成为一个钢琴家或者熟练掌握一门外语相比,学习一种新的不同的语言和编程风格还算是简单的。 3. 了解C是学习C++的先决条件吗? 否 C++中与C相近的子集其实比C语言本身要好学,类型方面的错误会少一些,也不像C那样绕圈子,还有更好的支持库。所以应该从这个子集开始学习C++。 4. 要想成为真正的OO程序员,我是不是得先学习Smalltalk? 否。如果你想学Smalltaok,尽管去学。这种语言很有趣,而且学习新东西总是一个好主意。但是Smalltalk不是C++,而且把Smalltalk的编程风格用在C++里不会有什麽好结果。如果你想成为一个出色的C++程序员,而且也没有几个月的时间百无聊赖,请你集中力量学好C++以及其背後的思想。 5. 我如何开始学习C++? 这取决于你的基础和学习动机。如果你是个初学者,我想你最好找个有经验的程序员来帮助你,要不然你在学习和实践中不可避免的犯下的种种错误会大大地打击你的积极性。另外,即使你的编译器配备了充足的文档资料,一本C++书籍也永远是必不可少的,毕竟文档资料不是学习编程思想的好教材。 选择书籍时,务必注意该书是不是从一开始就讲授标准C++,并且矢志不渝地使用标准库机制。例如,从输入中读取一个字符串应该是这样的: ??? string s;??? // Standard C++ style ??? cin s; 而不是这样的: ??? char s[

文档评论(0)

1亿VIP精品文档

相关文档