English

谭浩强的C++情结

2004-08-18 来源:中华读书报  我有话说

谭浩强说:“作为教材需要考虑的是90%以上的人。教材最重要的是准确定位,合理取舍内容。不能把教材写成手册……写作时要把复杂的问题简单化,将复杂的表述通俗化。”

C++是第一种得到广泛使用的面向对象程序设计语言,也是当今软件开发的主流语言。近年来,国内外高

校纷纷选择C++作为程序设计入门课程的教学语言,大量的业余爱好者也纷纷把C++作为自己学习程序设计的第一门语言。然而,C++是一种复杂的程序设计语言,人们常常把C++、Ada和Com鄄monLISP并列为三种最艰难的语言,通常只是在有了一定基础之后才开始学习C++。能不能把C++作为入门语言来学习呢?可以,但是我们需要一本适合初学者特点的C++程序设计教程。尽管我国已经引进了大量的C++技术著作,但是中肯地说,在C++入门教材方面,还缺乏权威的著作。“C++入门难”仍然是广大初学者面临的现实问题。

谭浩强教授是我国著名的计算机教育专家。他写的书被大家公认为初学程序设计的最佳入门书,《Basic语言》和《C程序设计》所创造的奇迹已经成为中国信息化教育历史上的丰碑。最近,清华大学出版社出版了谭教授的最新力作《C++程序设计》。这本书有望成为C++入门教材中的权威之作。受《中华读书报》的委托,我有幸对谭老师进行了一次专访,主题就是这本大家企盼已久的《C++程序设计》。

专访在一天下午进行,谭浩强老师准时赴约,但来时显得十分匆忙,原来他刚刚从昆明举行的全国高等院校计算机基础教育研究会学术大会赶回来,这些天还要再参加几个重要的会议。谭老师神采奕奕,精力充沛,很难想象他已年到古稀。

我们的话题很快进入谭老师编写的《C++程序设计》,我用“千呼万唤始出来”来形容老师的作品,老师只是淡淡地一笑。谈及创作初衷,谭老师作了一个简要的介绍。他的社会工作繁多,同时又在全国各地进行着各种讲座,仅向大学生讲怎样做人的《怎样走向成功之路》的讲座就进行了120场,近十万大学生曾聆听过这一著名讲座。每到一处,都有许多热情的读者希望谭老师能够出版一本C++方面的著作。在各方面的热情期盼中,谭老师于2002年1月1日深夜毅然起笔开始撰写《C++程序设计》。“我创作本书的最重要原因是出于强烈的社会责任感,我实在不忍心看着这么多的学生这样艰难地学C++,花了大量的时间还入不了门。”

若论谭浩强老师的C++情结,我是有一定了解的。谭老师虽然在编著本书前没有出过C++方面的专著,但在1999年再版的《C程序设计》一书中已经增加了C++的初步知识。在今年出版《C++程序设计》之前,谭老师研究C++和思考怎样写C++已近十载。谭老师介绍说,他在研究C++和编著本书过程中曾经阅读过国内外C++著作不下百本。此书也算是他多年研究的结晶。

谈到国内外关于C++方面的著作,我最感兴趣的话题便是谭老师对这些书籍的看法。他对这个话题显得尤为谦逊。对BjarneStroustrup以及StanLippman著作充分赞扬的同时,他更多地谈到了C++教材的特点。从我自身角度出发,TCPL和C++Primer都曾作为初学C++的参考,尤其是C++Primer一书,我也曾为“Primer(初级读本)”一词的含义和这本书死较过一段时间的劲,但无论多努力地看,仍然找不到太多为C++初学者考虑和设计的内容,印象最深刻的是书中这样的论述:“如果你对这部分不熟悉可以先跳过,后续的章节中将作具体的论述。”就这样,这本书被我跳过的页码真是不在少数。严格地说,这些书都不适合作为初学教材。包括BjarneStroustrup在开设C++课程的时候也没有将自己的TCPL作为教本推荐他的学生在初学C++时使用。

