回 帖 发 新 帖 刷新版面

主题:[转帖]不学C,无以言


上篇:C/C++前奏
  对于专业的程序员来说,一定要掌握几种编程语言才行,这里面肯定有一种是C/C++,套用孔子的话说就是:不学C,无以言。  
  说到C/C++的图书,主要指的是不涉及任何开发环境的、纯编程语言方面的图书。这方面的图书若论发行量,首屈一指的当然是谭浩强的《C语言程序设计》(清华大学出版社,1991年),可是我个人认为它并不是自学者的最佳选择——如果你作为课本选择它是没有问题的,因为清晰的结构配合上老师的讲解,在加上每章后面和课本内容结合紧密地习题,你可以很好地掌握C语言。可是看了迪泰尔父子(H. M. Deitel和P. J. Deitel)的《C程序设计教程》(机械工业出版社,2000年7月)之后,我发现了它才是自学者的最佳选择。它原先叫做《C/C++程序设计大全》,在国内出版的时候分为《C程序设计教程》和《C++程序设计教程》两本,它们都是自学者的佳选。
  《C程序设计教程》充分体现了世界领先计算机教材的特点:轻松灵活、逻辑严晰、目标明确、学用结合。这本书的优秀首先体现在编排体例上,其次在内容上除了知识要点讲解清晰、条理之外,作者配了大量的插图——英语中有句谚语:一图抵千言(One picture is worth a thousand words.),抽象的结构方法、数据调用等通过插图的说明便得一目了然。作者还教给学习者“伪码”的程序设计方法,这对于国内很多保守的教学者来说是不可想象的——怎么可以教给学生根本就不符合编成语言规范的“语法”?但实际上,在软件设计过程中,这样的设计方法的确可以帮助程序员理清思路,比使用注释的方法更容易复读和理解。为了方便各种开发平台使用者,作者在书中举的例子还在多种平台上进行了测试,包括IBM PC、Sparc、Macintosh和DEC VAX/VMS。
  如果你是一个贪婪的书虫又没有英语的语言障碍,我还要向你推荐两本经典读物:Brain W. Kernighan与Dennis M. Ritchie合著的《The C Programming Language》(Prentice Hall出版社,1988年,清华大学出版社1997年影印版)及Bjarne Stroustrup的《C++编程语言》(The C++ Programming Language,Addison Wesley Longman出版公司,1997年)。请记住,这些书在世界范围内影响了整整一代的程序员。  
中篇:C/C++典型
  Bruce Eckel巨著《Thinking In C++》:Prentice Hall,1995年2月第一版,2000年4月第二版,它的简体中文版《C++编程思想》(机械工业出版社,2000年1月第一版,根据1995年第一版翻译,笔者在介绍的过程中凡涉及到两个版本有差异的地方均以Prentice Hall 2000年4月第二版为准)
  我向大家推介《C++编程思想》的原因只有一个:在C++作为面向对象的编程语言领域里,无出其右者。
  作者Bruce Eckel在此书前言中首先就提出:“与任何人类语言一样,C++提供了一种表达思想的方法。如果这种方法是成功的,那么当程序变得更大、更复杂时,该方法应当明显地表现出比其他语言更容易和更灵活的优点。”Bruce Eckel认为学习C++不仅仅是学会使用C++来编写程序代码,更重要的是要学会用C++的语言来思考问题(就好比说学习英语,只能够翻译并不能说已经掌握了这门语言,真正到了能够用英语思考的阶段才是达到了完全掌握的境界)。在这本书中,作者讨论编程问题的时候,都进而研究这个问题、研究如何用C++解决这些问题,在每个章节中在用C++解决一类问题的基础上解释C++语言性能,通过这样的方法引导读者从掌握C开始,在读者的头脑中建立一个模型来理解这种语言,逐步把C++变成读者头脑中“自己的”语言。让读者能够在遇到问题的时候,对问题进行抽象和分类,归纳到C++的语言模型中去推导答案.
  在本书的结构上,作者从抽象的演化过程开始讲起,讲到了抽象到对象的过程,继而又讲解了对象的继承、多态与接口、应用的隐藏保护与复用、对象的创建与清除及异常处理等,让从来没有接触过面向对象编程、没有接触过对象概念的读者能够从整体上理解“对象”。在接下来的部分,作者从编译和编译器开始引导读者一步步地前进,直到编写出自己的第一个C++程序“Hello World!”,通过这个部分作者讲解了对象的生成与使用。在“C++中的C”一章中,作者详细阐释了C语言的语法,随后通过“数据抽象”、“应用隐藏保护”、“初始化与清除”、“功能加载与缺省参数”等章节把读者从面向过程的C语言带到全新的面向对象编程的境界中。另外作者还就常量、内置函数、名域控制、指针、对象的动态生成、继承、多态、模板等进行了详细的解说。为了配合教学的进行,作者使用的例子都与相应的教学内容保持一致,有的虽然看上去比较“幼稚”,但对于读者理解相关部分的内容确有很大的帮助。
  在本书中,作者使用的是比较典型的“目标+教学内容+小结+练习”的模式,从一个知识要点的简介开始,通过概念的阐释和实例讲解来把相应的知识要点讲解清楚,随后对该部分的内容进行简明扼要的小结,让读者根据作者的提示进行知识要点回顾,然后再根据练习题对学到的东西进行巩固和更深入的理解。
  虽然说面向对象编程更接近人类的思维方式,但是面向过程编程却更容易被人们理解和掌握,很多C学得好的人在向C++迁移的时候往往都会感到困惑。但是Bruce Eckel却给所有没有学习过面向对象编程的人提供了一个入门和提高的捷径——这就是Thinking In C++……  
