设为首页 加入收藏

TOP

写给大家看的C++书 引言
2013-10-07 00:47:28 来源: 作者: 【 】 浏览:60
Tags:写给 大家 引言

引言

我们认为,程序员选用C++(www.cppentry.com)语言来编写程序的理由不外乎两种,由此可以把C++(www.cppentry.com)程序员大致划分为两类:第一类是那些一开始就学C++(www.cppentry.com)语言的人们(或者是在学校,或者是工作以后);第二类是那些对编写软件有兴趣,并认为C++(www.cppentry.com)最适合完成其工作的人们。不管你属于哪类,我们都不会让你失望--无论是对C++(www.cppentry.com)语言,还是对这本书。

C++(www.cppentry.com)已经有很多年的历史了,虽然在它之后又出现了Java和C#之类的新语言,但它至今仍是人们开发软件时的最佳选择之一。那些巨头中的巨头,如微软、Adobe、Sun、英特尔、亚马逊、Google、苹果、诺基亚等公司,都在使用C++(www.cppentry.com)。这门语言相对比较容易使用(选用本书作为入门教材就更是如此了 ),而且具有十分强大的威力。现在,你可以用它编写出一些基本的程序,而几个月后就会写出很不错的程序了。

虽然C++(www.cppentry.com)是一种专业开发人员的程序设计语言,但那些没有经过正规培训或者只具备普通计算机水平的人们也可以掌握它。我们是按照"无需任何预备知识"和"读者想要知道的都在这里"这两条标准来编写这本C++(www.cppentry.com)入门级教程的。你们不需要具备任何程序设计经验(包括C语言方面的经验),只要按照书里给出的示例程序和解释来学习,就可以迅速掌握许多实实在在的真本事。

什么是C++(www.cppentry.com)

了解C++(www.cppentry.com)必须从C语言开始。C语言出现于20世纪70年代,它向程序员提供了一种全新的、宝贵的工具(C语言又起源于B语言,但我们没必要追溯到那么遥远)。C语言的两大主要优点是性能好和可移植性强。与其他程序设计语言相比,用C语言编写出的程序往往更简洁、更快,而绝大多数C语言代码可以轻而易举地在许多操作系统上使用。

C语言是一种过程式语言(procedure language),其意思是计算机命令是按照顺序执行的。这本身并没有什么不好,但随着程序数量的增加和软件规模的扩大,依靠"过程"来编写程序会让软件开发工作的效率变得越来越低。

C++(www.cppentry.com)语言是美国贝尔实验室的工程师Bjarne Stroustrup在20世纪80年代创建的。作为C语言的增强版本,C++(www.cppentry.com)在保留了C语言的全部优点(执行效率高,可移植性强,能够在众多低档计算机上运行)的同时,还增加了如下优点:

支持对象和OOP(参阅下页"什么是OOP");

能够显著提高程序员的工作效率;

解决了C语言中的常见问题。

但所有这些并不意味着C语言没必要存在了,只是作为其升级版本的C++(www.cppentry.com)更完善而已。这把我们带到了下一个话题……

虽说C++(www.cppentry.com)脱胎于C语言,但在学习本书时并不需要你了解C语言。如果你已经掌握了C语言,那当然没有什么坏处,但你很快就会发现,只要能够在C++(www.cppentry.com)里找到更好的解决方案,我们就会抛弃那些既容易出问题又陈旧过时的C语言技巧(比如使用C++(www.cppentry.com)字符串来取代C语言中的字符串)。C语言仍是C++(www.cppentry.com)的一个子集,这意味着绝大多数用C语言编写出来的代码在C++(www.cppentry.com)环境里仍是合法的,但本书的重点将是如何正确地使用C++(www.cppentry.com)来编写程序。

什么是OOP

