C++程序设计原理与实践(C++之父最新力作)(china-pub首发)
基本信息
推荐阅读
内容简介回到顶部↑
书籍
计算机书籍
本书是经典程序设计思想与c++开发实践的完美结合,是c++之父回归校园后对c++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对c++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对c语言的简单描述,为你呈现了一幅程序设计的全景图。
·c++初学者的权威指南。无论你是从事软件开发还是其他领域的工作,本书将为你打开程序开发之门。
·中高级程序员的必备参考。通过观察程序设计大师如何处理编程中的各种问题,使你获得新的领悟和指引。
·全面阐释c++基本概念和技术。与传统的c++教材相比,本书对基本概念和技术的介绍更为深入,为你编写实用、正确、易维护和有效的代码打下坚实的基础。
·强调现代c++编程风格。本书从开篇就介绍现代c++程序设计技术,并揭示了大量关于如何使用c++标准库来简化程序设计的原理,使你快速掌握实用编成技巧。
·配套教辅资源丰富。本书网站(www.stroustrup.com/programming)提供了丰富的辅助资料,包括实例源码、ppt、勘误等。
计算机书籍
本书是经典程序设计思想与c++开发实践的完美结合,是c++之父回归校园后对c++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对c++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对c语言的简单描述,为你呈现了一幅程序设计的全景图。
·c++初学者的权威指南。无论你是从事软件开发还是其他领域的工作,本书将为你打开程序开发之门。
·中高级程序员的必备参考。通过观察程序设计大师如何处理编程中的各种问题,使你获得新的领悟和指引。
·全面阐释c++基本概念和技术。与传统的c++教材相比,本书对基本概念和技术的介绍更为深入,为你编写实用、正确、易维护和有效的代码打下坚实的基础。
·强调现代c++编程风格。本书从开篇就介绍现代c++程序设计技术,并揭示了大量关于如何使用c++标准库来简化程序设计的原理,使你快速掌握实用编成技巧。
·配套教辅资源丰富。本书网站(www.stroustrup.com/programming)提供了丰富的辅助资料,包括实例源码、ppt、勘误等。
作译者回到顶部↑
本书提供作译者介绍
Bjarne Stroustrup 英国剑桥大学计算机科学博士,C++的设计者和最初的实现者。他现在是德州农工大学计算机科学首席教授。1993年,由于在C++领域的重大贡献,他获得了ACM的 Grace Murray Hopper大奖并成为ACM院士。在进入学术界之前,他在AT&T贝尔实验室工作,是ISO C++标准委员会的创始人之一。
.. << 查看详细
.. << 查看详细
目录回到顶部↑
出版者的话
译者序
前言
第0章致读者
0.1本书结构
0.1.1一般方法
0.1.2简单练习、习题等
0.1.3进阶学习
0.2讲授和学习本书的方法
0.2.1本书内容顺序的安排
0.2.2程序设计和程序设计语言
0.2.3可移植性
0.3程序设计和计算机科学
0.4创造性和问题求解
0.5反馈方法
0.6参考文献
0.7作者简介
第1章计算机、人与程序设计
1.1介绍
1.2软件
译者序
前言
第0章致读者
0.1本书结构
0.1.1一般方法
0.1.2简单练习、习题等
0.1.3进阶学习
0.2讲授和学习本书的方法
0.2.1本书内容顺序的安排
0.2.2程序设计和程序设计语言
0.2.3可移植性
0.3程序设计和计算机科学
0.4创造性和问题求解
0.5反馈方法
0.6参考文献
0.7作者简介
第1章计算机、人与程序设计
1.1介绍
1.2软件
译者序回到顶部↑
程序设计是打开计算机世界大门的金钥匙,它使五彩斑斓的软件对你来说不再是“魔术”。C++语言则是学习掌握这把金钥匙的有力武器,它优美、高效,从大洋深处到火星表面,从系统核心到高层应用,从掌中的手机到超级计算机,到处都有C++程序的身影。本书适合那些从未有过程序设计经验的初学者,如果你愿意努力学习,本书能帮助你理解使用C++语言进行程序设计的基本原理及大量实践技巧。你所学到的思想,大多数也都可直接用于其他程序设计语言。本书不是初学程序设计语言的简单入门教材,它的目标是能让读者学到基本的实用程序设计技术,因此也可以作为程序设计方面的“第二本书”。基于这样一个目标,注重实践是本书的明显特点。它希望教会你编写真正能被他人所使用的“有用的程序”,而非“玩具程序”。因此,除了基本的C++程序特性之外,本书还介绍了大量的求解实际问题的程序设计技术:如语法分析器程序的设计、图形化程序设计、利用正则表达式处理文本、数值计算程序设计以及嵌入式程序设计等。在其他大多数程序设计入门书籍中,是找不到这些内容的,像调试技术、测试技术等其他程序设计书籍着墨不多的话题,本书也有详细的介绍。程序设计远非遵循语法规则和阅读手册那么简单,而在于理解基本思想、原理和技术,并进行大量实践。本书阐述了这一理念,为读者指引了明确的方向,教会读者如何才能达到编写有用的、优美的程序这一最终目标。
本书的作者Bjarne Stroustrup是C++语言的设计者和最初的实现者,也是《The C++ Programming Language》(Addison Wesley出版社)一书的作者。他现在是德州农工大学计算机科学首席教授,美国国家工程院的会员和AT&T院士。在进入学术界之前,他在AT&T贝尔实验室工作多年。他是ISOC++标准委员会的创始人之一。本书是他在C++程序设计领域奉献给广大读者的又一经典著作。
本书分为五个部分。第一部分介绍基本的C++程序设计知识,包括第一个“Hello,World!”程序,对象、类型和值,运算,错误处理,函数,类等内容,以及一个计算器程序实例。第二部分介绍输入和输出,首先介绍了输入/输出流的基本概念和格式化输出方法,然后第12~16章重点介绍了图形/GUI类和图形化程序设计。第三部分介绍数据结构和算法,重点介绍了向量、自由内存空间、数组、模板和异常、容器和迭代器以及算法和映射。第四部分希望拓宽读者的视野,介绍了程序设计语言理念和历史、文本处理技术、数值计算、嵌入式程序设计技术及测试技术,此外还较为详细地介绍了C语言与C++的异同。第五部分为附录,包括C++语言概要、标准库概要、VisualStudio简要入门、FLTK安装以及GUI实现等内容。
本书的序、第0章、8~11章、23~25章、27章、附录、术语表由王刚翻译,第4、5、22、26章由刘晓光翻译,第1~3章、17~21章由吴英翻译,第6~7章、12~16章由李涛翻译。翻译大师经典,难度超乎想象。接受任务之初,诚惶诚恐;翻译过程中,如履薄冰;完成后,忐忑不安。虽然竭尽全力,但肯定还有很多错漏之处,敬请读者批评指正。
译者
2010年4月于南开大学
本书的作者Bjarne Stroustrup是C++语言的设计者和最初的实现者,也是《The C++ Programming Language》(Addison Wesley出版社)一书的作者。他现在是德州农工大学计算机科学首席教授,美国国家工程院的会员和AT&T院士。在进入学术界之前,他在AT&T贝尔实验室工作多年。他是ISOC++标准委员会的创始人之一。本书是他在C++程序设计领域奉献给广大读者的又一经典著作。
本书分为五个部分。第一部分介绍基本的C++程序设计知识,包括第一个“Hello,World!”程序,对象、类型和值,运算,错误处理,函数,类等内容,以及一个计算器程序实例。第二部分介绍输入和输出,首先介绍了输入/输出流的基本概念和格式化输出方法,然后第12~16章重点介绍了图形/GUI类和图形化程序设计。第三部分介绍数据结构和算法,重点介绍了向量、自由内存空间、数组、模板和异常、容器和迭代器以及算法和映射。第四部分希望拓宽读者的视野,介绍了程序设计语言理念和历史、文本处理技术、数值计算、嵌入式程序设计技术及测试技术,此外还较为详细地介绍了C语言与C++的异同。第五部分为附录,包括C++语言概要、标准库概要、VisualStudio简要入门、FLTK安装以及GUI实现等内容。
本书的序、第0章、8~11章、23~25章、27章、附录、术语表由王刚翻译,第4、5、22、26章由刘晓光翻译,第1~3章、17~21章由吴英翻译,第6~7章、12~16章由李涛翻译。翻译大师经典,难度超乎想象。接受任务之初,诚惶诚恐;翻译过程中,如履薄冰;完成后,忐忑不安。虽然竭尽全力,但肯定还有很多错漏之处,敬请读者批评指正。
译者
2010年4月于南开大学
前言回到顶部↑
“该死的鱼雷!全速前进。”
——海军上将Farragut
程序设计是这样一门艺术,它将问题求解方案描述成计算机可以执行的形式。程序设计中很多工作都花费在寻找求解方案以及对其求精上。通常,只有在真正编写程序求解一个问题的过程中才会对问题本身理解透彻。
本书适合于那些从未有过编程经验但愿意努力学习程序设计的初学者,它能帮助你理解使用C++语言进行程序设计的基本原理并获得实践技巧。我的目标是使你获得足够多的知识和经验,以便能使用最新最好的技术进行简单有用的编程工作。达到这一目标需要多长时间呢?作为大学一年级课程的一部分,你可以在一个学期内完成这本书的学习(假定你有另外四门中等难度的课程)。如果你是自学的话,不要期望能花费更少的时间完成学习(一般来说,每周15个小时,共14周是合适的学时安排)。
三个月可能看起来是一段很长的时间,但要学习的内容很多,写第一个简单程序之前,就要花费一个小时。而且,所有学习过程都是渐进的:每一章都会介绍一些新的有用的概念,并通过从实际应用中获取的例子来阐述这些概念。随着学习进程的推进,你通过程序代码表达思想的能力——也就是让计算机按你的期望工作的能力,会逐渐稳步地提高。我从不会说:“先学习一个月的理论知识,然后看看你是否能使用这些理论吧。”
为什么要学习程序设计呢?因为计算机文化是建立在软件之上的。如果不理解软件,那么你将退化到只能相信“魔术”的境地,并且将被排除在很多最为有趣、最具经济效益和社会效益的领域之外。当谈论程序设计时,我所想到的是整个计算机程序家族,从带有GUI(图形用户界面)的个人计算机程序,到工程计算和嵌入式系统控制程序(如数码相机、汽车和手机中的程序),以及文字处理程序等,在很多日常应用和商业应用中都能看到这些程序。程序设计与数学有些相似,如果认真去做的话,它会是一种非常有用的智力训练,可以锻炼我们的思考能力。然而,由于计算机能做出反馈,程序设计又不像大多数数学形式那么抽象,因而对更多人来说更容易接受。可以说,程序设计是一条能够打开你的眼界,将世界变得更美好的途径。最后,程序设计非常有趣。
为什么学习C++这门程序设计语言呢?学习程序设计不可能不借助一门程序设计语言,而C++直接支持现实世界中的软件所使用的那些关键概念和技术。C++是使用最为广泛的程序设计语言之一,其应用领域几乎没有局限。从大洋深处到火星表面,到处都能发现C++程序的身影。C++是由一个开放的国际标准组织全面考量、精心设计的。在任何一种计算机平台上都能找到高质量的和免费的C++实现。而且,你用C++所学到的程序设计思想,大多数都可直接用于其他程序设计语言,如C、C#、Fortran以及Java。最后一个原因,我喜欢C++适合编写优美、高效的代码这一特点。
本书不是初学程序设计的简单入门教材,我写此书的用意也不在此。我为本书设定的目标是:能让你学到基本的实用编程技术的最简单的书籍。这是一个雄心勃勃的目标,因为很多现代软件所依赖的技术,不过才出现短短几年时间。
我的基本假设是,你希望编写供他人使用的程序,并愿意认真负责地、较高质量地完成这个工作;也就是说,我假定你希望达到专业水准。因此,我为本书选择的主题覆盖了开始学习实用编程技术所需要的内容,而不只是那些容易讲授和容易学习的内容。如果某种技术是你做好基本编程工作所需要的,那么本书就会介绍它,同时展示用以支持这种技术的编程思想和语言工具,并提供相应的练习,期望你通过做这些练习来熟悉这种技术。但如果你只想了解“玩具程序”,那么你能学到的将远比我所提供的少得多。另一方面,我不会用一些实用性很低的内容来浪费你的时间,本书介绍的内容都是你在实践中几乎肯定会用到的。
如果你只是希望直接使用别人编写的程序,而不想了解其内部原理,也不想亲自向代码中加入重要的内容,那么本书不适合你。请考虑是否采用另一本书或另一种程序设计语言会更好些。如果这大概就是你对程序设计的看法,那么请同时考虑一下你从何得来的这种观点,它真的满足你的需求吗?人们常常低估程序设计的复杂程度和它的重要性。我不愿看到你不喜欢程序设计,只是因为你的需求与我所描述的部分软件之间不匹配。信息技术世界中还有很多部分是不要求程序设计知识的,那些领域可能适合你。本书面向的是那些确实希望编写和理解复杂计算机程序的人。
考虑到本书的结构和注重实践的特点,它也可以作为程序设计方面的第二本书,适合那些已经了解一点C++的人,和那些会用其他语言编程,现在想学习C++的人。如果你属于其中一类,我不好估计你学习这本书要花费多长时间。但我可以给你的建议是,多做练习。因为你在学习中常见的一个问题是习惯用熟悉的、旧的方式编写程序,而不是在适当的地方采用新技术,多做练习会帮助你解决这个问题。如果你曾经按某种更为传统的方式学习过C++,那么在进行到第7章之前,你会发现一些令你惊奇的和有用的内容。除非你的名字是Stroustrup,否则你会发现我在本书中所讨论的内容不是“你父辈的C++”。
学习程序设计要靠编程实践。在这一点上,程序设计与其他需要实践学习的技能是相似的。你不可能仅仅通过读书就学会游泳、演奏乐器或者开车,你必须进行实践。同样,不读程序、不写程序就不可能学会程序设计。本书给出了大量代码实例,都配合有说明文字和图表。你需要通过读这些代码来理解程序设计的思想、概念和原理,并掌握用来表达这些思想、概念和原理的程序设计语言的特性。但有一点很重要,仅仅读代码是不能学会编程实践技巧的。为此,你必须进行编程练习,通过编程工具熟悉编写、编译和运行程序。你需要亲身体验编程中会出现的错误,学习如何修改它们。总之,在学习程序设计的过程中,编写代码的练习是不可替代的。而且,这也是乐趣所在!
另一方面,程序设计远非只是遵循一些语法规则和阅读手册那么简单。本书的重点不在于C++的语法,而在于理解基础思想、原理和技术,这是一名好程序员所必备的。只有设计良好的代码才有机会成为一个正确、可靠和易维护的系统的一部分。而且,“基础”意味着延续性:当现在的程序设计语言和工具演变甚至被取代后,这些基础知识仍会保持其重要性。
那么计算机科学、软件工程、信息技术等又如何呢?它们都属于程序设计范畴吗?当然不是!但程序设计是一门基础性的学科,是所有计算机相关领域的基础,在计算机科学领域占有重要的地位。本书对算法、数据结构、用户接口、数据处理和软件工程等领域的重要概念和技术进行了简要介绍。但本书不能取代对这些领域全面、均衡的学习。
代码可以很有用,同样也可以很优美。本书会帮你了解优美的代码意味着什么,并帮你掌握构造优美代码的原理和实践技巧。祝你学习顺利!
致学生
到目前为止,我在德州农工大学已经用本书的初稿教过1000名以上的大一新生,其中60%曾经有过编程经历,而剩余40%从未见过哪怕一行代码。大多数学生的学习是成功的,所以你也可以成功。
你不一定是在某门课程中来学习本书,我认为本书会广泛用于自学。然而,不管你学习本书是作为课程的一部分还是自学,都要尽量与他人协作。程序设计有一个不好的名声——它是一种个人活动,这是不公正的。大多数人在作为一个有共同目标的团体的一份子时,工作效果更好,学习得更快。与朋友一起学习和讨论问题不是作弊!而是取得进步最有效,同时也是最快乐的途径。如果没有特殊情况的话,与朋友一起工作会促使你表达出你的思想,这正是测试你对问题理解和确认你的记忆的最有效的方法。你没有必要独自解决所有编程语言和编程环境中的难题。但是,请不要自欺欺人,不去完成那些简单练习和大量的习题(即使没有老师督促你,你也不应这样做)。记住,程序设计(尤其)是一种实践技能,需要通过实践来掌握。如果你不编写代码(完成每章的若干习题),那么阅读本书就纯粹是一种无意义的理论学习。
大多数学生,特别是那些爱思考的好学生,有时会对自己努力工作是否值得产生疑问。当(不是如果)你产生这样的疑问时,休息一会儿,重新阅读这篇前言,阅读一下第1章(“计算机、人和程序设计”)和第22章(“思想和历史”)。在那里,我试图阐述我在程序设计中发现了哪些令人兴奋的东西,以及为什么我会认为程序设计是能为世界带来积极贡献的重要工具。如果你对我的教学理念和一般方法有疑问,请阅读第0章(“致读者”)。
你可能会对本书的厚度感到担心。本书如此之厚的一部分原因是,我宁愿反复重复一些解释说明或增加一些实例,而不是让你自己到处找这些内容,这应该令你安心。另外一个主要原因是,本书的后半部分是一些参考资料和补充资料,供你想要深入了解程序设计的某个特定领域(如嵌入式系统程序设计、文本分析或数值计算)时查阅。
——海军上将Farragut
程序设计是这样一门艺术,它将问题求解方案描述成计算机可以执行的形式。程序设计中很多工作都花费在寻找求解方案以及对其求精上。通常,只有在真正编写程序求解一个问题的过程中才会对问题本身理解透彻。
本书适合于那些从未有过编程经验但愿意努力学习程序设计的初学者,它能帮助你理解使用C++语言进行程序设计的基本原理并获得实践技巧。我的目标是使你获得足够多的知识和经验,以便能使用最新最好的技术进行简单有用的编程工作。达到这一目标需要多长时间呢?作为大学一年级课程的一部分,你可以在一个学期内完成这本书的学习(假定你有另外四门中等难度的课程)。如果你是自学的话,不要期望能花费更少的时间完成学习(一般来说,每周15个小时,共14周是合适的学时安排)。
三个月可能看起来是一段很长的时间,但要学习的内容很多,写第一个简单程序之前,就要花费一个小时。而且,所有学习过程都是渐进的:每一章都会介绍一些新的有用的概念,并通过从实际应用中获取的例子来阐述这些概念。随着学习进程的推进,你通过程序代码表达思想的能力——也就是让计算机按你的期望工作的能力,会逐渐稳步地提高。我从不会说:“先学习一个月的理论知识,然后看看你是否能使用这些理论吧。”
为什么要学习程序设计呢?因为计算机文化是建立在软件之上的。如果不理解软件,那么你将退化到只能相信“魔术”的境地,并且将被排除在很多最为有趣、最具经济效益和社会效益的领域之外。当谈论程序设计时,我所想到的是整个计算机程序家族,从带有GUI(图形用户界面)的个人计算机程序,到工程计算和嵌入式系统控制程序(如数码相机、汽车和手机中的程序),以及文字处理程序等,在很多日常应用和商业应用中都能看到这些程序。程序设计与数学有些相似,如果认真去做的话,它会是一种非常有用的智力训练,可以锻炼我们的思考能力。然而,由于计算机能做出反馈,程序设计又不像大多数数学形式那么抽象,因而对更多人来说更容易接受。可以说,程序设计是一条能够打开你的眼界,将世界变得更美好的途径。最后,程序设计非常有趣。
为什么学习C++这门程序设计语言呢?学习程序设计不可能不借助一门程序设计语言,而C++直接支持现实世界中的软件所使用的那些关键概念和技术。C++是使用最为广泛的程序设计语言之一,其应用领域几乎没有局限。从大洋深处到火星表面,到处都能发现C++程序的身影。C++是由一个开放的国际标准组织全面考量、精心设计的。在任何一种计算机平台上都能找到高质量的和免费的C++实现。而且,你用C++所学到的程序设计思想,大多数都可直接用于其他程序设计语言,如C、C#、Fortran以及Java。最后一个原因,我喜欢C++适合编写优美、高效的代码这一特点。
本书不是初学程序设计的简单入门教材,我写此书的用意也不在此。我为本书设定的目标是:能让你学到基本的实用编程技术的最简单的书籍。这是一个雄心勃勃的目标,因为很多现代软件所依赖的技术,不过才出现短短几年时间。
我的基本假设是,你希望编写供他人使用的程序,并愿意认真负责地、较高质量地完成这个工作;也就是说,我假定你希望达到专业水准。因此,我为本书选择的主题覆盖了开始学习实用编程技术所需要的内容,而不只是那些容易讲授和容易学习的内容。如果某种技术是你做好基本编程工作所需要的,那么本书就会介绍它,同时展示用以支持这种技术的编程思想和语言工具,并提供相应的练习,期望你通过做这些练习来熟悉这种技术。但如果你只想了解“玩具程序”,那么你能学到的将远比我所提供的少得多。另一方面,我不会用一些实用性很低的内容来浪费你的时间,本书介绍的内容都是你在实践中几乎肯定会用到的。
如果你只是希望直接使用别人编写的程序,而不想了解其内部原理,也不想亲自向代码中加入重要的内容,那么本书不适合你。请考虑是否采用另一本书或另一种程序设计语言会更好些。如果这大概就是你对程序设计的看法,那么请同时考虑一下你从何得来的这种观点,它真的满足你的需求吗?人们常常低估程序设计的复杂程度和它的重要性。我不愿看到你不喜欢程序设计,只是因为你的需求与我所描述的部分软件之间不匹配。信息技术世界中还有很多部分是不要求程序设计知识的,那些领域可能适合你。本书面向的是那些确实希望编写和理解复杂计算机程序的人。
考虑到本书的结构和注重实践的特点,它也可以作为程序设计方面的第二本书,适合那些已经了解一点C++的人,和那些会用其他语言编程,现在想学习C++的人。如果你属于其中一类,我不好估计你学习这本书要花费多长时间。但我可以给你的建议是,多做练习。因为你在学习中常见的一个问题是习惯用熟悉的、旧的方式编写程序,而不是在适当的地方采用新技术,多做练习会帮助你解决这个问题。如果你曾经按某种更为传统的方式学习过C++,那么在进行到第7章之前,你会发现一些令你惊奇的和有用的内容。除非你的名字是Stroustrup,否则你会发现我在本书中所讨论的内容不是“你父辈的C++”。
学习程序设计要靠编程实践。在这一点上,程序设计与其他需要实践学习的技能是相似的。你不可能仅仅通过读书就学会游泳、演奏乐器或者开车,你必须进行实践。同样,不读程序、不写程序就不可能学会程序设计。本书给出了大量代码实例,都配合有说明文字和图表。你需要通过读这些代码来理解程序设计的思想、概念和原理,并掌握用来表达这些思想、概念和原理的程序设计语言的特性。但有一点很重要,仅仅读代码是不能学会编程实践技巧的。为此,你必须进行编程练习,通过编程工具熟悉编写、编译和运行程序。你需要亲身体验编程中会出现的错误,学习如何修改它们。总之,在学习程序设计的过程中,编写代码的练习是不可替代的。而且,这也是乐趣所在!
另一方面,程序设计远非只是遵循一些语法规则和阅读手册那么简单。本书的重点不在于C++的语法,而在于理解基础思想、原理和技术,这是一名好程序员所必备的。只有设计良好的代码才有机会成为一个正确、可靠和易维护的系统的一部分。而且,“基础”意味着延续性:当现在的程序设计语言和工具演变甚至被取代后,这些基础知识仍会保持其重要性。
那么计算机科学、软件工程、信息技术等又如何呢?它们都属于程序设计范畴吗?当然不是!但程序设计是一门基础性的学科,是所有计算机相关领域的基础,在计算机科学领域占有重要的地位。本书对算法、数据结构、用户接口、数据处理和软件工程等领域的重要概念和技术进行了简要介绍。但本书不能取代对这些领域全面、均衡的学习。
代码可以很有用,同样也可以很优美。本书会帮你了解优美的代码意味着什么,并帮你掌握构造优美代码的原理和实践技巧。祝你学习顺利!
致学生
到目前为止,我在德州农工大学已经用本书的初稿教过1000名以上的大一新生,其中60%曾经有过编程经历,而剩余40%从未见过哪怕一行代码。大多数学生的学习是成功的,所以你也可以成功。
你不一定是在某门课程中来学习本书,我认为本书会广泛用于自学。然而,不管你学习本书是作为课程的一部分还是自学,都要尽量与他人协作。程序设计有一个不好的名声——它是一种个人活动,这是不公正的。大多数人在作为一个有共同目标的团体的一份子时,工作效果更好,学习得更快。与朋友一起学习和讨论问题不是作弊!而是取得进步最有效,同时也是最快乐的途径。如果没有特殊情况的话,与朋友一起工作会促使你表达出你的思想,这正是测试你对问题理解和确认你的记忆的最有效的方法。你没有必要独自解决所有编程语言和编程环境中的难题。但是,请不要自欺欺人,不去完成那些简单练习和大量的习题(即使没有老师督促你,你也不应这样做)。记住,程序设计(尤其)是一种实践技能,需要通过实践来掌握。如果你不编写代码(完成每章的若干习题),那么阅读本书就纯粹是一种无意义的理论学习。
大多数学生,特别是那些爱思考的好学生,有时会对自己努力工作是否值得产生疑问。当(不是如果)你产生这样的疑问时,休息一会儿,重新阅读这篇前言,阅读一下第1章(“计算机、人和程序设计”)和第22章(“思想和历史”)。在那里,我试图阐述我在程序设计中发现了哪些令人兴奋的东西,以及为什么我会认为程序设计是能为世界带来积极贡献的重要工具。如果你对我的教学理念和一般方法有疑问,请阅读第0章(“致读者”)。
你可能会对本书的厚度感到担心。本书如此之厚的一部分原因是,我宁愿反复重复一些解释说明或增加一些实例,而不是让你自己到处找这些内容,这应该令你安心。另外一个主要原因是,本书的后半部分是一些参考资料和补充资料,供你想要深入了解程序设计的某个特定领域(如嵌入式系统程序设计、文本分析或数值计算)时查阅。
媒体评论回到顶部↑
Amazon评论:
“这本书非常好,首先它以简单、易懂的方式阐述了C++原理和实践.而且强调养成良好的编程习惯,注意编程细节,C++编程人员都应该人手一册,常读常新。”
“作为C++语言的发明人,作者站在专业程序员的角度讲述如何为现实世界中的计算问题设计有效的解决方案。尽管本书采用的是C++语言,但其中涵盖的程序设计思想同样适用于其他语言,而且这些颇具实践意义的编程思想还可以弥补高校程序设计课程偏重语法细节,忽视总体思想方法和整体过程实现的问题,使读者充分认识到程序设计是一种解决问题的方法和能力,最终是对程序设计语言的应用,这也是本书的价值所在。”
“这本书是学习程序设计的最佳选择.无论是课堂学习还是自学,本书独具深度的思想、缜密的思路、开阔的视野及专业的讲解都会使你获益匪浅。”
“这本书与作者另一本享有盛誉的著作——《C++程序设计语言(特别版)》相辅相成……”
“这本书非常好,首先它以简单、易懂的方式阐述了C++原理和实践.而且强调养成良好的编程习惯,注意编程细节,C++编程人员都应该人手一册,常读常新。”
“作为C++语言的发明人,作者站在专业程序员的角度讲述如何为现实世界中的计算问题设计有效的解决方案。尽管本书采用的是C++语言,但其中涵盖的程序设计思想同样适用于其他语言,而且这些颇具实践意义的编程思想还可以弥补高校程序设计课程偏重语法细节,忽视总体思想方法和整体过程实现的问题,使读者充分认识到程序设计是一种解决问题的方法和能力,最终是对程序设计语言的应用,这也是本书的价值所在。”
“这本书是学习程序设计的最佳选择.无论是课堂学习还是自学,本书独具深度的思想、缜密的思路、开阔的视野及专业的讲解都会使你获益匪浅。”
“这本书与作者另一本享有盛誉的著作——《C++程序设计语言(特别版)》相辅相成……”
【插图】
评论交流
共有66人开贴评论 81人参与评论 30人参与打分 查看
发表于:2010-8-5 11:11:00
概括来说,这是一本以C++为载体讲述如何学习程序设计的书。书的起始(第0章),作者在表明了对一些常见学习程序设计思路的不认同后,表达了在方法论层面上自己对如何学习程序设计的观点:在程序设计的实践中学习程序设计。随后,作者以学习C++程序设计为例演示了这样的一个学习过程。前言中作者表示,这是本写给初学者的书,确实,他在第1章就聊了点计算机的事儿给完全的新人看,然后(第2-5章)介绍了些面向过程编程的基本概念(表达式、语句、程序和常见错误等)让读者很快上手,并在第6-7章通过演示实现一个计算器的过程巩固了前面的知识点、展示了程序设计的一些被实践证明的传统思路。再接下去的第8-9章中,作者补充了前面处于方便读者上手而忽略的关于函数和类的细节,至此,作者讲完了他所要介绍的基本知识。作者在第二-三部分提供了关于C++语言的更多细节,在第四部分提供了些拓展阅读内容(其它程序设计的书很少涉及这些内容,根据我这方面比较匮乏的阅读量)。关于第二-四部分的内容,大家翻翻目录就能有个大致了解。
封底用了“C++初学者的权威指南”的标签,我觉得并不夸张。学一项新东西,最关键的是在入门阶段能掌握正统正确的基本概念,并且在学习过程中不走弯路。(想想那些勤奋而且iq也很不错的民间科学家,我想他们的主要不足是在入门阶段没有得到受过正规学科训练、懂得什么是对什么是错的行家的指点,这挺让人心痛的。)出于这样的考虑,我推荐初学程序设计的朋友买一本,因为这本书最大的卖点(在我看来)在于它内容正统;并且明确强调了一条有效的学习途径:掌握语言的基本要素后,在大量实践中学习程序设计。而且,即使以后不做C++程序员,这本书第一部分的基础知识是通用的,对学习绝大多数语言都会有帮助。此外,我非常喜欢的一点是:作者在介绍C++的一些语言机制的同时,展示了自己在设计这些语言机制时的考虑(为了更好的表达思路或避免某些编程中易犯的错误等)。这种把读者引到C++背后的表述方式,会更有说服力也更能引发读者的思考。我推荐这本书给初学程序设计的在校学生以及对C++理解还不是那么到位的C++程序员。
对于已经通过入门阶段并且有较丰富经验的朋友,我觉得这本书就不是那么重要了:可能是因为作者太懂C++了,这本书写得有点行云流水的感觉,与那些中规中矩的书相比,不是很适合做参考手册。当然,作者粉丝可能会必备一本。总得来说,这本书翻译得还可以,有点字面上的问题也就不挑剔了,毕竟校对这么厚一本书是挺容易疲劳疏忽的,好在这样的问题不多,不影响阅读。
封底用了“C++初学者的权威指南”的标签,我觉得并不夸张。学一项新东西,最关键的是在入门阶段能掌握正统正确的基本概念,并且在学习过程中不走弯路。(想想那些勤奋而且iq也很不错的民间科学家,我想他们的主要不足是在入门阶段没有得到受过正规学科训练、懂得什么是对什么是错的行家的指点,这挺让人心痛的。)出于这样的考虑,我推荐初学程序设计的朋友买一本,因为这本书最大的卖点(在我看来)在于它内容正统;并且明确强调了一条有效的学习途径:掌握语言的基本要素后,在大量实践中学习程序设计。而且,即使以后不做C++程序员,这本书第一部分的基础知识是通用的,对学习绝大多数语言都会有帮助。此外,我非常喜欢的一点是:作者在介绍C++的一些语言机制的同时,展示了自己在设计这些语言机制时的考虑(为了更好的表达思路或避免某些编程中易犯的错误等)。这种把读者引到C++背后的表述方式,会更有说服力也更能引发读者的思考。我推荐这本书给初学程序设计的在校学生以及对C++理解还不是那么到位的C++程序员。
对于已经通过入门阶段并且有较丰富经验的朋友,我觉得这本书就不是那么重要了:可能是因为作者太懂C++了,这本书写得有点行云流水的感觉,与那些中规中矩的书相比,不是很适合做参考手册。当然,作者粉丝可能会必备一本。总得来说,这本书翻译得还可以,有点字面上的问题也就不挑剔了,毕竟校对这么厚一本书是挺容易疲劳疏忽的,好在这样的问题不多,不影响阅读。
| 我要写评论 |
| 查看所有评论交流(共66条) |








点击看大图







加载中...

