# 主流 CAS 全景 · 从 Macsyma 到 Mathematica

> 计算机代数系统有一整个生态：商业的 Mathematica、Maple，开源的 SymPy、SageMath、Maxima，以及一批专用利器。这一章带你俯瞰全景，理清各家所长，并回溯它们共同的起点——1968 年 MIT 那个用 Lisp 写的 Macsyma。

- 作者：David（道雾轩）
- 专栏：符号计算的艺术（https://daiw.org/manual/symbolic-computing.md）
- 最后更新：2026-10-01
- 原文：https://daiw.org/manual/symbolic-computing/cas-landscape
- 转载与引用：请注明出处并附原文链接（https://daiw.org/about/copyright）

# 主流 CAS 全景 · 从 Macsyma 到 Mathematica

我们全程用 [SymPy](https://daiw.org/manual/symbolic-computing/expression-tree) 讲原理，但计算机代数系统（CAS）是**一整个生态**。这一章退后一步，俯瞰业内主流工具：它们各擅胜场，却共享同一个[「重写符号」的内核](https://daiw.org/manual/symbolic-computing/term-rewriting)和同一段历史。

## 一段共同的起点：Lisp 与 Macsyma

先讲历史，因为它揭示了符号计算的基因。上世纪 60 年代，符号计算诞生于**人工智能**的摇篮：

<Callout type="info">
  **1968 年，MIT 的 Macsyma 是最早的计算机代数系统之一——它用 Lisp 写成。** 这绝非偶然：[我们说过](https://daiw.org/manual/symbolic-computing/term-rewriting)，Lisp 里「代码和数据都是[树](https://daiw.org/manual/symbolic-computing/expression-tree)（S-表达式）」，而符号计算的本质就是「重写树」——Lisp 是为它量身定做的土壤。同期还有 Reduce（1968，也是 Lisp）。这些系统把「让机器做代数」从梦想变成现实。

  Macsyma 后来衍生出开源的 **Maxima**，至今仍在维护——你今天还能用上这个「活化石」。符号计算与 AI、与 Lisp 的血缘，是理解它的一把钥匙：**它从一开始，就是「机器能否像人一样操作符号、进行推理」这个宏大问题的一部分。**
</Callout>

## 商业双雄：Mathematica 与 Maple

- **Mathematica（Wolfram 语言）**：业内**数一数二**的 CAS，1988 年由 Stephen Wolfram 推出。它的语言本身[就是一个项重写系统](https://daiw.org/manual/symbolic-computing/term-rewriting)——一切皆 `头[参数]`，`/.` 应用规则。内置海量算法与「知识」（从积分表到物理常数、地理数据），背后是 **Wolfram|Alpha** 这样的知识引擎。功能全面、文档精良，代价是**商业授权、价格不菲**。
- **Maple**：另一商业老牌（1980 年代，滑铁卢大学起家），符号数学能力极强，在**工程与教育**领域用户众多，界面友好。

这两家适合愿意为更强的符号能力付费的场景。

## 开源阵营：SymPy、SageMath、Maxima

- **SymPy**：**纯 Python**的 CAS（2007 年起），就是本专栏一路用的。最大优点是**免费、轻量、可嵌入**——它就是个 Python 库，能无缝融进你的数据科学 / 工程脚本（[还能 `lambdify` 成快速数值函数](https://daiw.org/manual/symbolic-computing/symbolic-vs-numeric)）。代价是纯 Python 实现，**速度不及编译型系统**。
- **SageMath**：一个宏大的**开源整合平台**，口号是「做免费的 Mathematica 替代」。它用 Python 作「胶水」，**把几十个专业系统**（包括 SymPy、Maxima、以及下面的 Singular、PARI、GAP 等）整合到统一界面下——要开源全能，选它。
- **Maxima**：前述 Macsyma 的开源后裔，基于 **Lisp**，历史最悠久，符号能力依然可观，深受钟爱简洁与传统者青睐。

## 专用利器：各擅一域

除了「通用」CAS，还有一批**深耕某一领域**的系统，在自己的地盘上难以替代：

| 系统 | 专精领域 |
| --- | --- |
| **Singular** | 代数几何、交换代数、[Gröbner 基](https://daiw.org/manual/symbolic-computing/groebner) |
| **PARI/GP** | 数论（素性、椭圆曲线、模形式） |
| **GAP** | 群论与离散代数 |
| **Magma**（商业） | 代数、数论、几何，算法极强 |
| **GiNaC**（C++ 库） | 嵌入 C++ 的符号计算，常用于理论物理（如粒子物理的圈积分） |

做前沿研究时，这些专用系统往往比通用 CAS 快上几个数量级。

## 同一件事的不同方言

值得一提的是，尽管语法各异，这些系统做的**是同一件事**——[重写符号树](https://daiw.org/manual/symbolic-computing/term-rewriting)。同一个积分，在三家的写法：

```text
SymPy(Python):     integrate(1/(x**2 - 1), x)
Mathematica:       Integrate[1/(x^2 - 1), x]
Maxima(Lisp 系):   integrate(1/(x^2 - 1), x);
```

方言不同，内核一致：把[表达式树](https://daiw.org/manual/symbolic-computing/expression-tree)按[规则](https://daiw.org/manual/symbolic-computing/term-rewriting)变换成另一棵。学会一个，理解了原理，迁移到另一个只是查语法手册的事。

## 怎么选

- **学习原理、嵌入 Python 项目、免费**：**SymPy**（本专栏之选）。
- **要更强的符号能力、且能付费**：**Mathematica** 或 **Maple**。
- **要开源的全能平台**：**SageMath**。
- **特定领域的硬核研究**：对应的**专用系统**（Singular / PARI / GAP …）。

## 小结与下一章

CAS 生态：**商业双雄** Mathematica（Wolfram 语言即[项重写](https://daiw.org/manual/symbolic-computing/term-rewriting)）与 Maple；**开源阵营** SymPy（纯 Python、可嵌入）、SageMath（整合平台）、Maxima（Lisp、Macsyma 后裔）；以及 Singular / PARI / GAP 等**专用利器**。它们同根同源——1968 年 MIT 用 **Lisp** 写的 **Macsyma**，内核都是「重写符号树」，只是方言不同。

工具再强，符号计算都有一个绕不过的软肋——它可能**又慢又吃内存**，慢到让一个看起来不大的问题彻底卡死。下一章直面这个「阿喀琉斯之踵」：**表达式膨胀**。👉 [表达式膨胀](https://daiw.org/manual/symbolic-computing/expression-swell)。

## 参考文献

- [1] Joel Moses.「Macsyma: A Personal History.」*J. Symbolic Computation*, 2012. —— 第一个 CAS 的回忆。
- [2] Stephen Wolfram.《An Elementary Introduction to the Wolfram Language》—— Mathematica 的设计哲学。
- [3] SageMath / SymPy / Maxima 官方文档.https://www.sagemath.org/ · https://www.sympy.org/ · https://maxima.sourceforge.io/
