《计算机科学精粹》是一本令人耳目一新的计算机科学书籍。它摒弃了传统教材枯燥的方式,将抽象理论具体化,将复杂问题简单化,为读者传授了实现高效程序设计所需的基础知识。这本书重点关注计算机科学、计算机理论和计算机科学导论的精髓,帮助读者理解并掌握计算机科学的核心概念。无论是为初学者还是有一定基础的读者而言,这本书都是一本难得的学习资料。
计算机科学精粹 电子书封面
读者评价
编程之所以吸引人,不仅因为他能带来经济与科学上的回报,也因为他是一种类似创作诗歌或音乐的审美体验
很适合大一读,大一的时候计算机概论课应该把这本作为补充
感觉上,自己读出了一个 CS 普及系列丛书, 《计算机科学精粹》 -> 《编程导论》 -> 《代码之髓》 -> 《CSAPP》
简要介绍手册,用于知识点脉络搜寻
内容介绍
本书面向所有对计算机科学感兴趣的读者,以浅显易懂的语言和简明扼要的形式介绍计算机科学领域的重要知识点,尽量少涉及学术概念,着力将抽象理论具体化,复杂问题简单化,既适合计算机专业技术人员查漏补缺基本理论,也适合普通读者了解计算思维。
目录
- 第 1章 预备知识 1
- 1.1 想法 1
- 1.1.1 流程图 2
- 1.1.2 伪代码 3
- 1.1.3 数学模型 4
- 1.2 逻辑 5
- 1.2.1 运算符 6
- 1.2.2 布尔代数 8
- 1.2.3 真值表 9
- 1.2.4 逻辑在计算中的应用 12
- 1.3 计数 13
- 1.3.1 乘法 13
- 1.3.2 排列 14
- 1.3.3 具有相同项的排列 15
- 1.3.4 组合 16
- 1.3.5 求和 17
- 1.4 概率 19
- 1.4.1 对结果计数 19
- 1.4.2 独立事件 20
- 1.4.3 互斥事件 20
- 1.4.4 对立事件 21
- 1.4.5 赌徒谬误 21
- 1.4.6 高级概率 21
- 1.5 小结 22
- 第 2章 复杂度 23
- 2.1 时间计算 25
- 2.2 大O 符号 28
- 2.3 指数 29
- 2.4 内存计算 30
- 2.5 小结 31
- 第3章 策略 33
- 3.1 迭代 33
- 3.2 递归 36
- 3.3 蛮力法 38
- 3.4 回溯法 40
- 3.5 启发法 43
- 3.5.1 贪心法 43
- 3.5.2 利用贪心法求解电网问题 45
- 3.6 分治法 46
- 3.6.1 利用分治法求解排序问题 46
- 3.6.2 利用分治法求解最佳交易问题 49
- 3.6.3 利用分治法求解背包问题 50
- 3.7 动态规划 51
- 3.7.1 利用记忆化求解斐波那契数 52
- 3.7.2 利用记忆化求解背包问题 52
- 3.7.3 利用自底向上法求解最佳交易问题 53
- 3.8 分支定界法 54
- 3.8.1 上界与下界 55
- 3.8.2 背包问题中的上界与下界 56
- 3.9 小结 58
- 第4章 数据 59
- 4.1 抽象数据类型 60
- 4.2 常见抽象 62
- 4.2.1 基本数据类型 62
- 4.2.2 栈 62
- 4.2.3 队列 63
- 4.2.4 优先队列 63
- 4.2.5 列表 64
- 4.2.6 排序列表 64
- 4.2.7 映射 65
- 4.2.8 集合 65
- 4.3 数据结构 65
- 4.3.1 数组 66
- 4.3.2 链表 67
- 4.3.3 双向链表 68
- 4.3.4 数组与链表的比较 68
- 4.3.5 树 69
- 4.3.6 二叉查找树 70
- 4.3.7 二叉堆 73
- 4.3.8 图 74
- 4.3.9 散列表 74
- 4.4 小结 75
- 第5章 算法 77
- 5.1 排序 77
- 5.2 搜索 79
- 5.3 图 80
- 5.3.1 图的搜索 80
- 5.3.2 图着色 83
- 5.3.3 寻路 83
- 5.3.4 PageRank 86
- 5.4 运筹学 86
- 5.4.1 线性最优化问题 87
- 5.4.2 网络流问题 88
- 5.5 小结 89
- 第6章 数据库 91
- 6.1 关系数据库 92
- 6.1.1 关系 92
- 6.1.2 模式迁移 95
- 6.1.3 SQL 95
- 6.1.4 索引 97
- 6.1.5 事务 99
- 6.2 非关系数据库 99
- 6.2.1 文档存储 100
- 6.2.2 键值对存储 101
- 6.2.3 图数据库 102
- 6.2.4 大数据 103
- 6.2.5 SQL 与NoSQL 的比较 103
- 6.3 分布式数据库 104
- 6.3.1 单主机复制 104
- 6.3.2 多主机复制 105
- 6.3.3 分片 105
- 6.3.4 数据一致性 107
- 6.4 地理数据库 107
- 6.5 序列化格式 108
- 6.6 小结 109
- 第7章 计算机 111
- 7.1 体系结构 111
- 7.1.1 存储器 112
- 7.1.2 CPU 114
- 7.2 编译器 118
- 7.2.1 操作系统 121
- 7.2.2 编译优化 121
- 7.2.3 脚本语言 122
- 7.2.4 反汇编与逆向工程 123
- 7.2.5 开源软件 124
- 7.3 存储器层次结构 125
- 7.3.1 处理器与存储器之间的鸿沟 125
- 7.3.2 时间局部性与空间局部性 126
- 7.3.3 一级缓存 127
- 7.3.4 二级缓存 127
- 7.3.5 第 一级存储器与第二级存储器 128
- 7.3.6 外部存储器与第三级存储器 130
- 7.3.7 存储技术的发展趋势 130
- 7.4 小结 131
- 第8章 程序设计 133
- 8.1 语言学 133
- 8.1.1 值 134
- 8.1.2 表达式 134
- 8.1.3 语句 135
- 8.2 变量 136
- 8.2.1 变量类型 136
- 8.2.2 变量作用域 137
- 8.3 范式 138
- 8.3.1 命令式编程 138
- 8.3.2 声明式编程 140
- 8.3.3 逻辑编程 144
- 8.4 小结 145
- 附录 147
- 结语 151
- 后记 152
第一章是关于数据存储的,其核心主题是:计算机世界里,信息是通过0和1这两个符号表示和传递的,通过使用0和1,计算机可以表示文本(ASCII及UNICODE编码),数字(整数用二进制补码表示,实数用二进制浮点表示法表示),图像(通过位图,矢量图的形式表示),声音(通过采集方式或者乐谱形式表示),视频(图像集合+声音数据);并通过简单的门电路及触发器原理讲述了存储二进制位的实际电路构成,并以此介绍了计算机的主存储器(内存),海量存储器(外存,包括磁盘存储器,光盘存储器,闪存存储器)的基本构成特点及性能;最后,介绍了Python语言的数据存储语法及基本的运算符及表达式,数据压缩的通用技术及通信差错的处理方法。 第二章是关于计算机内部数据操作的,其核心是:计算机的核心体系结构包括CPU(运算单元和控制单元),内存,总线;计算机可以通过存储程序概念保存程序及数据到内存单元,并通过机器指令形式操控机器部件及数据;通过总线,计算机(CPU+内存)可以与计算机外部设备(键盘,鼠标,打印机,显示器等)通过控制器进行通信,以存储映射输入输出的两种方式完成通信过程,并通过状态字机制处理通信过程中的不匹配问题;通过对Python中的数据操作方法的简要介绍(包括逻辑运算与移位运算,控制结构语法,输入和输出函数及自定义函数)将本章的主要概念实际演示出来;最后,介绍了计算机的其他体系结构包括流水线结构及多处理器机器的概念。 第三章开始,利用前两章的概念作为抽象工具,介绍了操作系统的历史(批处理系统,实时处理需要导致的分时及多任务处理概念,以及因此出现的多道程序设计方法),软件分类(系统软件+应用软件),操作系统的组成(用户界面+文件管理程序+设备驱动程序+内存管理程序),进程的概念(程序活动的执行),进程管理的方法(调度程序及分派程序),信号量(为临界区代码或设备提供标识符用于多进程互斥访问的方法)与死锁(多进程设计不良造成的进程无法前进状态)的分析表明了操作系统处理多进程并发的方法;最后,用操作系统安全性(问题与解决办法)的相关主题结束了本章节。