写代码的人都知道,变量名要自解释:customerLifetimeValue、retentionRate、discountFactor。可一写公式,一切退化回 L、r、d。三页之后,L 从损失变成拉格朗日量,r 从利率变成半径,d 从折扣因子变成微分算子。读者只能靠上下文和自己的信仰活着。
这不是数学高深,这是流传了几百年的陋习。
一、病根:省略乘号
单字母公式的根源,既不是前人精密,也不是排版逼仄,而是一条几乎没人注意的语法铁律:
并列即相乘。
ab就是a × b。
这条规则看着无害,却从语法底层摁死了多字母变量:你想写 rate,公式会自动帮你解析成 r × a × t × e。speed 就是 s × p × e × e × d。
所以单字母根本不是审美选择,是被语法逼出来的唯一解。多字母变量在数学里事实上不可用——除非动用 \text{}、花体、加粗、下标这些残废补丁,代价是排版丑、嵌套崩、平方像在给单词乘方。
一句话:数学符号系统为了手写和排版的极简,把本该由编译器干的”分词”,外包给了读者的工作记忆。写起来爽,读起来死。
二、共犯:英语霸权
如果说省略乘号是主犯,英语就是从犯。
loss → L、rate → r、probability → p、expectation → E。母语者看到 L 自动联想到 loss;非母语者看到 L,脑子里先蹦出 length、Lagrangian、Laplacian、likelihood、learning rate,全靠上下文硬猜。这不是公平的符号,这是给英语母语者的语感特权。
更荒唐的是:论文正文用的是中文,公式里的变量却必须用英文首字母。正文翻译了,公式凭什么不翻译?把一个拉丁语系的缩写习惯,伪装成全人类的通用标准——这是语言上的双重标准。
三、倡议:四条规则
于是,我提一份《新数学语言倡议》,共四条:
规则一:凡是给人类读的公式,优先使用与正文语言一致的全称变量名,并显式写出乘号。
比如卡尔曼滤波的一步预测:
预测状态向量 = 状态转移矩阵 × 上一时刻状态估计向量 + 控制作用矩阵 × 控制输入向量 + 过程噪声向量
读者不需要背符号表,不用猜 F 是不是状态转移矩阵。
规则二:演算阶段,允许引入临时替换表,把全称变量映射为局部短符号,作用域仅限于该推导段落。
令 P = 预测状态向量,T = 状态转移矩阵,X = 上一时刻状态估计向量,C = 控制作用矩阵,U = 控制输入向量,N = 过程噪声向量。 则 P = T × X + C × U + N
规则三:推导结束后,必须把结果翻译回全称变量。
上一时刻状态估计向量 = 状态转移矩阵⁻¹ × (预测状态向量 − 控制作用矩阵 × 控制输入向量 − 过程噪声向量)
规则四:禁止全局裸单字母,禁止跨节重载。
单字母可以当局部变量,不能当公共 API。
四、回答四个”不可能”
有人会说这四条太天真,会引爆四个大坑。逐一拆。
排版坑:汉字变量在 LaTeX 里排版灾难。——那是工具的缺陷,不是语言的错。工具该适应人,不该让人削足适履。Typst 和现代排版引擎完全做得到。
手写坑:草稿纸上写全称太慢。——草稿纸是法外之地,你想写啥写啥,没人拿草稿的潦草去要求正式文本。
通用语言坑:数学是宇宙语言,符号要通用。——你正文都翻译了,凭什么公式不翻译?F=ma 里的 F、m、a,本身就是拉丁语系特权。
演算坑:代数变形时全称变量会让工作记忆爆炸。——这正是规则二存在的理由。演算阶段我们关注的是运算规则,不是物理含义,临时替换成短符号,零损失。
五、语义层与语法层
这四条规则背后,是一次根本的分工:
描述阶段关注物理意义,演算阶段关注代数规则。
描述时,变量名必须携带语义;演算时,你做的全是移项、代入、求逆、分配律,这些操作完全不关心 P 是”预测状态向量”还是”价格”。物理含义早被定义阶段锁定了,演算阶段不必反复带它上路。
这跟编译器一模一样:前端处理类型和语义,中间表示可以退化到 %1、%2,后端做纯语法变换。没人会在 LLVM IR 里写 customerLifetimeValue。
传统数学写作恰恰跳过了前端,直接把中间表示当源码交付。L = Σ lᵢ + λ‖θ‖² 这种写法,把定义和演算糊在同一行,读者既要猜语义,又要跟语法。
正确的规范应该是:
源码层(描述) :全称变量 + 显式乘号
↓ 建立语义
中间表示(演算):临时替换为局部短符号
↓ 语法操作
目标代码(结论):翻译回全称变量
每一层,用每一层最适合的符号。
六、这不是新东西,只是没被写成规范
数学里其实早就在干这件事——”令 z = x + iy”本质上就是一次临时替换,变量代换、凑微分,无一不是。只是它从没被立成规矩,于是大多数论文从头到尾裸奔单字母,把中间产物当成最终产品交付。
这四条规则的代价只有一个:作者多写几行替换表。可传统论文也得写符号表,而且传统符号表是”L = 损失”,读者得背;新规则的替换表是”P = 预测状态向量”,现查现用。复杂度没有增加,只是从读者身上转移到了作者身上。这笔账,怎么算都是赚的。
结语
计算机科学花了几十年才明白:语义层用全称,语法层用简写,两层之间有显式映射。数学界还停留在 L 表示一切的年代。
倡议书就一句话: