GitHub 项目 rochus-keller/MUMPS 的文档目录里,有一份《The MUMPS Primer: An Introduction and Tutorial for the 1976 Standard》。从目录信息看,它面向 MUMPS 1976 标准,覆盖教程、命令、函数、特殊变量、操作符和语法摘要等内容。

这件事有意思的地方,不是 MUMPS 又要“回潮”。恰恰相反,它提醒我们:有些旧系统还活在生产环境里,真正稀缺的不是新框架教程,而是能把旧语义讲清楚的材料。

我更在意的是这点:MUMPS 76 不是一门可以按现代语言直觉快速套进去的东西。它把语言、运行时和持久化数据模型压得很近。读不懂这一层,旧代码就很容易变成一堆短命令和神秘 global。

这份 Primer 先解决“从哪里读起”

从目录看,这份文档的定位很明确:Introduction and Tutorial for the 1976 Standard。它不是标准全文的替代品,也不能据此断言完整复现了 1976 标准。更稳妥的说法是:它提供了一个面向 MUMPS 76 的入门教程和参考入口。

目录从 “What is MUMPS?”、“The 1976 Standard”、“Who This Book Is For” 这类问题开始,随后进入变量、表达式、命令、字符串函数、Global Database、I/O、间接引用、特殊变量、例程结构和参考章节。

这对读者的帮助很实际。研究语言史的人,可以把它当作一份观察早期语言设计的地图。维护旧系统的人,可以先用它建立阅读顺序,而不是一上来就被缩写命令、行结构和 global 访问方式劝退。

读者这份 Primer 能帮什么更现实的用法
编程语言史读者看 MUMPS 76 如何组织语言、运行时和持久化数据对照命令、表达式、global 机制,理解一条不同于 SQL + 通用语言的路线
老系统维护者降低阅读 MUMPS 遗留代码的门槛先查 SET、DO、GOTO、QUIT、KILL、READ、WRITE 等命令,再看 global 读写约定
医疗信息系统相关开发者理解旧系统为什么难迁移、难重写评估迁移前,先梳理 global 数据结构和业务逻辑的绑定关系

这不是让团队重新选择 MUMPS。更常见的动作会是:培训新人时拿它做入门材料;排障时查语义;迁移评估时确认旧代码到底依赖了哪些 1976 标准下的机制。

MUMPS 76 的难点,不只是命令短

MUMPS 给今天开发者的陌生感,往往不在“语法老”。真正容易踩坑的,是它的基本假设和现代语言不同。

从这份 Primer 目录覆盖的内容看,几个关键词绕不开:一切近似字符串、无运算符优先级、按行组织、命令极简,以及 Global Variables。

特征在 MUMPS 76 里意味着什么今天读代码时的影响
一切近似字符串数字和字符串之间会发生自动转换不能按 Java、Python 的强类型直觉判断表达式
无运算符优先级表达式按从左到右求值括号不是装饰,阅读顺序会改变结果
按行组织标签、例程、行内命令很重要代码结构更接近早期交互式系统和终端环境
命令极简SET、DO、GOTO、QUIT、KILL 等命令承担大量工作读旧代码时要先识别命令缩写和上下文
Global Variables持久化数据结构进入语言模型一行 global 读写可能同时牵动业务逻辑和存储约定

这里最关键的是 Global Variables。目录中单列 “The Global Database”,并展开 Global Variables、Building a Data Model、$DATA、$NEXT、Naked Reference、KILL on Globals 等内容。这说明文档不是只把 global 当附录处理。

对现代 Web 应用开发者来说,常见结构是语言、ORM、数据库、缓存分层。MUMPS 早期设计走的是另一条路:持久化树状数据访问被做进语言能力里。

这有好处,也有代价。系统边界少,访问路径短;但迁移和理解成本会变高。旧系统里一行对 global 的读写,可能不只是“取数据”,还包含索引习惯、业务含义和存储约定。牵一发而动全身,说的就是这种代码。

该怎么用它,也要知道不能期待什么

更合适的使用方式,是把这份 Primer 当作读 MUMPS 76 的入口,而不是当成现代 MUMPS 生态报告。

目前能确认的事实,来自 GitHub 仓库文档目录信息。不能据此编出项目 star、维护状态、发布时间,也不能推断作者动机。也不应把 MUMPS 1976 标准直接等同于后来的 MUMPS 实现、InterSystems Caché 或 IRIS 扩展。

现实一点说,读者可以按三个动作使用它。

  • 读旧代码前,先看命令、变量、表达式和例程结构,建立最小语法框架。
  • 碰到 global 相关逻辑时,重点查 Global Database、$DATA、$NEXT、Naked Reference、KILL on Globals。
  • 做迁移评估时,把文档当作语义核对表,而不是直接拿它判断后续产品扩展。

接下来最该观察的,也不是它会不会“流行”。这个词放在 MUMPS 76 上反而容易误导。

更有价值的观察点是:仓库文档是否继续补足示例、边界条件,以及与 1976 标准文本之间的对应关系。如果这些部分更清楚,它对维护者的价值会明显提高;如果只停留在目录和概览层,它更适合作为语言史入口。

回到开头那份 Primer。它的意义不在于把旧技术包装成新趋势,而在于给旧系统留下一条可读路径。对还要维护 MUMPS 遗留代码的人来说,能读懂,往往比能评价更重要。