|
|
51CTO旗下网站
|
|
移动端

前言

《计算机科学概论(第12版)》本书是计算机科学概论课程的经典教材,全书对计算机科学做了百科全书式的精彩阐述,充分展现了计算机科学的历史背景、发展历程和新的技术趋势。本节为前言。

作者:刘艺/吴英/毛倩倩 译来源:人民邮电出版社|2018-01-28 19:45

前言

本书是计算机科学的入门教材。在力求保持学科广度的同时,还兼顾深度,以对所涉及的主题给出中肯的评价。

读者对象
本书面向计算机科学以及其他各个学科的学生。大多数计算机科学专业的学生在最初的学习中都有这样一个误解,认为计算机科学就是程序设计、网页浏览以及因特网文件共享,因为这基本上就是他们所看到的一切。实际上计算机科学远非如此。在入门阶段,学生们需要了解他们主攻的这门学科所涉及内容的广度,这也正是本书的宗旨。本书力图使学生对计算机科学有一个总体的了解,希望在这个基础上,他们可以领会该领域今后其他课程的特点以及相互关系。事实上,本书采用的综述方式也是自然科学入门教程的常用模式。

其他学科的学生如果想融入这个技术化社会,也需要具备这些宽泛的知识背景。适用于他们的计算机科学课程提供的应该是对整个领域很实用的剖析,而不仅仅是培训学生如何上网和使用一些流行的软件。当然,这种培训也有其适用的地方,但本书的目的不在于此,而是用作计算机科学的教科书。

在编写本书先前各版时,我们力求保持其对非技术类学生的可读性。因此,本书已经成功地用作教科书,读者囊括了从高中生到研究生的各个教育层次众多专业的学生。这一版将保持这一传统。

第12版新增的内容

第12版主要是将Python程序设计语言方面的介绍纳入了重点章节。在前几章中,对这些补充内容做了选读标记。在第5章,我们用Python和Python风格的伪代码替换了先前版本中类似Pascal的表示法。

这代表了本书的一个重要改变,本书之前一直努力回避突出任何一种特定语言。我们做出这种改变的原因有几个。首先,本书已经包含了相当多的各种语言代码,有几章还有详细的伪代码。其次,读者已经吸收了相当多的句法方面的知识,似乎可以将句法重新定位为在后续课程中会实际看到的语言。最后,更重要的是,越来越多的使用本书的教师断定,即使是优先介绍计算的广度,对于学生来讲,如果缺乏用于探索和实验的编程工具,许多课题也会很难掌握。

那为什么选择Python呢?语言的选择始终是一个有争议的问题,任何一种选择,反对的人都至少和支持的人一样多。Python是一个极好的中间选择,因为:

其句法简洁易学;

其I/O原语简单;

其数据类型和控制结构与先前版本中使用的伪代码原语很接近;

它支持多个程序设计范式。

Python是一门成熟的程序设计语言,它拥有充满活力的开发社区和丰富的在线资源,便于进一步的研究。根据某些衡量标准,Python仍然是业界10大最常用的程序设计语言之一,并且在计算机科学入门课程中的使用急剧增加。对非计算机专业的学生来讲,它是一门极其受欢迎的入门课程,并且已被其他物理学和生物学这样的STEM[1]领域广泛接受,作为计算科学应用的首选语言。

然而,本书的重点仍然是广义的计算机科学概念;补充Python语言的内容是为了让读者能体会到比先前版本更浓的编程味儿,而不是为了全面地介绍编程。所涵盖的Python主题是由本书现有的结构决定的。因此,第1章涉及的是Python句法,用于表示数据——整数、浮点数、ASCII字符串或Unicode字符串,等等。第2章涉及的是Python运算,详细地反映了本章其余部分所讨论的机器原语。条件、循环以及函数是在第5章引入的,那里需要使用这些结构来设计一个足够完整的描述算法的伪代码。简而言之,Python结构是用来进一步阐明计算机科学概念而不是劫持话题的。

