编程原本
作者:(美)亚历山大 斯特潘诺夫(Alexander Stepanov),(美)保罗 麦克琼斯(Paul McJones)著 裘宗燕译
出版时间: 2019年版
内容简介
本书将严格的数学定义、公理化和演绎方法应用于程序设计,讨论程序与保证它们正确工作的抽象数学理论之间的联系。本书把理论的规程、基于这些规程写出的算法,以及描述算法性质的引理和定理一起呈现给读者,以帮助读者将复杂系统分解为一些具有特定行为的组件。本书适合软件开发人员和需要进行程序设计的科学家及工程师阅读,也可供高等院校计算机及相关专业的师生参考。
目录
第1 章基础 1
1.1 理念范畴:实体、类别和类属 1
1.2 值 2
1.3 对象 4
1.4 过程 6
1.5 规范类型 7
1.6 规范过程 9
1.7 概念 11
1.8 总结 16
第2 章变换及其轨道 17
2.1 变换 17
2.2 轨道 21
2.3 碰撞点 23
2.4 轨道规模的度量 30
2.5 动作 31
2.6 总结 32
第3 章可结合运算 33
3.1 可结合性 33
3.2 计算乘幂 35
3.3 程序变换 37
3.4 处理特殊情况的过程 42
3.5 参数化算法 46
3.6 线性递归 47
3.7 累积过程 50
3.8 总结 51
第4 章线性序 52
4.1 关系的分类 52
4.2 全序和弱序 55
4.3 按序选取 56
4.4 自然全序 66
4.5 派生过程组 67
4.6 按序选取过程的扩展 68
4.7 总结 68
第5 章有序代数结构 69
5.1 基本代数结构 69
5.2 有序代数结构 75
5.3 求余 76
5.4 最大公因子 81
5.5 广义gcd 84
5.6 Stein gcd 87
5.7 商 87
5.8 负量的商和余数 89
5.9 概念及其模型 92
5.10 计算机整数类型 94
5.11 总结 95
第6 章迭代器 96
6.1 可读性 96
6.2 迭代器 97
6.3 范围 99
6.4 可读范围 103
6.5 递增的范围 112
6.6 前向迭代器 115
6.7 索引迭代器 120
6.8 双向迭代器 120
6.9 随机访问迭代器 122
6.10 总结 124
第7 章坐标结构 125
7.1 二叉坐标 125
7.2 双向二叉坐标 129
7.3 坐标结构 135
7.4 同构、等价和有序 136
7.5 总结 144
第8 章后继可变的坐标 145
8.1 链接迭代器 145
8.2 链接重整 146
8.3 链接重整的应用 153
8.4 链接的二叉坐标 157
8.5 总结 163
第9 章拷贝 164
9.1 可写性 164
9.2 基于位置的拷贝 166
9.3 基于谓词的拷贝 174
9.4 范围的交换 182
9.5 总结 186
第10 章重整 187
10.1 置换 187
10.2 重整 190
10.3 反转算法 192
10.4 轮换算法 196
10.5 算法选择 206
10.6 总结 210
第11 章划分和归并 211
11.1 划分 213
11.2 平衡的归约 218
11.3 归并 223
11.4 总结 230
第12 章复合对象 231
12.1 简单复合对象 231
12.2 动态序列 240
12.3 基础类型 246
12.4 总结 249
跋 250
附录A 数学表示 254
附录B 程序设计语言 256
B.1 语言定义 256
B.2 宏和特征结构 264
参考文献 267
索引 271