C语言和C++(www.cppentry.com)语言之间的一个主要区别,是能否支持OOP(object-oriented programming,面向对象编程(www.cppentry.com))技术。在20世纪70年代末到80年代初,出现了一些新的面向对象的程序设计语言,比如Smalltalk。OOP关注的焦点是数据而不是逻辑。虽然OOP本质上与过程式程序设计技术只是一个事物的两面,但它对软件开发方式的影响却是十分深远的。

OOP要求程序员先找出需要解决的问题,再把问题表述为一个"类"(class)。在具体解决某个特定的问题时,程序员需要创建一个相应的类的"实例"(instance),这个实例就叫做"对象"(object)。对象是一种特殊的变量类型,同时包含某种数据和操纵这种数据的方式。OOP的内涵当然远不止这些,在处理复杂问题的时候更能体现其优势,其中最重要的是能让你的代码更容易地重用。

OOP继而引出了"泛型编程(www.cppentry.com)"(generic programming),这也是C++(www.cppentry.com)所支持的。泛型编程(www.cppentry.com)技术能够让程序员编写出与数据类型无关的解决方案。我们将在第13章对此做深入探讨。

使用C++(www.cppentry.com)编程(www.cppentry.com)的步骤

使用C++(www.cppentry.com)来开发应用程序是一个多步骤的过程。首先,你必须了解最终结果是什么:你的应用程序应该完成什么样的工作。只有明确了目标,你才可以更好地确定自己需要声明哪些变量、需要完成哪些功能,等等。本书里每一个应用程序示例的开头都增加了一段简明的注释,来说明它的具体用途。

对初学者而言,下一步将是开始编写有关的C++(www.cppentry.com)源代码,这是一个普通的文本文件,如代码清单i-1所示。很明显,本书的重点是教会你需要敲入哪些代码才能创建出你所想要的应用程序。

代码清单i-1  最基本的C++(www.cppentry.com)源代码文件的格式

1 // hello.cpp - Script i.1
2 // This is a sample
3 // C++(www.cppentry.com) file.

5 #include <iostream>

7 int main() {

9  // Say hello.
10  std::cout << "Hello, World!";
11 
12  return 0;
13 
14 }

在编写好源代码之后,你将需要对它进行编译。编译是把一个包含着C++(www.cppentry.com)代码的普通文本文件转换为一个能够让计算机识别和执行的指令集合的过程。如果编译成功,其结果是一个可执行的程序文件,而编译步骤的目的就是为了让这个程序文件能够在那台计算机上执行(如图i-1所示)。

如果编译步骤未能成功完成,则需要对你的代码进行调试、调试、再调试。出现问题的原因可能是有拼写错误、遗漏了某个特定的字符或者误用了某个函数。可以告慰大家的是,本书里的示例代码都进行了调试。换句话说,只要你准确地按照书中的指示去做,代码就能正确运行。

有了编译好的应用程序之后,你就可以像对待其他的应用程序那样,双击其图标去运行它了。本书里的所有示例程序都将在一个控制台或终端窗口里运行(如图i-2所示)。

 

 

需要准备些什么

使用C++(www.cppentry.com)是免费的,对机器的要求也很低。对初学者来说,只要有一台计算机就行,你可能早就知道这一点了。你的电脑是什么样的、它运行的是哪一种操作系统、它的内存和可用的硬盘空间有多少都不重要。如果你的电脑能运行(比如说)Mozilla Firefox,你就可以用C++(www.cppentry.com)创建应用程序。

最重要的要求,事实上也是唯一的要求,是你的电脑里必须有一个合格的C++(www.cppentry.com)编译器。它可以是简单的g++(gcc的一部分),可以免费获得,在绝大多数操作系统上都可以运行,绝大多数派生自Unix的操作系统都包含了它。除了C++(www.cppentry.com)编译器,你还需要有一个文本编辑器和一个用来运行C++(www.cppentry.com)编译器的命令行界面。这两个工具在所有的操作系统里都有。

虽然可以用文本编辑器和编译器来创建应用程序,但最好还是使用一个完备的IDE(integrated development environment,集成开发环境),比如Windows环境下的Dev-C++(www.cppentry.com)或是Mac OS X环境下的Xcode,这两种工具都可以免费获得。使用IDE,你可在同一个界面下完成编写、编译、调试和执行C++(www.cppentry.com)代码的工作。附录A介绍了这两种工具的安装。在第1章里,你们将了解这两种工具的基本用法。我们强烈建议大家根据自己的操作系统选用Dev-C++(www.cppentry.com)或Xcode。本书里的每一个应用程序示例都遵循最新的C++(www.cppentry.com)标准(参阅注解),并已经在上述两种IDE环境里进行过测试。如果你使用的是Dev-C++(www.cppentry.com)或Xcode,那么试用本书的应用程序示例就会顺利许多。

至于你,本书的读者,除了学习C++(www.cppentry.com)的兴趣和愿望,你不需要再准备任何东西。

C++(www.cppentry.com)标准

有些技术,比如C++(www.cppentry.com),是由一个专门的机构来管理的,该机构负责决定哪些功能和语法可以或不可以接受。通过这样的做法,这些机构就可以在应用户要求而增加新功能的同时保证该技术的稳定性(以便让那些现有的应用程序仍可以使用)。

因为相对比较"年轻",关于C++(www.cppentry.com)的标准只有两个(不像C语言那样有一大批各种各样的标准)。第一个正式的C++(www.cppentry.com)标准是在1998年定义的。第二个C++(www.cppentry.com)标准是在2003年推出的,但它的大部分内容是对第一个C++(www.cppentry.com)标准中的已知错误进行修正。不管怎么说,我们在本书里遵守这个最新的标准,这意味着你们用过的任何符合这个标准的工具都可以毫无问题地用来运行本书里的代码。

因为C++(www.cppentry.com)是C语言的一个扩展,还因为有许多C++(www.cppentry.com)代码要用到各种C语言函数库,所以我们就必须考虑关于C语言的标准。最新的C语言标准叫做C99,它是在1999年发布的。

C++(www.cppentry.com)管理委员会已经在研究下一代C++(www.cppentry.com)标准了,新标准的代号是C++(www.cppentry.com)0X,预计在2009年前后推出。

关于本书

因为C++(www.cppentry.com)脱胎于C语言,所以有许多关于C++(www.cppentry.com)程序设计的教科书都要求其读者具备一定程度的C语言知识。 本书没有这样的要求。我们将在本书的前几章对C和C++(www.cppentry.com)的基本知识进行介绍,但是从C++(www.cppentry.com)方面出发的。你们从本书里不会学到C语言的全部细节,但可以学到足够的C语言的基本知识以使用C++(www.cppentry.com)来开发各种有实际用途的应用程序。

与大多数C++(www.cppentry.com)程序设计语言的教科书一样,本书的结构有时也会有点儿奇怪。因为C++(www.cppentry.com)的全部目的是为了让软件开发工作变得更容易,所以一些看起来非常复杂的记号其实不难懂。因此,你们偶尔会在前面的章节里遇到一些我们还没有详细介绍的新概念--因为它们很容易实现。我们在此提及,让读者心里有这样一个底:虽然我现在还不能明白其中的奥妙,但再过一段时间这些疑难就会迎刃而解。这虽然略显怪异,但与其为了减少概念上的混乱而在刚开始采取不太准确的讨论,还不如这么讨论C++(www.cppentry.com)更好一些。

我们希望通过本书把最基本的C++(www.cppentry.com)编程(www.cppentry.com)技术介绍给大家,但不打算过于深入细节或是用那些不太常用的技术难点把读者搞得头晕脑胀。本书使用了以下一些体例。

首先,我们会一步一步地告诉你们应该敲入哪些代码或是可以采取哪些别的步骤。需要你们从键盘敲入的文本是用如下字体印刷的:

std::cout << "Hello, world!";

因为本书的宽度比常用的文本编辑器或IDE的窗口要小,某些步骤里的代码行在书中被分成了两行甚至更多行,但它们在编辑器里是不应该分断开的。我们在书中会用一个小箭头来表明这种分断,如下所示:

