内容简介
· · · · · ·
本书从七个方面介绍了计算机程序的数学基础和原理,并以“同构”概念为线索揭示出编程本质上是和数学同构的。这七个方面分别是:数字、递归、对称、范畴、融合、无穷、悖论。第1章“数字”介绍皮亚诺算术公理系统。通过5条公理,构筑了计算机程序大厦的基石。通过单向链表,斐波那契数列等例子,展示了和自然数同构的计算结构。第2章介绍递归。通过欧几里得算法作为开端,把递归的数学原理构建在Lambda演算和Y组合子之上。第3章通过对称介绍群、环、域等抽象代数结构,并解释伽罗瓦理论这一抽象思维的明珠。第4章介绍范畴论。把列表、异常、多态、类型系统、复合数据结构等众多编程概念构筑在范畴论的基础上。第5章介绍融合律。它是进行算法推导和优化的有力工具。第6章介绍无穷。给出了康托尔的无穷集合论和超限数概念,介绍了编程中流的概念和无穷的关系。第7章以罗素悖论、可计算性和哥德尔不完全性定理结束本书。介绍了计算能力的边界和对编程基础哲学的影响。
作者简介
· · · · · ·
刘新宇,亚马逊中国研发中心研发经理,负责分布式仓储物流系统的开发。1999年和2002年在清华大学自动化系分别获得学士和硕士学位。长期专注于函数式基础算法,著有《算法新解》。
目录
· · · · · ·
前言
第1章 数字
1.1 数的诞生
1.2 皮亚诺自然数公理
1.3 自然数和计算机程序
1.4 自然数的结构
1.5 自然数的同构
1.6 形式与结构
第2章 递归
2.1 万物皆数
2.2 欧几里得算法
2.3 λ演算
2.4 递归的定义
2.5 λ演算的意义
2.6 更多的递归结构
2.7 递归的形式与结构
2.8 附录:倒水趣题完整程序
第3章 对称
3.1 什么是对称
3.2 群
3.3 环与域
3.4 伽罗瓦理论
3.5 附录:伽罗瓦群
第4章 范畴
4.1 范畴概述
4.2 函子
4.3 积与和
4.4 自然变换
4.5 数据类型
4.6 小结
4.7 扩展阅读
4.8 附录:例子代码
第5章 融合
5.1 叠加-构建的融合
5.2 巧算100
5.3 小结和扩展阅读
5.4 附录:巧算100问题的代码
第6章 无穷
6.1 无穷概念的提出
6.2 潜无穷与编程
6.3 实无穷的思考
6.4 无穷与艺术
6.5 附录:例子代码
6.6 附录:康托尔定理的证明
6.7 附录:巴赫《音乐的奉献》无限上升的卡农
第7章 悖论
7.1 计算的边界
7.2 罗素悖论
7.3 数学基础的分歧
7.4 哥德尔不完全性定理
7.5 不完全性定理的证明
7.6 万能的程序与对角线证明
7.7 尾声
附录
加法交换律的证明
积与和的唯一性
集合的笛卡儿积和不相交并集构成积与和的证明
参考答案
参考文献
· · · · · ·