除了Python的内容,几乎每一章都能看到对前一版对应章节的修订、更新以及修正。

章节安排

本书主题由具体到抽象逐步推进——这是一种很利于教学的顺序,每一个主题自然而然地引导出下一个主题。首先介绍的是信息编码、数据存储及计算机体系结构的基本原理(第1章和第2章);进而是操作系统(第3章)和计算机网络(第4章);探讨了算法、程序设计语言及软件开发(第5章至第7章);探索如何更好地访问信息(第8章和第9章);考虑了计算机图形学技术的一些重要应用(第10章)及人工智能(第11章);最后介绍了抽象的计算理论(第12章)。

虽然本书的编排顺序自然连贯,但各个章节都具有很强的独立性,可以单独阅读,也可以根据不同学习顺序重新排列。事实上,本书通常被用作各类课程的教材,内容选择的顺序是多种多样的。其中一种教法是先介绍第5章和第6章(算法和程序设计语言),然后按照需要返回到前面的相应章节。我还知道有门课程是从第12章有关可计算性的内容开始的。这本书还曾作为深入不同领域项目的基础,用于“高级研讨班”课程的教科书。对于不需要了解太多技术的学生,教学中可以重点讲述第4章(组网及因特网)、第9章(数据库系统)、第10章(计算机图形学)和第11章(人工智能)。

每章开篇都用星号标出了选学章节。选学章节要么是讨论更专业的话题,要么是对传统内容作深入探究。此举仅仅是为那些想采取不同阅读顺序的人提供一点建议。当然,还有其他读法。尤其对于那些寻求快速阅读的读者,我们建议采取下面的阅读顺序。

续表

在本书中有几条贯穿始终的主线。主线之一是计算机科学是不断发展变化的。本书从历史发展的角度反复呈现各个主题,讨论其当前的状况,并指出研究方向。另一条主线是抽象的作用以及用抽象工具控制复杂性的方式。该主线在第0章引入,然后在操作系统、体系结构、组网、算法的发展、程序设计语言设计、软件工程、数据组织和计算机图形学等内容中反复体现。

致教师
本教材所包含的内容很难在一个学期内讲授完,因此一定要果断砍掉不适合自己教学目标的那些主题,或者根据需要重新调整讲授顺序。你会发现,尽管本书有它固有的结构体系,但各个主题在很大程度上是相对独立的,完全可以根据需要作出选择。我写本书的目的是把它作为一种课程的资源,而非课程的定义。我们建议鼓励学生自己阅读课堂上没有讲授的内容。如果我们认为所有的东西都一定要在课堂上讲,那就低估学生的能力了。我们应该教会他们独立学习。

关于本书从具体到抽象的组织结构,我们觉得有必要多言几句。作为学者,我们总以为学生会欣赏我们对于学科的观点,这些观点通常是我们在某一领域多年工作中形成的。但作为教师,我们认为最好从学生的视角呈现教材。这就是为什么本书首先介绍数据的表示/存储、计算机体系结构、操作系统以及组网,因为这些都是学生们最容易产生共鸣的主题:他们很可能听说过JPEG、MP3这些术语;可能用CD和DVD刻录过资料;买过计算机配件;应用过某一操作系统;上过因特网。从这些主题开始讲授这门课程,学生可以为许多让他们困惑多年的问题找到答案,并且把这门课看成是实践课程而不是纯理论的课程。由此出发,就会很自然地过渡到较抽象的算法、算法结构、程序设计语言、软件开发方法、可计算性以及复杂性等内容上,而这些内容就是我们本领域的人认为的计算机科学的主要内容。正如前面所说的,以这种方式呈现全书并不是强求大家都按此顺序讲课,只是鼓励大家如此尝试一下。

