C++ 热点问题一席谈(三)

荣耀: 您用过UML 吗?您对UML 怎么看?您认为它对C++ 程序设计很有用吗?

Bjarne: 我尝试过UML ,但并不是为了一些严肃的事情,所以我的看法参考价值不大。对于我最常考虑的设计问题来说,UML 不是特别有意义。我发现在设计和记录设计时草图是不可或缺的,但我并不认为把过多的细节加到草图中是个好主意。相比之下,代码更易于表达精确的关系。当然了,这么说并不意味着UML 没有用,我所尊敬的一些人认为UML 在文档化大型系统时非常重要。

荣耀: 您目前还在写书吗?或者有C++ 新书写作计划吗?

Bjarne: 我 目前正基于我正在讲授的一门新手课程撰写一本面向初学者的编程书。这对于那些具有很少甚至没有编程背景但很想通过努力成为程序员的人应该有所帮助。此前我 从未试图为非程序员写书,因为我对完全没有编程经验的人们所知甚少。现在我正教授初学者,这就让我有机会去尝试我的想法,并基于我的教学经验对之不断修 改。对于任何瞄准于初学者的东西来说,这样做都是必不可少的。

我的目标是先教给新手最小的一套原则、技术以及语言设施,让他们可以先开始第一个实在的项目。基本上,我打算让那些想要成为职业C++ 程序员的人由此起步。为了达到这个目的,我一开始的讲授要涵盖很多背景知识,包括数据结构、算法、图以及类设计等,这在传统的教学中是不会很早涉及的。这比我了解到的当前大多数的教学方式更加雄心勃勃。当然,我使用C++ 作为编程语言,并且我会在讲授中涵盖STL 的基础知识。

荣耀: 您能透露一下您的新书何时出版吗?

Bjrane: 我还没有写完呢,而且我还没有跟出版商(Addison-Wesley )协商好进度计划。至少我还需要半年时间来和我的学生们一起精化和锤炼这本书。理论上,我们(Lawrence Petersen 是我的合作作者)在明年秋天大概可以完成,如果我们在重审的过程中发现了重大问题的话,那就得等到圣诞节之后才能付梓了。我知道出版商会督促我们早点完成,而我们则会争取更多的时间来检验这本书并采纳反馈。对于这样的一本书,我们是不可以草率对待的。

荣耀: 您对您负责编辑的“深入C++ 系列”(Addison-Wesley )有何评论?您是否认为其中一些书已经过时了?一些书仅对有限的读者群有作用?您对新近出版的几本书有何评价?还有哪些新成员即将加入这套丛书?我特别想听一听您对《Modern C++ Design 》和《C++ Template Metaprogramming 》这两本书的看法。

Bjarne: 过 时?一些早期的书的确有点过时,但是从总体上来说,这些书都很好地经受住了时间的考验。新的书籍会以稳定的速度加进来。我的猜想是每年会增加三本新书。当 然,我希望有更多,但是要想找到质量和实用性足够好的“轻薄洗练”的书并非易事。事实上我很期望能够看到更多精专的书,比如着眼于数值计算的特定方面的 书,以及嵌入式系统编程方面的书。人们应该注意的是,这些书中的许多都是以专家或至少有经验的程序员为目标读者的。并且,作为一个专家,应该知道何时使用 何种技术。我认为泛型编程和模板元编程是将来的一部分,但那只能算是基础,而STL 这样的东西才是当前的主流。你所读到的一些书,像Alexandrescu 和Abrahams 的那两本书,会为你带来新的概念和可供试验的思想,但是你并不会在正准备部署的系统中立即应用这每一项技术。

荣耀: 您对Boost 似乎情有独钟。“深入C++ 系列”中已经包含了《Boost Graph Library 》和《C++ Template Metaprogramming 》两本书,我猜将来还会有更多有关Boost 的书会加入到这个系列中来,您对Boost 怎么看?选编这方面的图书出于什么考虑?

Bjarne: 事实上,我并非根据它们是否是关于Boost 的来选择书籍,“深入C++ 系列”中的大部分书籍都不是关于Boost 的。我根据它们是否提供了有关编程技术、原则和概念的有用信息做出选择。恰巧Boost 的作者在尝试“根据标准库的精神”来扩展基础库时,使用了有趣的技术去解决有趣的问题而已。

荣耀: 在过去的一年里,只出了有限的几本C++ 书籍。除了“深入C++ 系列”中的三本新书外,Addison-Wesley 还出版了一本《Imperfect C++ 》,您对这本书怎么看?(译注:因本书由我们翻译,故有此一问。) 另外, 您认为C++0x 标准会催生更多的C++ 新书出版吗?

Bjarne: 人们好像没有以前那样喜欢读书了。今年的C++ 新书只有寥寥几本,不过已出版的C++ 书籍已经有很多。“老”书并不一定过时。我认为我自己的书就是很好的例子。《C++ 程序设计语言》卖得比大多数新近出版的书要好,而《C++ 语言的设计与演化》则刚刚被翻译成日语。类似地,K&R (译注:《C 程序设计语言》) 在25 年后的今天仍然是最畅销的书!请不要忘了经典。我觉得有一个现象蛮有趣的,我附近的技术书店的Java 部分的书几年来第一次比C++ 部分小了。

