设为首页 加入收藏

TOP

C++编程你也行 前言
2013-10-06 23:55:18 来源: 作者: 【 】 浏览:77
Tags:编程 前言

前      言
拿起本书,你很可能正在揣摩这本书是否有助于你学习C++(www.cppentry.com)。为了做出选择,你需要知道本书将会讲些什么内容,以及怎样不同于堆积在书商书架的其他许多书。我并没打算宣称本书独一无二地优于所有其他类似书籍,但我敢说除了技术精确之外,本书在其他方面也与众不同。
第一个问题:你已经能够使用某种程序语言编程(www.cppentry.com)了吗?如果你的答案是不能,那么几乎可以肯定,本书并非一本适合你起步的书籍。你可能需要某些其他的书,例如我的《You Can Do It!》[Glassborow 2004]。然而,如果你已经了解,诸如循环、判断语句,以及函数等概念,那么请继续阅读本书。
我尽可能少地限定读者需要知道的编程(www.cppentry.com)知识,特别是,我不要求读者已经了解C语言的编程(www.cppentry.com)知识。如果事实上你已经熟悉C语言,那么请你准备好学习以不同的方式做事情。虽然“C++(www.cppentry.com)”这个名字暗示着用C++(www.cppentry.com)能够超过C,并且几乎所有的C也都是C++(www.cppentry.com),但是优秀的C程序通常并不是优秀的C++(www.cppentry.com)程序。两种语言共享一个公共核心,但二者的差异导致了迥异的编程(www.cppentry.com)风格。
我将为你介绍用C++(www.cppentry.com)进行编程(www.cppentry.com),这会用到过去20年中发展起来的所有现代惯用法和工具。出于这个原因,本书使用高层特性介绍C++(www.cppentry.com),仅当确有所需要时才会讨论其低层特性。
本书的目的是使你牢固掌握标准C++(www.cppentry.com)的基础知识。为了加深理解,你需要动手编写程序。因此,你可以尝试更富有冒险性的程序。我以自己的库补充了C++(www.cppentry.com)标准库,我的库提供了以下四项基本的附加功能:
•一些简单工具函数(utility function),使得从一开始就更容易编写出正确的程序。它们用纯粹的标准 C++(www.cppentry.com)写成,因此可以被移植到所有标准 C++(www.cppentry.com)实现。
•一个可以从纯控制台程序(以纯文本形式运行的程序)中控制的非常原始的图形窗口。它可以一致地运行在基于Windows和Linux的PC之上(以及在OS X版本的Apple Mac之上)。
•一个“一键鼠标”(也就是对所有按钮一视同仁的鼠标)。最大的好处是,该鼠标不具有因为处理多个按钮、滚轮等而产生的复杂性。
•直接键盘读取,于是你的程序就可以直接监测键盘按键。这一小特性戏剧性地扩展了你所能编写的程序的种类。
注意,我提供这四项功能是为了使学习C++(www.cppentry.com)的过程更为愉快,与没有它们的情况相比较,你可以编写出更广泛的程序。(如果你愿意,你甚至可以编写出某个经典的控制台游戏,例如Space Invaders)。在本书的大部分内容中,我都避免显式地使用我的库,但你应该可以自由地使用它,既可以用来增强针对所提供的练习的解决方案,也可以添加到你自己的其他练习中去。
除了我自己的工具库以外,本书还附有一款完整的C++(www.cppentry.com)编译器(MinGW)以及在两款IDE之间选择的机会。第一款为MinGW Developer Studio,它是用户支持(user-supported)的产品。如果这对你来说是个生词,那么我告诉你,它意味着如果你喜欢某产品并打算继续使用的话,你最好能为该产品的作者捐点款(不论你认为对你而言这是否值得)。Pxviii它不是共享软件,因为不存在限制性许可证来限定在不付费的情况下能使用什么功能。它也不是免费软件,免费软件从来就不期望你付给谁一分钱(MinGW本身是一个杰出的免费软件产品的榜样)。那么,请登录产品的网站并捐款,以表示你对一个构造优良的工具的感激之情。
第二个可供选择的IDE是更复杂但高度可移植的JGraspTM,它来自奥本大学(Auburn University)。它用Java写成,因此你需要一个适当的Java运行时环境。这款IDE为教学目的而编写。它拥有许多卓越的功能以帮助新手探索自己所写的代码。它对个人免费,但是不能作为商业产品的一部分分发。包含在本书光盘中的许可证是教育性书籍专用的。JGrasp接受许多C++(www.cppentry.com)编译器(包括MinGW在内)作为插件程序。
这些IDE既可以运行于微软Windows之上,也可以运行在Linux系统上。实际上,JGrasp能够在支持Java的任何系统上运行,但就本书而言,仅限于那些能实现我的库的系统。在本书写作期间,这些系统包括Windows 95之后所有版本的Windows和Linux(以及我前面说过的Apple Mac上的OS X)。
本书的正文部分假定你使用的是以MinGW作为编译器的MinGW Developer Studio。该工具免费提供于随书光盘中,它是职业程序员通常使用的重量级的专业工具。你也可能希望使用其他一些工具集(toolset),不过在此之前你需要检查网站(http://www.spellen.org/youcandoit/),看看我是否针对那套工具提供了一份库的副本。遗憾的是,C++(www.cppentry.com)的局限性之一是分发的库常常特定于编译器,这就意味着,如果你使用的是一款不同的编译器,就得重新编译库。
我将本书设计为一本可当作参考书来使用的书。举个例子,当我介绍C++(www.cppentry.com)内建类型(built-in type)的时候,学习文块(study text)将只使用到可用类型的一个子集。而在该章的末尾,你会发现一个关于所有内建类型以及其派生物的整合集。该整合集被放置于靠近你初次学习C++(www.cppentry.com)类型系统的地方(而不是作为附录存在),它提供了集中于一处的参考,以便你查阅。初次学习那一章时,你可能会跳过参考部分,但在稍后某个阶段你也许希望深入阅读其中某个主题,或方便地查阅什么东西。
总结一下,本书教你使用标准C++(www.cppentry.com)以现代惯用风格进行编程(www.cppentry.com)。为使学习的过程更令人愉快,我提供了一些对C++(www.cppentry.com)库的扩展,最起码可以在微软Windows(98及后续版本)和Linux之间移植。本书带有你阅读和学习所需要的每样东西,就缺一台电脑和操作系统了——那是你必须自行准备的。除了一些扩展支持(图形、声音、鼠标以及直接键盘读取)外,本书中其他所有东西都可以移植到任何安装了标准C++(www.cppentry.com)编译器的计算机上。

学习C++(www.cppentry.com)
有时候环境迫使我们通过自学获得新技能。这条路常常很难走,而且有时候会妨碍我们的进展。如果你想要学习演奏一种乐器,你需要自己练习,但花时间与其他人一起练习也是不可或缺的。否则,你会养成不良习惯,这将严重地妨碍你将来的进步,不利于同他人一起制作音乐。同样的道理也适用于学习计算机语言编程(www.cppentry.com)。你很容易就会将自己第一门语言的惯用法强加到你正在学习的新语言(C++(www.cppentry.com))上。如果缺乏与他人协作的训练,你对C++(www.cppentry.com)这种不正确的使用不会暴露出来。若你的第一门语言是C++(www.cppentry.com)的近亲(例如C、C#或Java),情况尤其如此。仅仅学习语言的语法是远远不够的,你还需要学习应当如何使用该语法。
在上学时,我从一本书中学会了围棋。我向几个小伙伴传授规则,并在一个自制的木板上玩此游戏。许多年后,我遇见某人,他曾跟一名经验丰富的棋手学过围棋。起初几盘,对我们而言都很有意思,因为我对战术和战略的理解和运用是完全随意的。有些地方我玩得相对合理,而在其他地方我又犯新手的错误。千万别让你的C++(www.cppentry.com)也变成那样。
你最好寻找一个学习伙伴和一位导师。前者会在语言上为你提供一个可供参考的观点;后者将帮助你形成有效透彻的理解。通过与老手交流,可确保你弄清楚事物的运作机理。警惕那些自封的专家。与我早期学习围棋知识一样,他们的知识可能毫无章法。访问下面这些有益的地方,阅读并提问:
comp.lang.c++.moderated
alt.comp.lang.learn.c-c++
那些Usenet新闻组有常驻的专家,他们比绝大多数人更懂C++(www.cppentry.com)。在那里,你可以找到真正的专家,充分利用他们。
学习C++(www.cppentry.com)是一项交互式练习。不实际编写程序就无法学会C++(www.cppentry.com)。从任何其他一种你所学会的语言中,你应该已经认识到了这一点,在这里我将它作为重点进行重申。如果你跳过本书中给出的实际操作,你就是在自讨苦吃。虽然你可能会更快速地读完本书,但你的C++(www.cppentry.com)水平将会因此而更糟糕。本书并不是一本“在某段规定时间内学会C++(www.cppentry.com)”的书,你需要投入较长的时间,直到你掌握每一个知识点为止。有时也许值得跳过一个关键的知识点,稍后再回过头来学习。但是如果因为你不理解,或你认为它没什么用,而不断地跳过某些东西,反过来它就会找你麻烦。

【责任编辑:雪花 TEL:(010)68476606-8007】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++编程你也行 序言 下一篇第六章 行为、序列点和求值顺序

评论

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