格雷丝·霍珀(Grace Hopper,1906—1992)是美国计算机科学家、美国海军少将,被誉为“COBOL之母”和“编译器女王”。她率先开发出首个编译器A-0,并推动了高级编程语言的发展,尤其是面向商业的通用语言COBOL。霍珀还因“调试”(debugging)术语的普及和“纳秒”概念的讲解而广为人知,其职业生涯横跨学术、工业与军事领域,深刻影响了现代软件工程

1 早年与教育

1.1 家庭背景与童年

格雷丝·布鲁斯特·默里(Grace Brewster Murray)于1906年12月9日出生在纽约市一个重视教育的苏格兰裔家庭。父亲沃尔特·弗莱彻·默里是保险经纪人,母亲玛丽·坎贝尔·范·霍恩则拥有数学天分。格雷丝从小表现出对机械与逻辑的强烈好奇心,曾在七岁时拆解家中闹钟试图理解其工作原理,但未能成功复原——这一早期探索被其家人视为未来工程师的雏形。母亲鼓励她打破性别刻板印象,支持她学习数学科学

1.2 瓦萨学院与数学学位

1924年,格雷丝进入纽约州的瓦萨学院(女子学院),主修数学与物理学。她于1928年获得数学学士学位,成绩优异。在瓦萨期间,她师从著名数学家威廉·费勒(William Feller),但据其自述,当时数学课程偏重纯理论,她更感兴趣的是应用数学的实际问题——这一倾向影响了她日后在编程语言工程上的选择。

1.3 耶鲁大学深造

1.3.1 硕士与博士研究

1930年,格雷丝进入耶鲁大学研究生院,在数学系攻读硕士与博士学位。她于1930年获得数学硕士学位,1934年以博士论文《新不可约性准则》(*New Types of Irreducibility Criteria*)获得博士学位。论文方向属于抽象代数中的多项式不可约性理论,导师是奥伊斯坦·奥雷(Øystein Ore)。她是当时耶鲁大学数学系罕见的女性博士之一。

1.3.2 数学与逻辑学转向

虽然博士课题为纯代数方向,但霍珀在耶鲁期间接触到罗素与怀特海德的《数学原理》,对数理逻辑产生了浓厚兴趣。她后来回忆,逻辑符号系统与机器指令之间的类比,成为她日后设计编译器的思想萌芽。她在博士后期逐渐从纯数学转向逻辑与计算理论,尽管当时计算机尚未大规模出现。

2 职业生涯

2.1 瓦萨学院任教

获得博士学位后,霍珀回到瓦萨学院担任数学讲师,后晋升为助理教授。她在瓦萨教授数学课程直至1943年,期间培养了多名女性数学学生,并尝试将统计方法引入教学。然而,第二次世界大战的爆发改变了她的人生轨迹。

2.2 第二次世界大战与加入海军

1943年,霍珀决心加入美国海军,以响应战时技术人才需求。尽管陆军妇女辅助队拒绝了她(因其年龄31岁且体重略轻),海军后备妇女志愿者服务队(WAVES)最终接受了她。经过基础训练后,她以中尉军衔被派往哈佛大学计算实验室。

2.2.1 哈佛马克I号项目

霍珀被分配到哈佛马克I号(Harvard Mark I)——美国首台大型电动机械计算机的操作与编程团队。她成为马克I号的第三位程序员,负责编写数学函数表以及海军弹道计算程序。在物理尺寸长达51英尺的机器前,她首次被要求通过打孔纸带输入指令。这一经历让她深刻理解到使用机器代码编程的低效与易错性。

2.2.2 与霍华德·艾肯的合作

霍珀的直接上级是计算机先驱霍华德·艾肯(Howard Aiken)。艾肯以严格著称,起初对女性程序员持怀疑态度。但霍珀凭借出色的数学直觉和逻辑严谨性赢得了他的尊重。她与艾肯共同撰写了马克I号操作手册,并在1945年参与开发了马克II号(Mark II)继电计算机。在此期间,她记录了最早的“计算机漏洞”事件

2.3 战后民间工作