下篇:C/C++续曲
  这几本让读者和我在期待的C/C++巨著就是这期我要推荐的——《Essential C++中文版》、《Effective C++中文版》、《The C++Programming Language》和《C++ Primer》。
  《Essential C++》(Addison Wesley Pub Co.,1999年10月第一版)的作者Stan ley B. Lippm an更是C++领域一流的大师级人物。如果你是一个新手,在阅读本书的时候不要忘了找一本更详细一些的参考教材——作者只用了30页的篇幅讲C++变成的基础知识,这里面还包括了数组、向量和指针等内容,《Essential C++中文版》(华中科技大学出版社,2001年8月第一版)已经出版,是侯捷的译著。《Effective C++中文版》(华中科技大学出版社,2001年9月第一版)也已经在国内翻译出版,译者还是侯捷。当你初步了解C++的全貌之后,《Effective C++》能够在短时间内大幅度地提高你C++编程的水平,此书的独特之处在于每一个你遇到的C++问题,Meyers都好像未卜先知地放在了书里,所有让你困惑的问题你几乎都可以在这本书中找到精辟的论述——如果能加Meyers的另一本巨著《More Effective C++》(Addison-Wesley Pub Co.,1995年12月第一版)将更会锦上添花。
  《The C++ Programming Language》(Addison Wesley Pub Co.,2000年2月第三版,高等教育出版社,2001年8月影印版)是无论哪一个C++学习者绝对、绝对不能错过的头号经典。
  《C++ Primer》是Lippman的成名大作,全书共分为20章,从C++最基本的元素、数据类型到面向过程的程序设计到泛型算法到基于对象与面向对象的程序设计等等,洋洋洒洒,蔚为大观。此书将由中国电力出版社近期推出简体中文版,由潘爱民(《COM原理与应用》的作者,《Visual C++技术内幕(第四版)》、《深入理解COM+》、《COM本质论》、《深入解析ATL》的译者)主译。  
  关于C/C++的“不学C,无以言”到此已经结束,但并不是说已经囊括了C/C++的全部经典书籍,像《Exceptional C++》(Herb Sutter著,Addison-Wesley Pub Co.,1999年12月第一版)、《实用C语言编程》(Steve Oualli著,O'Reilly&Associates,1997年9月第三版,中国电力出版社,2000年5月中文第三版)、《C/C++嵌入式系统编程》(Michael Barr著,O'Reilly&Associates,1999年2月第一版,中国电力出版社,2001年3月中文第一版)等等,或因不得见其书、或因技术领域太过专细,皆成明代遗贤。  

[em1]

回复列表 (共6个回复)

沙发

运动补偿?

楼主研究视频编码的吗?

板凳

我觉得如果只学C的话,一定要看下面四本书:《The C Programming Language》、《C Traps And Pitfalls》、《Pointers On C》和《Expert C Programming》。
  拙见拙见,呵呵。

3 楼

号召不错
   但是这是大家都明白的事情呀

4 楼

受益非浅!!!

5 楼

好书不断!受益匪浅!都找到!然后一本一本的看!

6 楼


看书才是硬道理

我来回复

您尚未登录,请登录后再回复。点此登录或注册