我们都知道,学生能学到的东西要远远多于我们直接传授的内容,而且潜移默化传授的知识更容易被吸收。当要“传授”问题的解决方法时,就更是如此。学生不可能通过学习问题求解的方法变成问题的解决者,他们只有通过解决问题,而且不仅仅是解决那些精心设计过的“教科书式的问题”,才能成为问题的解决者。因此,本书加入了大量的问题,并特意让其中一些问题模棱两可——这意味着正确方法或正确答案不一定是唯一的。我们鼓励大家采用并拓展这些问题。

“潜移默化学习”类的其他话题还有职业精神、道德和社会责任感。我认为这种内容不应该独立成章,而是应该在有所涉及时讨论,而这正是本书的编排方法。你会发现,3.5节、4.5节、7.9节、9.7节和11.7节分别在操作系统、组网、软件工程、数据库系统和人工智能的上下文中提及了安全、隐私、责任和社会意识的问题。你还会发现,每一章都包含了一些社会问题,这些问题将鼓励学生思考他们所生活的现实社会与教材中的内容的关系。

感谢你对本书感兴趣。无论你是否选用本书作为教材,我都希望你认同它是一部好的计算机科学教育文献。

教学特色
本书是多年教学经验的结晶,因此在辅助教学方面考虑较多。最主要的是提供了丰富的问题以加强学生的参与——这一版包含1 000多个问题,分为“问题与练习”“复习题”和“社会问题”。

“问题与练习”列在每节末尾(除了第0章外),用于复习刚刚讨论过的内容,扩充以前讨论过的知识,或者提示以后会涉及的有关主题。这些问题与练习的答案可在网上下载[2]。

“复习题”列在每章的末尾(第0章除外)。它们是课后作业,内容覆盖整章,书中没有给出答案。

“社会问题”也列在每章的末尾,供思考讨论。许多问题可以用来开展课外研究,可要求学生提交简短的书面或口头报告。

在每章的末尾还设有“课外阅读”,它列出了与本章主题有关的参考资料。同时,前言以及正文中所列的网址也非常适合用于查找相关资料。

补充材料
本书的许多补充材料可以从配套网站www.pearsonhighered.com/brookshear上找到。以下内容面向所有读者。


每章的实践项目帮助读者加深理解本教材的主题,并可以帮助读者了解其他相关主题。

每章的“自测题”帮助读者复习本书中的内容。

介绍Java和C++基本原理的手册,它在教学顺序上与本书是兼容的。
除此之外,教师还可以登录Pearson Education的教师资源中心(www.pearsonhighered.com)网站申请获得下面的教辅资料。


包含“复习题”答案的教师指南。

PowerPoint幻灯片讲稿。

测试题库。
本书的勘误表(如果有的话)网址为www.mscs.mu.edu/~brylow/errata/

致学生
Glenn Brookshear有一点点偏执(他的一些朋友说可远不是一点点),所以写本书时,他很少接受他人的建议,许多人认为其中一些内容对于初学者过于高深。但是,我们相信即使学术界把它们归为“高级论题”,但只要与主题相关就是合适的。读者需要的是一本全面介绍计算机科学的教科书,而不是“缩水”的版本——只包括那些简化了的、被认为适合初学者的主题。因此,我们不回避任何主题,而是力求寻找更好的解释。我们力图在一定深度上向读者展示计算机科学最真实的一面。就好比对待菜谱里的那些调味品一样,你可以有选择地略过本书的一些主题,但我们全部呈现出来是为了在你想要的时候供你“品尝”,而且我们也鼓励你们去尝试。

我们还要指出的是,在任何与技术有关的课程中,当前学到的详细知识未必就适合以后的需要。这个领域是发展变化的——这正是使人兴奋的方面。本书将从现实及历史的角度展现本学科的内容。有了这些背景知识,你就会和技术一起成长。我们希望你现在就开始行动起来,不要局限于课本的内容,而要进行大胆探索。要学会学习。

感谢你的信任,选择了我们的这本书。作为作者,我们有责任创作出值得一读的作品。我们希望你觉得我们已经尽到了这份责任。

