MUMPS 76 入门 – 周年纪念版
MUMPS 入门:1976 年标准的介绍和教程 1. 介绍 1.1. 什么是 MUMPS?1966 年,在波士顿马萨诸塞州综合医院计算机科学实验室,Octo Barnett、Neil Pappalardo 和 Curtis Marble 创建了一种名为 MUMPS 的编程语言——马萨诸塞州综合医院实用多编程系统。MUMPS 是为了满足实际需求而产生的:医院需要一个系统,医生和护士能够同时从多个终端实时访问和更新病人数据,而这些终端需要运行在经济实惠的硬件上。在 1966 年,“经济实惠的硬件”意味着一个配备 8K 字内存和小型硬盘的 DEC PDP-7。没有地方可供分层存在——没有独立的操作系统、文件系统、数据库服务器和应用语言相互堆叠。一切必须是一个集成系统。由此诞生了一个了不起的东西:一种内置层次数据库的编程语言——直到四十年后,数据库界才会为此定名:集成编程语言的 NoSQL 数据库。MUMPS 中的核心数据抽象是全局变量:一个层次的、稀疏的数组,持续存储在磁盘上,并在所有并发用户之间共享。用今天的术语来说,globals 是一种无模式的、有序键值存储,具有复合键,在第一次赋值时创建,并按需删除。SET ^PATIENT(12345,"NAME")="Smith, John" SET ^PATIENT(12345,"DOB")="1945-03-15" SET ^PATIENT(12345,"LAB","2024-01-15","GLUCOSE")=95 不需要 CREATE TABLE,没有模式定义,也没有 INSERT 语句。您只需在一个层次路径上 SET 一个值,系统会自动创建所需的所有中间节点。KILL 一个节点,整个子树将消失。想想 MUMPS 在 1966 年拥有的,而计算界则花费数十年重新发明的东西:无模式存储:不需要声明。节点在第一次赋值时自动创建。这是 MongoDB 在 2009 年所称的“无模式文档”。层次数据模型:病人记录自然形成树状结构。MUMPS globals 直接反映了这种结构。这是 Firebase 在 2012 年所称的“实时层次数据”。有序键遍历:$NEXT 函数按排序顺序遍历兄弟节点,而不需要显式索引——这就是 Redis 在 2009 年所称的“排序集合”,或 LevelDB 在 2011 年的“有序迭代”。集成为语言和数据库:不存在阻抗失配。变量和数据库节点使用相同的语法、相同的数据类型、相同的操作。所有这一切都在一台拥有 8 KB 内存的机器上运行,为多个同时用户服务。 1.2. 1976 年标准 到 1970 年代初,多个供应商已创建了各自不兼容的 MUMPS 方言。成立于 1972 年的 MUMPS 开发委员会(MDC)开始制定一个共同标准。结果在 1976 年 1 月由美国国家标准局发布为 NBS 手册 118:“MUMPS 语言标准”。同年晚些时候,梅尔文·康威(以“康威定律”而闻名)编写了一本伴随文档,《程序员参考手册》(MDC/42)。它们共同形成了 MUMPS 的第一份完整、正式规范。1976 年的标准令人惊讶地简约:19 个命令:BREAK、CLOSE、DO、ELSE、FOR、GOTO、HALT、HANG、IF、KILL、LOCK、OPEN、QUIT、READ、SET、USE、VIEW、WRITE、XECUTE 12 个函数:$ASCII、$CHAR、$DATA、$EXTRACT、$FIND、$JUSTIFY、$LENGTH、$NEXT、$PIECE、$RANDOM、$SELECT、$TEXT 7 个特殊变量:$HOROLOG、$IO、$JOB、$STORAGE、$TEST、$X、$Y 这就是整个语言。没有 JOB 命令(没有程序化的多任务)。没有 NEW 命令(没有局部变量作用域——这项功能在 1984 年引入)。下标限制为非负整数以保证可移植性。最大字符串长度为 255 个字符。然而,这足以构建服务数百万病人的医院信息系统。本手册正好涵盖了这个 1976 年标准——精华、凝练的 MUMPS,在经过数十年扩展之前。 1.3. 这本书适合谁 这本书适合熟练掌握至少一种其他语言的程序员,他们想了解 MUMPS 是什么,它是如何工作的,以及它在历史上的重要意义。您不需要任何 MUMPS 经验。本书有三项目的:介绍:MUMPS 是什么,为什么重要。教程:基于示例的逐步引导,通过互动形式进行学习。快速参考:1976 年标准的所有命令、函数和特殊变量的汇总。我们专注于单用户操作。多用户功能如 LOCK 和设备共享在相关时提及,但其详细阐述会推迟到后面。 1.4. 开始使用 要跟随示例,请在互动模式下启动 MUMPS 解释器。您会看到一个提示符:> 在该提示符下,您可以输入任何 MUMPS 命令,它将立即执行。试试:>WRITE "Hello, World!",! Hello, World! 逗号后的 ! 是一个格式代码,产生换行。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