对比这些书,作为教材的C++著作应当具备什么样的特点呢?谭老师的一席话值得我们深思:“我在写任何一本教材时对自己有一个要求,就是自己先教授这门课3轮以上才能动笔。原因很简单,只有在教学实践过程中才能够体会到学生怎么才能较好地接受和理解该课程的内容,学生皱眉头说明我讲得太深了,学生不耐烦说明我讲得太浅了。现在有些书的作者并不考虑读者的感受,而是以我为中心来写书,想写什么就写什么,想用什么方式写就用什么方式写。这样写出来的书读者往往是看不懂的,学起来是很困难的。作者应当与读者将心比心,站在读者的角度考虑问题,认真研究学生的认知规律,分析他们在学习过程中遇到的困难,然后有针对性地从专家的角度引导读者循序渐进地进入计算机的天地。要写好一本教材,不仅仅需要掌握有关技术的内容,还要体现教学要求,要懂得教育学和心理学,要有好的写作风格,要善于用通俗易懂的方法和语言阐述清楚复杂的概念。”

有一个读者向谭浩强老师提出了这样一个问题:从C到C++的最大变化就是面向对象,这也是初学者比较难于理解的,要想把C++说得比较清楚可能还是要《C++Primer》那样的鸿篇巨著,但又有多少人能真正把它从头至尾读完并领会其真意?谭老师又是如何将这本《C++程序设计》写得如同《C程序设计》一样易懂易学,而又不失C++的内涵和实质呢?对于这个问题,谭老师的体会是很深的:“我在写这本书之前曾经和许多高校老师和同学们交流过,通过调查发现,教师从一开始就完全摒弃面向过程的程序设计而立即引入面向对象的概念,学生是很难接受的。一般的学校进行程序设计教学,大多从结构化程序设计开始,后续的课程可能会安排一门面向对象程序设计。但不要把面向对象看作是唯一有效的,不要把面向对象和面向过程隔离开来甚至对立起来。面向对象方法在处理大型程序设计时有着明显的优势,但在处理科学计算问题时,有时候面向过程的程序设计显得更为便捷,例如求解一个三角形的面积问题我们完全没有必要去设计一个类再来进行相关的处理。这样简单的问题用面向对象来解决如同杀鸡用牛刀,没有必要使之人为的复杂化。C++是一种混合语言,既支持面向过程的程序设计,又支持面向对象的程序设计。本书从面向过程的程序设计入手,随后介绍基于对象的程序设计和面向对象的程序设计,这样思路清晰,步步深入,难点分散,台阶较小,读者很容易接受。要向同学们解释清楚,究竟C++都能做什么,什么情况用面向对象程序设计……学生通过C++既可以学习到面向过程的程序设计的知识,也可以学习到面向对象的程序设计的知识。”

谭老师的这本新作并没有将C++模板(Template)技术、标准库等内容作为单独的章节花很多篇幅介绍,这与很多同类教材相比显得颇为特别。对于这一点,谭老师有他自己的考虑。“高等院校中C++的学习者不但有计算机专业的学生,还有大量非计算机专业的学生。将来用C++进行编制大程序的人不到10%。”谭老师说,“这毕竟是初学者的基础性的教材,最重要的是让学生掌握最基础的东西,讲清最基本的概念。在大学里学C++只能是打下以后进一步学习和应用的基础。不可能要求所有大学生都成为C++的熟练开发人员。作为教材需要考虑的是大部分人,也就是90%以上的人。教材最重要的是准确定位,合理取舍内容。不能把教材写成手册,手册的任务是提供一个包罗万象的备查资料库,而教材的任务是用学生最容易接受的方式阐明基本的概念和应用。如果以后10%学生在工作中需要深入使用C++编制大程序,可以在此基础上进一步学习。”