2.3.1 埃克特-莫奇利计算机公司(EMCC)

1949年,霍珀以海军预备役军官身份加入埃克特-莫奇利计算机公司(EMCC),负责UNIVAC I(首台商用电子计算机)的编程系统开发。她在此开始构思一种能够将人类可读的数学符号自动翻译为机器代码的工具——即编译器的雏形。

2.3.2 雷明顿·兰德与Sperry公司

1950年EMCC被雷明顿·兰德(Remington Rand)收购,霍珀随之加入。她主导研发了首个实用的编译器A-0,并在1952年正式展示。此后她进入Sperry公司(后与兰德合并为Unisys),在那里继续完善编译器技术并开发了FLOW-MATIC语言。她工作至1966年首次退休,但不久后被海军召回

2.4 重返海军与最终退役

1966年,60岁的霍珀以海军中校军衔退休。然而,仅八个月后,海军因计算机系统现代化需求紧急召回她,负责监督海军编程语言的标准化工作。她以现役军官身份又服役了19年,于1985年以79岁高龄晋升为海军准将(后于1986年以海军少将身份正式退役)。她是美国海军历史上最高军衔的女性之一。

3 核心技术贡献

3.1 编译器与A-0系统

3.1.1 从符号到机器代码的自动化

在EMCC工作期间,霍珀开始编写一个名为“Compiling Routine”的程序,后称为A-0系统。它允许用户使用数学符号编写程序,然后由系统自动转换为机器代码。当时计算机界普遍认为机器语言才是“真正”的编程方式,编译器被视为多余。霍珀的突破在于将“编译”概念从简单汇编提升为真正的语言翻译:A-0能够将符号子程序链接起来,生成可执行代码。第一个版本于1952年运行成功。

3.1.2 B-0与FLOW-MATIC语言

在A-0基础上,霍珀团队开发了B-0系统(后更名为FLOW-MATIC)。FLOW-MATIC(1955年)是世界上首个使用类似英语语法的编程语言,其语句如“ADD A TO B”使得非专业程序员也能编写商业程序。FLOW-MATIC直接影响了后续COBOL语言的语法设计。霍珀坚持认为,编程语言应该接近人类自然语言,而非强迫人类迁就机器。

3.2 COBOL语言的诞生

3.2.1 语言规格委员会参与

1959年,美国国防部召集计算机厂商与用户成立数据系统语言会议(CODASYL),旨在开发一种通用的商业编程语言。霍珀作为Sperry公司的代表参与其执行委员会。她强烈主张采用类似英语的语法,并贡献了FLOW-MATIC的设计经验。COBOL(Common Business-Oriented Language)的语法结构明显带有FLOW-MATIC的痕迹,因此她被誉为“COBOL之母”。

3.2.2 COBOL的商业普及与标准化

COBOL于1960年发布首个版本,后经多次修订成为世界上使用最广泛的商业编程语言之一。霍珀参与推动了COBOL的标准化工作,包括编写编译器与测试套件。她后来幽默地表示,COBOL之所以大获成功,是因为“笨到商务人员也能用”。尽管COBOL在21世纪初逐渐衰落,但其影响力在金融与政府系统中延续长达半个多世纪。

3.3 “调试”与“纳米纳秒”传说

3.3.1 术语起源:飞蛾的故事

计算机领域“调试”(debugging)一词的普及常归功于霍珀。1947年9月9日,哈佛马克II号出现故障,霍珀和同事发现一只飞蛾卡在继电器触点之间。她将飞蛾取出并贴在工作日志中,旁注“First actual case of bug being found”。虽然“bug”和“debug”早在工程领域有使用先例,但霍珀的日志产生了广泛传播效应,使该术语成为计算机故障的标准表述。那只飞蛾现存于史密森尼美国历史博物馆。

3.3.2 用电线演示纳秒长度

霍珀以其生动的教学风格闻名。她曾携带一束约30厘米长的电线(代表光波在1纳秒内走过的距离)进行演讲,来解释计算机速度的概念。“纳秒”比喻变成她标志性的教学道具。她后来收集了更长的“微秒线”(约300米),在讲座中戏剧性地展开,并调侃说:“如果你想知道为什么计算机传输延迟,看看这堆电线。”

