# Cleve Moler has died

> 来源：[HackerNews](https://www.mathworks.com/company/aboutus/founders/clevemoler.html)

# MATLAB 之父 Cleve Moler 辞世：一个改变科学计算世界的时代落幕

> 2024年，MATLAB 创始人、数值计算领域先驱 Cleve Moler 与世长辞。这位用矩阵改变世界的数学家，留下的不仅是商业软件帝国，更是一套影响几代工程师和科学家的计算范式。

---

## 背景与概述

在当代软件开发者的工具箱中，Python 的 NumPy、Julia、R 等语言占据了数据科学的主流舞台。然而鲜为人知的是，这些工具的核心设计理念——**矩阵作为一等公民**、**交互式数值计算**、**向量化编程**——都可以追溯到一位数学家在 1970 年代的一个课堂辅助项目。Cleve Moler，这位新墨西哥大学的数学教授，最初只是为了让学生免于在 Fortran 中编写繁琐的线性代数代码，却意外催生了改变整个技术世界的 MATLAB。

Moler 的离世标志着一个时代的终结。在计算机科学史上，像他这样**从学术象牙塔走出、最终塑造整个工业界标准**的人物屈指可数。与 Linus Torvalds 创建 Linux、Guido van Rossum 设计 Python 不同，Moler 的贡献更具"跨界"特质：他将深奥的数值分析理论转化为工程师触手可及的工具，让矩阵运算从数学系的黑板走进了汽车厂的仿真车间、华尔街的交易系统和航天器的控制舱。MathWorks 公司由 Moler 与 Jack Little 于 1984 年正式创立，而 MATLAB 这个名称正是 **"MATrix LABoratory"**（矩阵实验室）的缩写，直白地道出了它的基因。

对于中国开发者而言，MATLAB 的故事尤为特殊。它曾是高校理工科教育的"标配"，是无数研究生处理实验数据的第一个工具；同时也因技术封锁成为国产替代浪潮中的焦点符号。理解 Moler 的技术遗产，不仅是向一位先驱致敬，更是审视我们自身技术生态演进的契机。

---

## 核心内容

### 一、从 EISPACK 和 LINPACK 到 MATLAB：站在巨人肩上的创新

Moler 并非从零开始。在 1970 年代，他深度参与了 **EISPACK**（特征值计算包）和 **LINPACK**（线性方程求解包）两个 Fortran 数值库的开发。这些库代表了当时数值线性代数的最高水准，但使用门槛极高——用户需要理解复杂的子程序调用约定、内存管理和矩阵存储格式。

Moler 的洞见在于：**将底层算法的威力封装在简洁的交互式接口之后**。他用大约 70 个 Fortran 子程序编写了一个命令解释器，让用户可以直接输入 `A*b` 完成矩阵乘法，或用 `eig(A)` 求解特征值。这种"胶水层"设计，使得顶尖的数值算法首次对普通工程师透明。

### 二、商业化与生态构建：MathWorks 的独特路径

1983 年，工程师 Jack Little 用 C 语言重写了 MATLAB，并加入了对 PC 的支持。次年两人创立 MathWorks，开启了学术软件商业化的经典案例。与同时代的 Mathematica（Wolfram）走符号计算路线不同，MathWorks 始终坚持**数值计算 + 工程仿真**的垂直深耕：

| 特性 | MATLAB 策略 | 对比方向 |
|:---|:---|:---|
| 核心抽象 | 矩阵/数组 | Python 的通用对象 |
| 扩展机制 | 工具箱（Toolbox）专业化 | R 的包生态碎片化 |
| 界面哲学 | 集成开发环境一体化 | Julia 的纯语言路线 |
| 行业渗透 | 汽车、航空航天、金融等垂直领域 | 通用编程语言的广度优先 |

### 三、技术民主化的双刃剑效应

Moler 的设计哲学深刻影响了后来的科学计算工具。他主张 **"计算应该像使用计算器一样自然"**，这一理念直接体现在 MATLAB 的语法设计中：

```matlab
% MATLAB 的向量化编程：一行替代循环
x = 0:0.01:2*pi;          % 生成向量
y = sin(x) .* exp(-x/3);  % 元素级运算，无需显式循环
plot(x, y);               % 即时可视化
```

这种**即时反馈（REPL 式）+ 内置可视化**的模式，后来被 IPython/Jupyter 笔记本继承。然而批评者指出，MATLAB 也培养了"黑箱式"工程思维——用户熟练调用 `fft` 却不理解快速傅里叶变换的原理，精通 `simulink` 搭建系统却忽视数值稳定性分析。

### 四、中国语境下的特殊遗产

在中国高校，MATLAB 曾长期是研究生入学的"第一课"。2020 年哈工大、哈工程被禁用 MATLAB 的事件，更将其推向技术自主的风口浪尖。Moler 的离世，恰逢国产科学计算软件（如北太天元、MWORKS）加速追赶的历史节点，形成了一种意味深长的时代对照。

---

## 技术分析

MATLAB 的核心技术架构体现了 Moler 对**计算效率与开发效率平衡**的深刻理解：

### 解释器与 JIT 的混合执行

早期 MATLAB 是纯解释执行，循环性能极差（被戏称"向量化 or 死亡"）。2002 年后引入 **JIT 加速**，对热点循环进行运行时编译：

```matlab
% 传统向量化写法（始终高效）
result = sum(A .* B, 2);

% JIT 优化后的循环（2002+ 版本可接受）
for i = 1:n
    result(i) = A(i,:) * B(:,i);  % 内积计算
end
```

### 矩阵存储的列优先（Column-Major）传统

继承自 Fortran 的列优先存储，使得按列访问具有更好的缓存局部性：

```matlab
A = rand(1000, 1000);

% 高效：按列遍历，内存连续访问
for j = 1:1000
    col = A(:, j);  % 连续内存块
end

% 低效：按行遍历，跨步访问
for i = 1:1000
    row = A(i, :);  % 分散内存访问
end
```

这一设计选择与 C/Python（行优先）形成对比，也是 MATLAB 与 NumPy 互操作时需特别注意的细节。

### M 文件与工具箱的扩展哲学

Moler 创造的 `.m` 脚本格式实现了**算法透明性**——用户可查看大多数内置函数的源码学习实现。工具箱（Toolbox）机制则开创了**垂直领域深度封装**的商业模式，这一思路被后来的 Salesforce AppExchange、Shopify 应用商店等广泛借鉴。

---

## 实践建议

对于当代开发者，Moler 的遗产提供了几条可操作的启示：

**1. 向量化思维是性能优化的第一课**

无论使用 MATLAB、NumPy 还是 Julia，理解**广播机制（broadcasting）**和**SIMD 向量化**都是写出高效代码的基础：

```python
# Python/NumPy 中的向量化实践
import numpy as np

# 反模式：Python 级循环
result = [x**2 + 2*x + 1 for x in data]  # 慢

# 正模式：NumPy 向量化
data = np.array(data)
result = data**2 + 2*data + 1            # C 级速度
```

**2. 交互式开发环境的战略价值**

Jupyter、MATLAB Live Script、Pluto.jl 等工具延续了 Moler 的**"计算即探索"**范式。对于数据密集型任务，优先选择支持即时反馈的工具链。

**3. 国产替代浪潮中的技术判断**

对于受 MATLAB 限制的中国科研团队，建议的迁移路径：
- **短期**：Octave（开源兼容）、Python 科学栈（NumPy/SciPy/Matplotlib）
- **中期**：Julia（高性能 + 动态语言便利性）
- **长期**：关注北太天元、MWORKS 等国产平台的生态成熟度

**4. 深入算法底层，避免黑箱依赖**

Moler 本人晚年多次强调，用户应理解数值方法的**条件数、收敛性和稳定性**。建议在使用高层封装时，至少掌握一种算法的数学原理。

---

## 总结

Cleve Moler 的离世，让我们失去了一位将数学之美转化为工程之力的桥梁人物。他证明了**优秀的技术设计可以跨越数十年保持生命力**——MATLAB 的矩阵语法、工具箱生态和交互式范式，至今仍能在现代工具中找到回响。对于中国开发者而言，纪念 Moler 的最佳方式，或许是超越对单一工具的依赖，吸收其"让复杂计算民主化"的设计智慧，在自主可控的技术生态中重建属于这个时代的"矩阵实验室"。毕竟，Moler 留下的最宝贵遗产不是 MATLAB 本身，而是一种信念：**数学的力量，应当属于每一个解决问题的人**。