范畴论(Category Theory)并非一开始就为了“统一数学”而凭空捏造,而是从极其具体的代数拓扑问题中自然生长出来的。

在20世纪上半叶,代数拓扑学(Algebraic Topology)是数学界的显学。

数学家们试图用代数结构(如群、环)来研究几何形状。

当时,大家遇到了一个巨大的痛点:

为了研究一个几何空间,人们发明了各种代数工具,比如同调群(Homology)和上同调群(Cohomology)。

但是,这些工具非常零散。

比如,一个连续映射 f: X → Y,它会诱导出一个群同态 f_*: H(X) → H(Y)。

数学家们发现,这种“空间到群”、“映射到同态”的对应关系到处都是,但大家都在用极其繁琐的、针对具体问题的语言来描述它。

数学界缺乏一种统一的“语言”或“语法”,来描述这些不同数学结构之间的转换和联系。

为了把零散的概念统一起来,两位美国数学家——塞缪尔·艾伦伯格(Samuel Eilenberg)和桑德斯·麦克莱恩(Saunders Mac Lane)在1945年发表了一篇名为《同调代数中的一般理论》(General Theory of Natural Equivalences)的划时代论文。

在这篇论文中,他们首次正式定义了三个概念:

1. 范畴(Category):用来框定研究的对象和它们之间的箭头。

2. 函子(Functor):用来描述两个范畴之间的结构保持映射。

3. 自然变换(Natural Transformation):用来描述两个函子之间的“兼容”关系。

麦克莱恩后来回忆说,他们发明“范畴”是为了定义“函子”,发明“函子”是为了定义“自然变换”。

而他们真正关心的核心,其实是“自然等价(Natural Equivalence)”。

也就是说,他们费了这么大劲建立这套极其抽象的系统,最初的目的仅仅是为了严格地定义什么是“自然”,即不依赖于人为选择的、内在的对应关系。

如果范畴论仅仅停留在艾伦伯格和麦克莱恩手里,它可能只是代数拓扑的一个小工具。

真正让范畴论封神、并引发数学界大地震的,是法国数学巨匠亚历山大·格罗滕迪克(Alexander Grothendieck)。

在20世纪50到60年代,格罗滕迪克在重构整个代数几何(Algebraic Geometry)时,发现传统的“点集拓扑”完全不够用了。

他极其激进地引入了范畴论作为代数几何的底层操作系统。

他引入了概形(Schemes)的概念,彻底抛弃了传统的代数簇。

发明了拓扑斯(Topos)理论,把“空间”的概念彻底范畴化。

建立了极其庞大的上同调理论框架。

格罗滕迪克的工作让数学家们震惊地发现:

原来范畴论不仅仅是用来“描述”数学的,它是可以用来“构造”数学的!

在范畴论的视角下,许多以前极其困难的几何问题,变成了可以通过纯代数、纯逻辑推演的范畴论问题。

进入现代,范畴论彻底走出了纯数学的象牙塔,成为了连接多个学科的桥梁。

逻辑学家发现,直觉主义逻辑的证明结构,和范畴论的结构惊人地一致(Curry-Howard 对应)。这直接催生了类型论(Type Theory)。

Haskell、Scala 等编程语言中的 Functor、Monad、Applicative,全都是直接从范畴论里搬过来的概念。

程序员们用范畴论来保证代码的绝对安全和可组合性。

在量子场论、弦理论和量子计算中,物理学家开始使用高阶范畴(Higher Category Theory)来描述多维度的量子纠缠和时空结构。

纵观范畴论的历史,本质上是人类数学思维的一次“升维”:

过去我们研究“集合里的元素”。

后来我们研究“集合之间的函数”。

再后来我们研究“结构之间的映射(函子)”。

现在我们研究“映射之间的映射(自然变换)”。

范畴论从代数拓扑的泥沼中诞生,在代数几何的土壤中长成参天大树,最终成为了现代数学和理论计算机科学共同的基础语言。