摘要
- Andrew D. Booth 与当时仍署名 Kathleen H. V. Britten 的 Kathleen Booth 在 1947 年共同发表《Coding for A.R.C.》,用缩写符号把数学方案逐步落实为 20 位机器指令。这是汇编语言早期史的重要节点,但不是可以无条件归给一个人的“第一个汇编器”。
- 符号层证明的是指令码、地址与顺序能否按规则落入机器;它不能证明算法选择合理、输入可信、条件分支符合意图,或运行结果足以支撑现实决策。
一条指令里的三道约束
ARC 的一条指令只有 20 位。前八位指定存储位置,中间七位是顺序号,最后五位是操作码。今天看,这种布局近乎苛刻;但也正因空间紧张,任何含混都会立即变成另一条指令。地址放错一位,机器不会体谅程序员原本想做什么。
《Coding for A.R.C.》没有用“高级语言”把这些约束遮住。两位作者先从数学表述出发,再画出控制流程的示意编码,然后分配存储位置、列出控制指令,最后写成机器所需的详细编码。表格把缩写操作与数值代码并列,让人可以在处理比特之前先讨论步骤。
这套方法的价值,在于把一次容易混成一团的劳动分层。数学方法可以先接受质疑;循环和分支可以在示意图中检查;存储与顺序可以单独核对;最终,每个符号仍须兑现为机器能够执行的位域。抽象减少了抄错的机会,却没有取消底层规则。
报告前言还说明,ARC 的编码与计划中的电子机器采用相同设计。已经为继电器计算器写好的问题,可以直接移到后续机器;ARC 上的实践也能为电子版本修改设计提供依据。这种可复用性来自两台机器共享约定,而不是符号天然具备跨架构能力。
署名、方法与接线台
历史文献的标题页写着 Andrew D. Booth 和 Kathleen H. V. Britten。Kathleen 当时尚未与 Andrew 结婚,后世才更多用 Kathleen Booth 称呼她。强调她的贡献,不应以抹去共同作者为代价。
报告也明确承认 Herman Goldstine 与 John von Neumann 的规划和编码方法。IAS 的研究把编码理解为控制过程的设计,而非词汇之间的静态替换:机器会跳转、回到旧指令,也可能在运行中修改指令。因此,先画控制路径,再进行细节枚举,是方法本身的一部分。
硬件同样来自团队。Birkbeck 的校史把 1946 年 12 月一张 ARC 工作照中的三人标为 Kathleen Britten、Xenia Sweeting 与 Andrew Booth。Andrew 在多年后的口述史中回忆,Kathleen 与另一位女性承担了几乎全部机器接线。这段话是参与者回忆,不是完整工时记录,但它足以破除一人独立完成机器的神话。
Kathleen 之后出版的《Programming for an Automatic Digital Calculator》延续了这条实践线,讨论 APE(X)C 等机器的程序设计。它说明她不是偶然出现在 1947 年报告上的名字;同样,它也不把共同成果追溯成个人所有物。
“符号表示”不等于“自动汇编”
历史叙述常把几个不同问题压进“第一种汇编语言”这一个标签:是否使用了便于人记忆的操作符号?是否形成了完整的编码步骤?是否有程序自动把符号翻译成机器字?翻译程序是否在实际运行的存储程序计算机上工作?
Booth 与 Britten 的报告有力证明了前两个问题:1947 年已有公开的缩写指令表示法,也有从数学方案到详细指令的系统流程。但文献不足以把自动翻译器这一更窄的荣誉无争议地归到这里。Cambridge 对 EDSAC 的资料显示,机器指令用字母表示五位操作码;Computer History Museum 则把 David Wheeler 1949 年的 Initial Orders 称为接线实现的汇编器。
两项成就不必争夺同一把椅子。早期符号编码、机器加载例程和自动翻译分别解决人如何书写、程序如何进入机器、符号如何变成可执行形式。把问题拆开,反而能看见现代软件工具链是怎样一层层形成的。
通过检查的程序仍可能做错事
如果一个符号程序顺利变成机器指令,至少说明操作符存在、地址装得进字段、生成的机器字有规定格式。在手工抄写长程序的年代,这已经是重要保障。
但机器只执行被编码的判断,不审查判断本身。一个分支可以完全合法,却把临界条件写反;迭代过程可以稳定收敛,却从不合适的模型出发;数据可以被准确读入,却早已过时或带有选择偏差。运行结束只说明机器抵达了某个状态,不说明现实世界接受了它的前提。
今天的编译、部署与基础设施自动化仍有同样边界。“构建成功”说明源代码通过了一组转换与检查;“部署成功”说明资源达到工具观察到的状态。这些信号不能单独证明访问政策公平、依赖没有风险、训练数据具有代表性,或业务目标值得执行。
真正可靠的链条应把责任分开:人选择方法并说明假设;符号层在有限词汇内表达方法;转换层把表达绑定到机器形式;执行层产生可观察结果;最后仍由人核验结果与原问题之间是否一致。
抽象层也是控制面
当一个符号系统成为进入机器的默认入口,维护它的人就获得了定义“什么算有效指令”的权力。ARC 的操作表公开呈现硬件取舍:机器有哪些操作、地址有多少位、控制如何跳转、临时值存在哪里。符号再友好,也不能凭空创造硬件没有的能力。
因此,抽象不仅是效率工具,也是治理安排。好的抽象会说明它转换了什么、没有验证什么,并允许使用者检查生成结果。坏的抽象把“转换没有报错”包装成广泛的正确性证书,使人难以在意图固化为执行之前提出异议。
纪念 Kathleen Booth,不需要把她放进一个未经限定的“第一”。她共同写下的工作方法更有力量:让机器控制变得可读,让符号与指令保持精确映射,同时不把机器能够接受的表示误认为世界应当接受的判断。
来源
- Andrew D. Booth 与 Kathleen H. V. Britten,《Coding for A.R.C.》
- Institute for Advanced Study 的《Coding for A.R.C.》馆藏记录
- Herman Goldstine 与 John von Neumann,《Planning and Coding of Problems for an Electronic Computing Instrument》
- Birkbeck,《50 Years of Computing》
- Computer History Museum,Andrew Booth 口述史
- University of Cambridge,EDSAC Initial Orders and Squares Program
- University of Cambridge,EDSAC 指令码说明
- MacTutor,Andrew 与 Kathleen Booth 著作目录
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