致谢
首先,我要感谢Glenn Brookshear,他一直照看着这本书——“他的孩子”——包括之前的11个版本,跨越了计算机科学领域快速发展和动荡变化的超过四分之一个世纪的时间。虽然这是他头一版允许合著者来审查所有的修订,但这一版收录的仍然基本是Glenn的“声音”,并由他主导,这也是我所希望的。任何新的瑕疵都是我造成的,而优雅的基本框架都是他设计的。

我和Glenn要感谢那些支持本书(阅读并使用本书前几个版本)的人们,我们感到很荣幸。

在David T. Smith(宾夕法尼亚州印第安纳大学)和我共同编写第11版修订的过程中,David发挥了很重要的作用。他做的许多修订在第12版中仍然存在。David对本版的仔细阅读和对补充材料的仔细关注对本书来讲至关重要。Andrew Kuemmel(Madison West)、George Corliss (Marquette)和Chris Mayfield(James Madison)为本版本的初稿提供了有价值的反馈、深刻的见解和/或鼓励,同时James E. Ames(Virginia Commonwealth)、Stephanie E. August(Loyola)、Yoonsuck Choe(Texas A&M)、Melanie Feinberg(UT-Austin)、Eric D. Hanley(Drake)、Sudharsan R. Iyengar(Winona State)、Ravi Mukkamala(Old Dominion)和Edward Pryor(Wake Forest)对Python方面的修订提供了宝贵的评价。

其他对这一版和之前版本作出贡献的人包括J. M. Adams、C. M. Allen、D. C. S. Allison、E. Angel、R. Ashmore、B. Auernheimer、P. Bankston、M. Barnard、P. Bender、K. Bowyer、P. W. Brashear、C. M. Brown、H. M. Brown、B. Calloni、J. Carpinelli、M. Clancy、R. T. Close、D. H. Cooley、L. D. Cornell、M. J. Crowley、F. Deek、M. Dickerson、M. J. Duncan、S. Ezekiel、C. Fox、S. Fox、N. E. Gibbs、J. D. Harris、D. Hascom、L. Heath、P. B. Henderson、L. Hunt、M. Hutchenreuther、L. A. Jehn、K. K. Kolberg、K. Korb、G. Krenz、J. Kurose、J. Liu、T. J. Long、C. May、J. J. McConnell、W. McCown、S. J. Merrill、K. Messersmith、J. C. Moyer、M. Murphy、J. P. Myers、Jr.,D. S. Noonan、G. Nutt、W. W. Oblitey、S. Olariu、G. Riccardi、G. Rice、N. Rickert、C. Riedesel、J. B. Rogers、G. Saito、W. Savitch、R. Schlafly、J. C. Schlimmer、S. Sells、Z. Shen、G. Sheppard、J. C. Simms、M. C. Slattery、J. Slimick、J. A. Slomka、J. Solderitsch、R. Steigerwald、L. Steinberg、C. A. Struble、C. L. Struble、W. J. Taffe、J. Talburt、P. Tonellato、P. Tromovitch、P. H. Winston、E. D. Winter、E. Wright、M. Ziegler,还有一位匿名的朋友。我们向他们中的每一位致以最真诚的谢意。

如前所述,本书的配套网站上有Java和C++手册来讲述这两种语言的基础知识,与本书的内容相得益彰。它们是由Diane Christie撰写的,在此表示感谢。另外,还要感谢Roger Eastman,他是本书配套网站上每章实践项目的出题人。

我同时要感谢支持本项目的Pearson出版集团的员工。特别是,和Tracy Johnson、Camille Trentacoste、Carole Snyder一起工作特别愉快,他们为本书贡献了自己的智慧,提供了许多改进。

最后,我要感谢我的妻子Petra——“the Rock”,这本书是专门献给她的。她的耐心和毅力往往超出了我,这本书因她的稳定影响而更好了。

D. W. B.


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

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

回书目      下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Web服务安全

Web服务技术是最近几年迅速兴起的一种应用集成技术,而安全问题是影响该技术广泛应用的一个关键因素。这个问题已成为最近几年来国内外研究...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