从数学教师到海军计算工作
格蕾丝·默里·霍珀(Grace Murray Hopper,1906—1992)出生于纽约,1928年毕业于瓦萨学院,1934年取得耶鲁大学数学博士学位。她原在瓦萨任教,1943年加入美国海军预备役,随后到哈佛大学霍华德·艾肯主持的计算实验室工作,参与 Mark I 及后续机器的程序编写。
这些工作并非今天意义上的应用软件开发:人员需要了解机器的指令编码、安排计算步骤,并反复核对程序。霍珀还承担技术文档写作。1949年,她转入埃克特—莫奇利公司,参与 UNIVAC 的编程工作,将早期科学计算积累带入商业计算机环境。
A-0:让机器承担重复劳动
1952年完成的 A-0,是霍珀早期编译工作的重要成果。其出发点非常具体:程序员积累了可重复使用的子程序,却仍需抄写代码,并根据它们在新程序中的位置调整地址。人工抄写和地址计算容易出错,而复制与加法恰恰是计算机擅长的工作。
她因而把子程序的选取、组织及地址处理交给机器。这说明当时“编译”的含义与今天从高级语言经过多阶段分析、优化生成目标代码的流程并不完全相同。A-0 的意义在于把程序构造的一部分机械劳动自动化;不宜把它直接描述为具备现代编译器全部功能的系统,也不必用绝对的“唯一第一”掩盖同期探索。
从英文式表达走向共同语言
霍珀及其团队后来开发 B-0,即 FLOW-MATIC,把更接近英文的表达方式用于商业数据处理。这条路线关注的不只是数学公式,还包括组织中实际流转的数据与业务要求。它让不习惯数学符号的使用者也能更容易理解程序所描述的操作,但仍要求严格定义的语言规则,而非任意自然语言。
FLOW-MATIC 成为 COBOL 的重要前身。1959年开始形成的共同商业语言,是用户、厂商和研究人员通过 CODASYL 等协作机制推进的成果。霍珀提供技术经验并积极推动共同语言,不能因此把 COBOL 的设计、实现与标准化全部归为她个人创造。
把可移植性变成可检验的要求
霍珀后来在海军推动程序语言标准、测试和验证。这里的关键不只是宣布不同机器使用同一种语言,而是检查厂商实现是否符合共同要求,减少更换系统时昂贵的程序转换。她也长期从事教学与技术传播,1986年以海军少将军衔退休。
从子程序复用、英文式商业语言到符合性验证,可以看到她持续关注程序员与计算系统之间的接口。所谓自动编程,并未取消人对问题和步骤的设计责任;它把可机械处理的工作交给工具,使人的精力更多投入表达需求、检查结果和组织系统。