4 荣誉与遗产

4.1 军事勋章与军衔晋升

4.1.1 国防部优异服务奖章

霍珀获颁多项军事表彰,包括1964年的海军功绩勋章和1985年的国防部优异服务奖章,以表彰她在海军计算机系统标准化方面的贡献。她还获得美国国家技术奖章(1991年,由乔治·H·W·布什总统颁发)。

4.1.2 海军少将(追授)

尽管霍珀生前以准将(Commodore)军衔退役,但1985年海军将该职级更名为海军少将(Rear Admiral Lower Half)。她实际获得的是该军衔的特殊荣誉晋升。2016年,美国海军将一艘驱逐舰命名为“霍珀号”(USS Hopper, DDG-70),以纪念她的贡献。

4.2 民间奖项与命名

4.2.1 计算机科学先驱奖

1980年,霍珀获得美国信息处理学会联合会(AFIPS)颁发的计算机科学先驱奖。她也是1987年享有图灵奖荣誉的提名者之一。1991年,她被授予国家技术奖章。

4.2.2 格雷丝·霍珀庆典与女性计算机科学家奖

1994年,一年一度的“格雷丝·霍珀计算机女性庆典”(Grace Hopper Celebration of Women in Computing)由安妮塔·博格研究所创办,成为全球最大的女性计算机科学家聚会。此外,众多大学和机构设立了“格雷丝·霍珀奖学金”“格雷丝奖”等,专门鼓励女性从事STEM领域。

4.3 流行文化中的形象

4.3.1 “神奇格雷丝”昵称

霍珀因其在海军中的活力和幽默教学风格被同袍称为“神奇格雷丝”(Amazing Grace)。她经常穿着海军制服出席学术会议,并以一句口头禅“It’s easier to ask forgiveness than it is to get permission”(请求原谅比请求许可更容易)闻名,反映了她在官僚体系中推动创新的务实态度。

4.3.2 纪录片与传记

霍珀的故事出现在多部纪录片中,如《格雷丝·霍珀:编程女王》(2003年)和《计算机历史博物馆的访谈》(1980年)。2015年,Google涂鸦在她109岁诞辰日以动画形式纪念她。多本面向青少年的传记将她描绘为突破性别障碍的科技英雄。

5 影响与评价

5.1 对编程语言发展的影响

霍珀开创的编译器理论是软件工程的基石。现代几乎所有高级语言(C、Java、Python等)都依赖编译器将人类可读代码翻译为机器指令。她推动的“英语化”语法思想虽然在后续语言中有所演变(如Python采用缩进而非英语单词),但COBOL的数据结构概念(如层次化记录)仍然影响着SQLJSON等现代数据描述格式。

5.2 对女性在STEM领域的激励

霍珀作为20世纪中期男性主导的计算机科学界少有的女性领袖,为无数女性提供了职业榜样。她的故事常被引用于激励女孩学习编程。瓦萨学院至今设有“格雷丝·霍珀数学与计算中心”,每年举行女性编程竞赛。

5.3 争议与批评

5.3.1 对结构化编程的保守态度

霍珀对结构化编程(如Dijkstra倡导的“goto语句有害论”)持保留意见。她认为程序员可以自由选择编程方式,只要代码能正确运行。在1970年代的结构化编程大争论中,她公开表示“我年轻时没有结构化编程,我也写出了正确程序”。这种立场被部分评论者视为对编程方法学进步的抵触。

5.3.2 对COBOL长期依赖的反思

COBOL在20世纪后半叶的银行、保险等核心系统中大量使用,导致21世纪初仍有许多遗留系统依赖COBOL代码。批评者指出,COBOL的冗余语法和缺乏现代特性使得维护成本高昂。霍珀本人晚年也曾表示,如果当时设计得更加简洁,COBOL可能会更早被取代。但她也坚持认为COBOL的初衷——让商业用户能够理解程序逻辑——仍然是正确的方向。