计算机科学概论
读者评价
这本书非常全面,几乎包括了计算机专业本科4年所需要学习的课程的基础介绍。如果你是相关专业的学生,应该在大一的时候读读,今后所学的知识就可以融会贯通了!
看的中文版,有人说这本书翻译的不好。那个时候我正看到第四章,我说没有啊,一口气读下来的,还没看到翻译很蹩脚的地方。然后在读几章,发现开始有比较蹩脚的地方了,不知道是神马原因。然后最后几章又状态回归了。
扯了很多废话,其实是想说中文版的也能读。
这是本科普读物,叫做计算机科学概论,所以它可以扯的很大,也可以扯回到科普读物的层面上。
书中包含了计算机科学领域你所可能接触到的所有或者说绝大部分的内容的引题或概述。
这是一本大学一年级新生不能错过的书,很遗憾的是我大一的时候没有看过这本书。
虽然包含的内容比较多,但是书中对每一个方向,每一个领域的描述都很言简意赅。
不论是非计算机领域的,对计算机领域拥有兴趣,又或是已工作码农,这本书都是值得一读的。
内容介绍
本书由两位知名的计算机科学教育家编写,全面而细致地介绍了计算机科学的各个方面。书中从信息层开始,历经硬件层、程序设计层、操作系统层、应用程序层和通信层,深入剖析了计算系统的每个分层,后讨论了计算的限制。此外,正文中穿插了大量的人物传记、历史点评、道德问题和新的技术发展信息,有助于你进一步了解计算机科学。每章后面都附带有大量的练习,可以帮助你即时重温并掌握这一章所述的内容。
目录
- 出版者的话
- 译者序
- 前言
- 第一部分 基础篇
- 第1章 全景图 2
- 1.1 计算系统 2
- 1.1.1 计算系统的分层 3
- 1.1.2 抽象 4
- 1.2 计算的历史 5
- 1.2.1 计算硬件简史 5
- 1.2.2 计算软件简史 12
- 1.2.3 预言 16
- 1.3 计算工具与计算学科 16
- 小结 18
- 道德问题:the Tenth Strand 18
- 练习 19
- 思考题 20
- 第二部分 信息层
- 第2章 二进制数值与记数系统 22
- 2.1 数字与计算 22
- 2.2 位置记数法 23
- 2.2.1 二进制、八进制和十六进制 26
- 2.2.2 其他记数系统中的运算 27
- 2.2.3 以2的幂为基数的记数系统 27
- 2.2.4 把十进制数转换成其他数制的数 29
- 2.2.5 二进制数值与计算机 29
- 小结 31
- 道德问题:the Tenth Strand的知识单元 31
- 练习 33
- 思考题 34
- 第3章 数据表示法 35
- 3.1 数据与计算机 35
- 3.1.1 模拟数据与数字数据 36
- 3.1.2 二进制表示法 38
- 3.2 数字数据表示法 39
- 3.2.1 负数表示法 39
- 3.2.2 实数表示法 42
- 3.3 文本表示法 44
- 3.3.1 ASCII字符集 45
- 3.3.2 Unicode字符集 45
- 3.3.3 文本压缩 46
- 3.4 音频数据表示法 49
- 3.4.1 音频格式 50
- 3.4.2 MP3音频格式 50
- 3.5 图像与图形表示法 51
- 3.5.1 颜色表示法 51
- 3.5.2 数字化图像与图形 52
- 3.5.3 图形的矢量表示法 53
- 3.6 视频表示法 53
- 小结 55
- 道德问题:道德准则 55
- 练习 56
- 思考题 58
- 第三部分 硬件层
- 第4章 门和电路 60
- 4.1 计算机和电学 60
- 4.2 门 62
- 4.2.1 非门 62
- 4.2.2 与门 63
- 4.2.3 或门 63
- 4.2.4 异或门 64
- 4.2.5 与非门和或非门 64
- 4.2.6 门处理回顾 65
- 4.2.7 具有更多输入的门 65
- 4.3 门的构造 66
- 4.4 电路 67
- 4.4.1 组合电路 68
- 4.4.2 加法器 70
- 4.4.3 多路复用器 71
- 4.5 存储器电路 72
- 4.6 集成电路 73
- 4.7 CPU芯片 73
- 小结 74
- 道德问题:这些违反道德规范吗? 74
- 练习 75
- 思考题 77
- 第5章 计算部件 78
- 5.1 独立的计算机部件 78
- 5.2 存储程序的概念 82
- 5.2.1 冯·诺伊曼体系结构 82
- 5.2.2 读取-执行周期 87
- 5.2.3 RAM和ROM 88
- 5.2.4 二级存储设备 89
- 5.2.5 触摸屏 92
- 5.3 嵌入式系统 93
- 5.4 并行体系结构 94
- 5.4.1 并行计算 94
- 5.4.2 并行硬件分类 95
- 小结 96
- 道德问题:数字鸿沟 96
- 练习 97
- 思考题 98
- 第四部分 程序设计层
- 第6章 低级程序设计语言与伪代码 102
- 6.1 计算机操作 102
- 6.2 机器语言 103
- 6.3 一个程序实例 108
- 6.3.1 手工模拟 109
- 6.3.2 Pep/8模拟程序 109
- 6.4 汇编语言 111
- 6.4.1 Pep/8汇编语言 112
- 6.4.2 汇编器指令 112
- 6.4.3 Hello程序的汇编语言版本 113
- 6.4.4 一个新程序 113
- 6.4.5 具有分支的程序 115
- 6.4.6 具有循环的程序 116
- 6.5 表达算法 118
- 6.5.1 伪代码的功能 118
- 6.5.2 执行伪代码算法 121
- 6.5.3 写伪代码算法 123
- 6.5.4 翻译伪代码算法 124
- 6.6 测试 125
- 小结 126
- 道德问题:版权与软件盗版 127
- 练习 127
- 思考题 129
- 第7章 问题求解与算法设计 130
- 7.1 如何解决问题 130
- 7.1.1 提出问题 130
- 7.1.2 寻找熟悉的情况 132
- 7.1.3 分治法 132
- 7.1.4 算法 133
- 7.1.5 计算机问题求解过程 133
- 7.1.6 方法总结 134
- 7.1.7 测试算法 135
- 7.2 有简单参数的算法 135
- 7.2.1 带有选择的算法 135
- 7.2.2 带有循环的算法 136
- 7.3 复杂变量 139
- 7.3.1 数组 139
- 7.3.2 记录 140
- 7.4 搜索算法 141
- 7.4.1 顺序搜索 141
- 7.4.2 有序数组中的顺序搜索 141
- 7.4.3 二分检索 142
- 7.5 排序 144
- 7.5.1 选择排序 144
- 7.5.2 冒泡排序 145
- 7.5.3 插入排序 147
- 7.6 递归算法 147
- 7.6.1 子程序语句 148
- 7.6.2 递归阶乘 149
- 7.6.3 递归二分检索 149
- 7.6.4 快速排序 150
- 7.7 几个重要思想 153
- 7.7.1 信息隐蔽 153
- 7.7.2 抽象 154
- 7.7.3 事物命名 155
- 7.7.4 测试 155
- 小结 155
- 道德问题:开源软件 156
- 练习 157
- 思考题 159
- 第8章 抽象数据类型与子程序 160
- 8.1 抽象数据类型 160
- 8.2 栈 161
- 8.3 队列 161
- 8.4 列表 162
- 8.5 树 164
- 8.5.1 二叉树 164
- 8.5.2 二叉检索树 165
- 8.5.3 其他操作 169
- 8.6 图 169
- 8.6.1 创建图 171
- 8.6.2 图算法 171
- 8.7 子程序 176
- 8.7.1 参数传递 177
- 8.7.2 值参与引用参数 178
- 小结 180
- 道德问题:工作场所监视 180
- 练习 181
- 思考题 183
- 第9章 面向对象设计与高级程序设计语言 184
- 9.1 面向对象方法 184
- 9.1.1 面向对象 185
- 9.1.2 设计方法 185
- 9.1.3 一个计算机示例 187
- 9.2 翻译过程 189
- 9.2.1 编译器 190
- 9.2.2 解释器 190
- 9.3 程序设计语言的范型 192
- 9.3.1 命令式范型 192
- 9.3.2 声明式范型 193
- 9.4 高级程序设计语言的功能性 194
- 9.4.1 布尔表达式 194
- 9.4.2 数据归类 196
- 9.4.3 输入/输出结构 199
- 9.4.4 控制结构 200
- 9.5 面向对象语言的功能性 204
- 9.5.1 封装 204
- 9.5.2 类 205
- 9.5.3 继承 206
- 9.5.4 多态 207
- 9.6 过程设计与面向对象设计的区别 207
- 小结 208
- 道德问题:恶作剧与诈骗 209
- 练习 210
- 思考题 212
- 第五部分 操作系统层
- 第10章 操作系统 214
- 10.1 操作系统的角色 214
- 10.1.1 内存、进程与CPU管理 216
- 10.1.2 批处理 216
- 10.1.3 分时 217
- 10.1.4 其他OS要素 218
- 10.2 内存管理 218
- 10.2.1 单块内存管理 219
- 10.2.2 分区内存管理 220
- 10.2.3 页式内存管理 221
- 10.3 进程管理 223
- 10.3.1 进程状态 223
- 10.3.2 进程控制块 224
- 10.4 CPU调度 224
- 10.4.1 先到先服务 225
- 10.4.2 最短作业优先 226
- 10.4.3 轮询法 226
- 小结 227
- 道德问题:医疗隐私——健康保险携带与责任法案 228
- 练习 229
- 思考题 231
- 第11章 文件系统和目录 232
- 11.1 文件系统 232
- 11.1.1 文本文件和二进制文件 233
- 11.1.2 文件类型 233
- 11.1.3 文件操作 234
- 11.1.4 文件访问 235
- 11.1.5 文件保护 236
- 11.2 目录 237
- 11.2.1 目录树 237
- 11.2.2 路径名 239
- 11.3 磁盘调度 241
- 11.3.1 先到先服务磁盘调度法 242
- 11.3.2 最短寻道时间优先磁盘调度法 242
- 11.3.3 SCAN磁盘调度法 242
- 小结 243
- 道德问题:选择加入和选择退出 243
- 练习 244
- 思考题 246
- 第六部分 应用程序层
- 第12章 信息系统 248
- 12.1 信息管理 248
- 12.2 电子制表软件 249
- 12.2.1 电子数据表公式 250
- 12.2.2 循环引用 254
- 12.2.3 电子数据表分析 254
- 12.3 数据库管理系统 255
- 12.3.1 关系模型 256
- 12.3.2 关系 257
- 12.3.3 结构化查询语言 258
- 12.3.4 数据库设计 260
- 12.4 电子商务 261
- 小结 262
- 道德问题:从竞选来看政治与网络 262
- 练习 263
- 思考题 265
- 第13章 人工智能 266
- 13.1 思维机 266
- 13.1.1 图灵测试 267
- 13.1.2 AI问题的各个方面 268
- 13.2 知识表示 268
- 13.2.1 语义网 268
- 13.2.2 检索树 271
- 13.3 专家系统 273
- 13.4 神经网络 275
- 13.4.1 生物神经网络 275
- 13.4.2 人工神经网络 276
- 13.5 自然语言处理 277
- 13.5.1 语音合成 277
- 13.5.2 语音识别 278
- 13.5.3 自然语言理解 279
- 13.6 机器人学 280
- 13.6.1 感知-规划-执行范型 280
- 13.6.2 包孕体系结构 282
- 13.6.3 物理部件 283
- 小结 283
- 道德问题:从民众来看政治与网络 284
- 练习 284
- 思考题 286
- 第14章 模拟、图形学、游戏和其他应用 287
- 14.1 什么是模拟 287
- 14.1.1 复杂系统 287
- 14.1.2 模型 288
- 14.1.3 构造模型 288
- 14.2 特殊模型 289
- 14.2.1 排队系统 289
- 14.2.2 气象模型 292
- 14.2.3 计算生物学 295
- 14.2.4 其他模型 295
- 14.2.5 必要的计算能力 296
- 14.3 计算机图形学 296
- 14.3.1 光的工作原理 297
- 14.3.2 物体形状 298
- 14.3.3 光模拟 298
- 14.3.4 复杂对象的建模 299
- 14.3.5 让物体动起来 303
- 14.4 游戏 304
- 14.4.1 游戏的历史 304
- 14.4.2 创建虚拟世界 305
- 14.4.3 游戏设计与开发 305
- 14.4.4 游戏编程 306
- 小结 307
- 道德问题:游戏成瘾 307
- 练习 308
- 思考题 309
- 第七部分 通信层
- 第15章 网络 312
- 15.1 连网 312
- 15.1.1 网络的类型 313
- 15.1.2 Internet连接 315
- 15.1.3 包交换 317
- 15.2 开放式系统与协议 318
- 15.2.1 开放式系统 318
- 15.2.2 网络协议 319
- 15.2.3 TCP/IP 319
- 15.2.4 高层协议 320
- 15.2.5 MIME类型 321
- 15.2.6 防火墙 321
- 15.3 网络地址 322
- 15.4 云计算 324
- 小结 325
- 道德问题:社交网络的影响 326
- 练习 327
- 思考题 328
- 第16章 万维网 329
- 16.1 Web简介 329
- 16.1.1 搜索引擎 331
- 16.1.2 即时消息 331
- 16.1.3 博客 331
- 16.1.4 cookie 332
- 16.2 HTML 333
- 16.2.1 基本的HTML格式 335
- 16.2.2 图像与链接 335
- 16.2.3 HTML5 337
- 16.3 交互式网页 337
- 16.3.1 Java小程序 337
- 16.3.2 Java服务器页 338
- 16.4 XML 339
- 16.5 社交网络 341
- 小结 342
- 道德问题:赌博与互联网 344
- 练习 344
- 思考题 346
- 第17章 计算机安全 347
- 17.1 各级安全 347
- 17.2 阻止未授权访问 349
- 17.2.1 密码 349
- 17.2.2 验证码 351
- 17.2.3 指纹分析 352
- 17.3 恶意代码 352
- 17.3.1 杀毒软件 353
- 17.3.2 安全攻击 353
- 17.4 密码学 355
- 17.5 保护你的在线信息 357
- 17.5.1 安全与可移动设备 359
- 17.5.2 维基解密 359
- 小结 360
- 道德问题:博客 361
- 练习 362
- 思考题 363
- 第八部分 总结
- 第18章 计算的限制 366
- 18.1 硬件 366
- 18.1.1 算术运算的限制 366
- 18.1.2 部件的限制 370
- 18.1.3 通信的限制 371
- 18.2 软件 372
- 18.2.1 软件的复杂度 372
- 18.2.2 当前提高软件质量的方法 373
- 18.2.3 臭名昭著的软件错误 376
- 18.3 问题 377
- 18.3.1 算法比较 377
- 18.3.2 图灵机 382
- 18.3.3 停机问题 384
- 18.3.4 算法分类 386
- 小结 387
- 道德问题:Therac-25灾难剖析 387
- 练习 388
- 思考题 389
- 参考文献 390
- 索引 396