内容简介
本书从信息层开始,历经硬件层、程序设计层、操作系统层、应用层和通信层,深入剖析了计算系统的每个分层,*后讨论了计算的限制。此外,正文中插入了大量的名人传记、历史点评、道德问题和新的技术发展信息,有助于你进一步了解计算机科学。每章后面都附带有大量的练习,可以帮助你即时重温并掌握这一章所讲述的内容。 本书是计算机科学导论课程的理想教材,对于想要了解计算机科学概况的非专业人员,本书也是一个很好的选择。
目录
出版者的话
前言
第一部分 基础篇
第1章 全景图 3
1.1 计算系统 4
计算系统的分层 4
抽象 6
1.2 计算的历史 9
计算硬件简史 9
计算软件简史 19
预言 25
1.3 计算工具与计算学科 26
计算的基本思想 27
小结 28
道德问题:数字鸿沟 30
关键术语 31
练习 31
思考题 33
第二部分 信息层
第2章 二进制数值与记数系统 35
2.1 数字与计算 36
2.2 位置记数法 36
二进制、八进制和十六进制 38
其他记数系统中的运算 41
以2的幂为基数的记数系统 42
将十进制数转换成其他数制的数 44
二进制数值与计算机 45
小结 48
道德问题:FISA法庭 49
关键术语 49
练习 50
思考题 53
第3章 数据表示法 55
3.1 数据与计算机 56
模拟数据与数字数据 57
二进制表示法 59
3.2 数字数据表示法 61
负数表示法 61
实数表示法 65
3.3 文本表示法 68
ASCII字符集 69
Unicode字符集 70
文本压缩 71
3.4 音频数据表示法 77
音频格式 79
MP3音频格式 79
3.5 图像与图形表示法 80
颜色表示法 80
数字化图像与图形 82
图形的矢量表示法 83
3.6 视频表示法 84
视频编译码器 84
小结 85
道德问题:Snowden事件的影响 86
关键术语 86
练习 87
思考题 91
第三部分 硬件层
第4章 门和电路 93
4.1 计算机和电学 94
4.2 门 96
非门 96
与门 97
或门 98
异或门 98
与非门和或非门 99
门处理回顾 100
具有更多输入的门 101
4.3 门的构造 101
晶体管 102
4.4 电路 104
组合电路 104
加法器 108
多路复用器 110
4.5 存储器电路 111
4.6 集成电路 112
4.7 CPU芯片 113
小结 113
道德问题:道德规范 114
关键术语 116
练习 116
思考题 119
第5章 计算部件 121
5.1 独立的计算机部件 122
5.2 存储程序的概念 126
冯·诺伊曼体系结构 128
读取–执行周期 132
RAM和ROM 134
二级存储设备 135
触摸屏 139
5.3 嵌入式系统 141
5.4 并行体系结构 142
并行计算 142
并行硬件分类 144
小结 145
道德问题:隐私是否已经是过去时? 146
关键术语 146
练习 147
思考题 149
第四部分 程序设计层
第6章 低级程序设计语言与伪代码 151
6.1 计算机操作 152
6.2 机器语言 152
Pep/9:一台虚拟机 153
Pep/9的输入/输出 159
6.3 一个程序实例 159
Pep/9模拟器 160
另一个机器语言实例 162
6.4 汇编语言 163
Pep/9汇编语言 164
数字数据、分支、标签 166
汇编语言中的循环 170
6.5 表达算法 171
伪代码的功能 171
执行伪代码算法 175
写伪代码算法 177
翻译伪代码算法 180
6.6 测试 182
小结 183
道德问题:软件盗版 185
关键术语 186
练习 186
思考题 189
第7章 问题求解与算法设计 191
7.1 如何解决问题 192
提出问题 193
寻找熟悉的情况 193
分治法 194
算法 194
计算机问题求解过程 196
方法总结 1
前言/序言
论题选择
为了制定这本CS0教材的论题大纲,我们利用了许多资源,包括课程目录、教材大纲,并进行了问卷调查。设计调查问卷的目的在于了解我们的同事对这门课程内容的想法。我要求大家(包括自己)列出下列三种清单:
如果CS0这门课是学生在大学阶段学习的唯一一门计算机科学的课程,请列出四种你认为他们应该掌握的论题。
请列出四种你想要学生在进入CS1这门课之前掌握的论题。
请补充四种你想要学习CS1的学生熟悉的论题。
这些资源的交集反映出的大多数人的意见,也就构成了本书的大纲。本书作为核心的CS0教材,对计算领域进行了广泛的介绍,适合作为计算机科学原理先修课程的教材,也可以用于程序设计语言的导论书或参考书。
结构说明
本书从介绍硬件和软件的历史开始,并且用洋葱的结构来类比计算机系统的结构。处理器和它的机器语言构成了洋葱的芯,软件层和更复杂的硬件一层层地裹住了这个芯。下一层是高级语言,包括FORTRAN、Lisp、Pascal、C、C++和Java。在介绍这些语言的同时,还介绍了利用它们进行程序设计的过程,包括自顶向下的设计和面向对象的设计。我们已经深刻地理解了抽象数据类型所扮演的角色及其实现。操作系统及其资源管理技术(包括更大、更快的二级存储介质上的文件)包围着这些程序,并对它们进行管理。
接下来的一层由更复杂的通用或专用软件系统构成,它们覆盖了操作系统。这些功能强大的程序开发由计算机科学中的理论推动。最后一层由网络和网络软件构成,网络软件包括计算机之间通信必需的所有工具。Internet和万维网给这一层画上了最后一笔,而这些章节也会将关于影响我们在线交流的信息安全话题的讨论推向高潮。
当这些层随着时间的推移逐渐出现时,用户对计算机系统的硬件接触得越来越少。每个层都是它下面的计算机系统的抽象。随着每个层的发展,新层的用户和内部层的用户联合起来构成了经济领域高科技部门的生产力。本书的目的是提供各个层的概述,介绍基本的硬件和软件技术,使学生了解和欣赏计算系统的方方面面。
在介绍这种洋葱式结构时,我们有两种选择,一种是从内向外逐层介绍,另一种是从外向内进行介绍。从外向内的方法看起来非常吸引人。我们可以从最抽象的层开始介绍,一次剥掉一个层,直至具体的机器层。但是,研究表明,比起抽象的例子,学生们更容易理解具体的例子。因此,我们选择从具体的机器层开始,按照层的创建顺序进行分析,当学生完全理解了一个层之后,再转移到下一个层就比较容易了。
第7版中的变化
在计划这次改版时,我们咨询了同事以及本书之前版本的一些读者,请求他们给予一些反馈。非常感谢这些有见解的回应。
第7版对全书进行了很多修改,其中之一是我们有意识地加入对特定主题的讨论,这些特定主题会在计算机原理课程的先修课中进行介绍。本书适合和先修课教材一起使用,但是针对更新的内容提出了很多见解。除此之外,在第1章中添加了计算领域的基本思想,这些思想组成了原理课程中的高级框架。
其他的重大改变是,本版加强了对云计算的介绍,并更新了第5章关于计算机描述的案例。第12章讨论了电子表格可视化,并添加了大数据的介绍。第13章添加了对智能语音助手(例如Amazon Echo和Google Home)的讨论。第15章引入了区块链,并且在第17章更新了对信息安全的讨论。
第7版的另一个大的变化是第6章中使用的虚拟机从Pep/8升级到了Pep/9,并对基本系统进行了改进,从而在机器语言和汇编层次对程序设计进行描述。
除了新的章节,本书的特色板块也进行了全面的修订和更新。现在每章结尾部分的“道德问题”都进行了更新。新增了若干个“你知道吗”板块,并且对一些板块进行了更新。除此之外,“名人传记”部分也进行了更新。
对于每一版,我们都力求提高覆盖面,改进措辞和使用的案例,以帮助读者理清楚主题。
摘要
第1章是我们探索计算机科学的基础,描述了本书的组织结构。第2章和第3章则分析包含在物理硬件中的层。这个层称为信息层,它反映了如何在计算机上表示信息。第2章介绍二进制数制以及它与其他数制(如人们日常用的十进制系统)的关系。第3章研究如何获取多种类型(如数字、文本、图像、音频和视频)的信息以及如何用二进制格式表示它们。
第4章和第5章介绍硬件层。计算机硬件包括的设备有晶体管、门和电路,它们都按照基本原理控制电流。正是这些核心电路使专门的硬件部件(如计算机的中央处理器(CPU)和存储器)得以运转。第4章介绍门和电路。第5章介绍计算机的元件,以及在冯·诺伊曼体系结构中这些元件是如何交互的。
第6~9章介绍程序设计层。第6章使用模拟计算机Pep/9介绍机器语言和汇编语言的概念。该章引入了用伪代码编写算法的功能,介绍了循环与选择的概念,并在Pep/9中以伪代码的方式实现。
第7章分析问题求解过程,同