采访中我曾询问谭浩强老师:这本书是否适合所有学习C++程序设计的读者?老师很严肃地回答说:“没有一本书能够做到包罗万象,包打天下。每一本书都有自己特定的对象,不可能满足一切人的需要。打个比方,给小学生写的教材,研究生一定嫌浅,而研究生的教材小学生又看不懂。各有各的教材,要求不一,标准不同。我从不希望我写的书适合所有的读者,我的书的定位是非计算机专业的学生和广大C++的初学者。应当特别说明,这本书不是为专业开发人员写的。”这一读者定位在谭老师写书时是十分明确的。即使这样,作为计算机专业毕业的我,以及计算机专业研究生毕业的本书责任编辑都认为阅读此书获益匪浅。如果这本书在我学习C++之初就出版,我想包括我在内的很多读者都不会在学习C++几年之后仍然不得其要领而要从头来过……

谭浩强老师的《C程序设计》广受读者好评,许多读者说,C语言原来是比较难学的,自从《C程序设计》出版后C语言变得不难学了。但也有的专业人士觉得这本书太浅了,与实际的开发工作有距离。对于读者提出的意见和建议,谭老师表现得很谦逊:“书的发行量大了,自然有这样那样的意见,大部分的读者意见是诚恳的,帮助我发现了书中不少的缺点和不足,我十分感谢他们。当然在互联网上和有的媒体上,也曾出现过个别不十分友善的意见,但毕竟是少数。对于怎样写书,本来就是见仁见智,又何必强求所有人都接受你的风格呢?只要有众多的读者能顺利地入门,我的目的就达到了。”

谭老师的大部分著作关注点都集中在大学教材上。作为教材,最重要的目的是将最基本的知识介绍给学生,引导学生走上正确的学习道路。当我提出建议时,谭老师表示非常愿意在后续版本或者通过其他的方式撰写一个“后记”,向读者介绍一下语言最新的发展情况、业界的重要应用领域,并告诉读者在看完本书后,针对不同的社会的需求,还应当参考和关注哪些内容等。

谭浩强老师几多年来撰写的系列丛书中,一直秉承着“把复杂的问题简单化,将复杂的表述通俗化,深入浅出”的创作风格。谭老师还提到一个重要观点便是:“我们作为计算机教育工作者,一定要把计算机从少数专家手中解放出来,使它变为广大群众手中的工具。”过去有些人认为谭浩强老师的写作风格只适用于内容较浅的计算机普及,而《C++程序设计》一书将这一写作风格成功地运用于公认为最复杂的程序设计语言C++的教材中,应当说这是谭浩强老师一个新的成就、新的高度。

采访临近结束时,谭老师特别向我介绍了他几十年来创作计算机教材的一些心得:“许多人以为写计算机技术的书很容易,只要自己懂了就能写好。其实不然,教材创作难点往往并非是技术本身,一本书是否受读者欢迎是各种因素的综合反映,尤其是作品中如何体现出以人为本,处处为读者着想。我写C++时花时间最多的是考虑怎样把难的东西变成不难。有时为举一个合适的例子,琢磨了好几天。要善于把抽象思维方法和形象思维方法结合起来,充分运用形象思维方法化解高深复杂的概念,使读者容易理解。作为教师和作者,不要把简单的问题复杂化,而要善于把复杂的问题简单化。我写的教材得到广大老师和同学们的好评,重要原因是我心中永远把读者放在第一位,想他们之所想,急他们之所急,将计算机技术和教育学、心理学、语言文字技巧等紧密融合在一起,形成了一种群众欢迎的创作风格。”这正是谭浩强教材成功的基石。“在学生求学路上,教师应当给予他们最大的支持与帮助”。

临走时谭老师紧紧地握着我的手告别,让我感到他曾给予过无数计算机学习者的寄托与期望。告别谭老师,走在夜幕将近的清华园,心中无限感慨,很想代表读者们衷心地感谢老师所给予我们的一切……

手机光明网

光明网版权所有

光明日报社概况 | 关于光明网 | 报网动态 | 联系我们 | 法律声明 | 光明网邮箱 | 网站地图

光明网版权所有