我看过《Imperfect C++ 》的草稿。如果它的页数可以降到原来的一半的话,我非常愿意把它加入到“深入C++ 系列”中去。该书作者是一个C++ 热爱者,他希望向开发者展示如何对付C++ 中诸多不完美之处,以便写出更好的代码,而这些代码在声称为“理想”的语言中更难实现。

我期望C++0x 会催生一批新一代的C++ 书籍。不过,我希望这些新书能够集中于语言对编程风格和设计技术更强固的支持上,而不是简单地列举语言特性。我们已经看到了一大堆令人厌烦的列举语言规则的书。如果孤立开来看,任何语言特性都是无趣的,真正有趣的主题是编程。

荣耀: 由于您正在给C++ 新手讲解编程课,您愿意给世界上其他C++ 教师谈些教学经验吗?

Bjarne: 多年来,我一直对普遍的编程教育尤其是C++ 教学质量感到不愉快。当然,有很多好老师,而且也确实有很多学生变成了很好的程序员,然而,严重误导性的教学和被严重搞迷惑的程序员似乎没有个尽头。大概一年半前,有人建议我为编程新手设计一个全新的编程课程。我有过犹豫,但最终还是答应了,我和我们最具经验的讲师Lawrence Petersen 合作,他会弥补我在教授新手方面的经验的不足。我们设计了课程并已讲授了两学期,并且基于我们的讲授方式、客观效果以及反馈(反馈是不可或缺的),不断加以改进。

当然,我并非仅凭个人的主观看法和所知的实验性的途径就一意孤行。事实上,我阅读了大量的口碑好的C++ 编程入门教材,看看它们到底好在何处。大约有两个星期,我烦躁地走来走去,抱怨着“要是那些玩意就是C++ 的话连我自己都不会喜欢它!”。我的感觉是许多教材彻底讹传了C++ , 可怜的学生们!所以,我们首先基于“一个学生成为职业程序员所需要的”知识列出了一个课程大纲,写了讲稿,列出了练习并附以大量的告诫。我们快速的重审材 料并根据哪些可行、哪些不可行多次对其进行了调整。是年秋天,我们再次重审了材料,并且将课程的文字印刷成书。这下好多了,但是我们根据学生的反馈再一次 调整了许多细节。我们的确越做越好,学生们的反响(包括口头反映和考试成绩)说明了这一点。今春,我们将会再一次讲授这门课,到了夏末时大概就可以进行更 大范围的普及推广了。

我们把这种讲授方式称为“深度优先”,因为在课程一开始,我们会给学生介绍许多材料但并不深入细节。我们从第二周开始简单地使用STL ,到了第五周学生就知道错误处理策略和类设计。在那之后,我们拓宽他们的知识面,并且让他们把知识应用到一些领域去,譬如文本处理、文件操纵以及绘图等。我认为这是一个充满雄心的教学方式,不过在好的(不一定是极好的)大学里好的学生身上效果不错。

荣耀: 虽然这个问题应该去问Alex Stepanov 本人,不过由于最近您们二位结伴前来中国杭州参加一个嵌入式软件系统会议,我顺便想打听一下,Alex 目前是否在为C++ 新标准库忙些什么?

Bjarne: 实际上你真的应该去问Alex 本人。他的见解总是很有意思,而且往往出人意料。是的,他也参加了那个大会。在杭州,我们分别做了主题报告并给大学生们做了演讲。让很多人感到惊讶的是,他的报告是着眼于软件业的金融基础的,而绝大多数人所期望的是他能做一个关于STL 的高性能应用的演讲。我讲的是有关将抽象映射到机器层结构上的东西,这是C++ 在嵌入式系统编程中高效应用的基础。我很多主要的想法都可以在C++ 标准委员会关于性能的技术报告中找到(见我的C++ 主页上的链接http://www.research.att.com/~bs/C++.html )。

荣耀: 尽管在一些领域C++ 受到其它语言的挤压,但我相信未来10 年内C++ 仍然是最重要的系统开发语言,您是否赞同这个观点?

Bjarne: 我并不认为C++ 被“挤压”了多少。IDC 的评估数据表明,今天的C++ 程序员数量大约是十年前的三倍,而且C++ 仍然比任何其它语言更多地被使用。我认为,更确切的描述应当是这样的:C++ 在过去的十年里,只吸收了软件开发巨大膨胀的一部分。C++ 也正在向一些新领域扩张,譬如硬实时的程序设计。我怀疑“最重要的系统开发语言”这一说法很难被量化评估,但勿庸置疑,C++ 仍将占据非常重要的地位。关于C++ 应用的多样性,可以看看我列出的应用程序清单:http://www.research.att.com/~bs/applications.html

荣耀: 还有没有我没有问及而您又希望补充的内容?

Bjarne: 你没有问我容易回答的问题。谢谢。

谢谢您,Bjarne Stroustrup !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值