std::cout << "Hello, world! How are you
→doing on this fine Sunday afternoon ";

对于这样的代码,你们应该把它们连续输入到同一行里,否则可能会发生错误。

我们将每个程序的完整C++(www.cppentry.com)代码单独保存为一个文件,并编了行号以方便大家查阅(参见代码清单i-1)。那些行号用不着你亲自输入,因为那反而会让你的代码无法使用。绝大多数好的文本编辑器和IDE都可以替你完成这个编号的工作。在代码清单里,与正在介绍的新概念有关的节用黑体字突出显示,以提醒大家注意。

书中会有许多窗口截图,它们或者是某个程序的运行结果(如图i-2所示),或者是需要输入的命令(图i-3所示),或者是某程序的某个特定部分。所有这些截图都取材于Windows或Mac OS X系统(Mac OS X系统的截图和操作步骤也适用于绝大多数Unix和Linux系统)。同一个程序在不同的计算机上运行时,其窗口画面很难做到完全相同,但其主要内容应该差不多,而其功能应该是完全相同的。

最后,我们要告诉大家本书没有哪些东西:本书没有像其他一些编程(www.cppentry.com)教科书那样,在每一章的末尾为读者准备一些思考题或练习题。这套系列丛书不采用这种体例。但你们将看到一些关于如何改进或应用有关技巧的建议,更重要的是,你们将从实际出发循序渐进地学会C++(www.cppentry.com)。

 

提问的智慧

无论你是想在本书的支持论坛上发布消息、给笔者发电子邮件,还是在某个新闻组里提问题,要知道怎样最有效地提出你的问题,才能较快地收获高质量的回信。如果你想在最短的时间里获得最好的答案,请按以下步骤进行:

1.搜索因特网,查阅随机手册,浏览与你的问题有关的各种文档。

2.选择最恰当的论坛(新闻组、邮件列表等)上提出你的问题。

3.给你的求助信加上一个简明扼要的标题。

4.详细描述你的问题,完整地给出有关的代码,说清楚是什么地方出了问题,包括你正在运行的操作系统和你正在使用的开发环境(IDE、编译器等)。

如果你想得到更多的提示和启发,请到www.catb.org/~esr/faqs/smart-questions.html上好好读读由Eric Steven Raymond编写的"How to Ask Questions the Smart Way"(提问的智慧)。你在那里花费10分钟,可以让你在以后省下几小时的时间!

如何获得帮助

虽然本书是以最务实、最基本和最容易上手的原则编写的,但你们在学习过程中难免会遇到一些问题,需要一些帮助。下面是一些求助手段,我们按响应速度的快慢排列(速度快的列在前面)。

搜索因特网。

如果你的问题与某个特定的函数、头文件或概念有关,Google往往能让你立刻找到答案。

使用C++(www.cppentry.com)新闻组或论坛。

附录B列出了一些可以去求助的地方。如果你提出问题的方式足够聪明(参阅注解),就应该能在比较短的时间里得到想要的答案。

访问本书的支持网站。

本书的官方Web站点可以在www.DMCInsights.com/cppvqs处找到。其中可以查到本书里的所有代码清单、到其他资源的链接以及一份勘误表。

访问本书的支持论坛。

在本书的支持网站上,可以找到一个支持论坛。读者可以在那里提出问题、获得答案、看其他人在做什么,等等。这个论坛由作者本人负责管理,只要没有特殊情况,我们就一定会回答你们提出的问题。

给作者发电子邮件。

如果其他办法都没效果,我们欢迎大家发送电子邮件到cppvqs@DMCInsights.com。但必须声明在先:我们不可能替你完成你的工作,不会替你调试你熬夜编写出来的200行代码,而且我们可能需要几天的时间才能给你们回信。不过,只要你给我们发来邮件,我们就一定会回复的,我们将尽最大的努力来帮助你。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇5.4.3 文件过滤 下一篇写给大家看的C++书 目录

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: