格蕾丝·霍珀(Grace Hopper):写下第一个编译器、造出 COBOL 的那位海军上将

Grace Hopper(格蕾丝·霍珀,美国,1906 年生)在 编译器与程序设计语言的诞生 领域的位置,很少有人能给出准确坐标。她证明了程序可以用另一种语言写出来,而这一证明最终催生了 COBOL——世界上使用最广的商业语言——以及今天每一个程序员敲下 `compile` 时背后那个最初的念头。

Grace Hopper(格蕾丝·霍珀,美国,1906 年生)在 编译器与程序设计语言的诞生 领域的位置,很少有人能给出准确坐标。她证明了程序可以用另一种语言写出来,而这一证明最终催生了 COBOL——世界上使用最广的商业语言——以及今天每一个程序员敲下 `compile` 时背后那个最初的念头。

一、问题一:机器能不能自己决定怎么编译——编译器被拒绝,因为「机器不该给人出主意」

Grace Hopper 的起点要回到 美国纽约市。当时 生于纽约一个保险公司文员家庭;她天资优异,在 Vassar 学院同时修数学与物理双主修,还额外修了希腊语;二十多岁时进入哈佛读博士,师从 George David Birkhoff,专攻布尔代数——这段经历日后被 Grace Hopper 反复提起,成为其方法论的原点。

Hopper 从小被称作男性化的名字 Grace,成长于纽约一个体面但并不富裕的家庭。她在拉丁文学校受的教育,这让她在那个年代的女性通常被引导进文科的背景下,反而获得了接近理科的数学训练。

她在 Vassar 学院同时主修数学与物理,这在 1920 年代的女性教育中极不常见。同期她在莎拉劳伦斯学院任教,并曾在宾夕法尼亚大学跟着 Ludwig Boltzmann 的学生研究相对论——那是一个女性研究者很难拿到机会的领域。

她在哈佛攻读数学博士,导师是 George David Birkhoff,研究方向是布尔代数。她的博士论文研究的是某种抽象代数问题,与工程无关,但训练的思维方式后来会以另一种形式回来。

1934 年她在哈佛获得博士学位,此后有相当长一段时间没有进入学术职位——这个空档并非她自己的选择,而是当时女性研究者普遍遭遇的制度性排斥。

她被聘为 Vassar 助理教授时的条件之一是:可以继续带本科生课程、同时维持研究,但薪水被刻意压低,且不能与男性同事同职同酬。

二、1906 年的纽约,以及一个拒绝学理科的女学生

1944 年前后,Grace Hopper 在 宾夕法尼亚大学摩尔工程学院,Eckert 主持的电子数字积分计算机项目做的是 在第一台通用电子数字计算机 ENIAC 的开发团队中担任核心程序员之一,独立完成了用它计算弹道表的程序。这件事的技术核心是 她必须在没有任何抽象语言可用的条件下,直接在机器的物理接线上描述计算步骤——程序是一份接线图,而不是一段文本,而它之所以重要,在于 这次工作让她彻底看清了一件事:把人从机器的细节里解放出来的唯一办法,是给机器一套能表达计算的中间语言,而这件事当时在计算机界几乎没人认为是可能的。

ENIAC 项目当时的做法是:程序通过物理方式设定机器的接线与开关,编程周期以天甚至周计,而且每换一个问题就要重新接线。Hopper 在这个团队里的工作被明确描述为「接线」——她负责把弹道表这类问题翻译成机器的具体动作。

在 ENIAC 上工作的经历让她得出一个后来贯穿她整个职业生涯的判断:把计算的意图与实现细节分开,是让机器真正可用的唯一路径。当时她的同事普遍认为这不现实。

她在这段时期开始构思一种更接近人写数学公式的方式。这个想法在 1940 年代后期逐渐成形为她所说的「微程序」思路——把程序本身也变成可以分层的结构。

她还在 ENIAC 团队里养成了一个习惯:随身带一本记录本,遇到任何看起来像 bug 的现象就立刻记下来。这个习惯后来直接连到「bug」这个词的来历。

ENIAC 团队由 John Mauchly 和 J. Presper Eckert 主持,Betty Jean Jennings 与六位女性计算员在 1946 年之前的运行中承担了大量实际工作,Hopper 与她们的协作也让女性在这段早期历史中的角色被长期低估。

三、1944 年的哈伯德 Eckert:世界上第一台程序的诞生

这里有一个不能略过的争议:她提出「用一种接近英语的符号写程序,再由机器翻译成机器码」的想法时,几乎没有同行支持——当时权威意见认为,编译器只可能用于加速数学计算,不可能成为通用编程手段。Grace Hopper 后来在多个场合解释过为什么 她的判断基于亲手写接过线图的经验:如果每一条程序都要用机器的语言描述,那么程序员的全部精力都消耗在与问题无关的翻译上;只有让程序员用接近自己思维的语言书写,机器的能力才能真正被利用,并为 她的提案被当作异想天开,四年后才获得第一笔真正用于开发编译器的经费;在此期间她必须同时承担「证明这东西可行」和「说服别人它值得做」两份工作 付出了具体代价。

她的第一台编译器雏形被命名为 A-0 系统,1952 年在宾夕法尼亚大学完成。A-0 能够把接近英语的符号表达式翻译成机器可执行代码,这在当时是完全没有先例的。

同行最常见的反对理由是:编译器生成的代码效率必然不如手工写的机器码,所以它只适合研究、不适合生产。这个论断在此后二十年里都还站得住——早期编译器生成的代码确实慢。

她在 1952 年正式演讲中提出「程序应该用接近英语的形式书写」这个主张时,把它描述为一种面向人的编程语言的雏形。这是编程语言这个概念第一次被明确提出。

面对同行的普遍质疑,她没有停留在论证,而是用这套系统做出了实际成果:1952 年到 1956 年间,她与团队用它把大量既有的程序从一种机器语言翻译到另一种,其中一部分程序的原始代码已经遗失,翻译版本成了唯一存世版本。

这一段工作本质上是一次「考古式抢救」——在硬件不断更换、程序不断作废的年代,用编译器把老程序固化下来,这个价值在当时更接近于保存历史,而非提升效率。

四、1952 年的那台机器:UNIVAC 里的第一次真实落地

1952 年,Grace Hopper 进入 Remington Rand 公司,UNIVAC 项目。这一步不是履历跳跃,而是问题换轨:在 宾夕法尼亚大学摩尔工程学院的 ENIAC 项目 里 Grace Hopper 关心的是 如何让一台还在用接线图表达程序的机器,学会用抽象语言接收计算,到了 Remington Rand 公司,UNIVAC 项目,问题变成 如何让编译器从实验室原型变成工业界愿意每天使用的生产工具。

UNIVAC 是当时第一台面向商业市场的通用电子计算机。Hopper 团队在这个平台上做出了第一套真正投入使用的编译器,并用它支撑起一个规模可观的程序库。

她主张编译器的最终产物应该是「一种面向人的程序语言」——程序员用它写,机器再翻成自己的语言。这与当时「机器语言才是唯一严肃语言」的主流观点正面对立。

她坚持认为机器语言与人的语言之间必须存在一个翻译层,否则每一次硬件更替都会让所有既有软件作废,而软件作废的速度远快于硬件更新的速度。

她推动把编译器的实现经验写成公开的技术报告并公开发表,这是早期编译器研究能迅速扩散的关键原因之一。

在 UNIVAC 的工作也让她注意到一个此前被忽视的问题:程序员的实际困难往往不在算法本身,而在描述方式晦涩、错误信息毫无提示。她把这个问题带进了之后几十年的工作。

五、问题二:这门工作该由谁来做——1959 年:COBOL,以及一次「女性不该写代码」的正面冲突

主导推动一门面向商业数据处理的新语言的标准化,促成 COBOL 的诞生,并推动其被 IBM 与国防部广泛实现 落在 1959 年。核心机制是 她坚持一门商业语言必须能被不同厂商的机器实现,因此标准本身比任何单一实现更重要;同时主张语言要贴近业务人员的表达方式,而不仅是贴近机器,但真正的意义不在机制本身——在于 COBOL 成为此后数十年间银行、保险与政府系统的主力语言,产生的代码量以万亿行计;今天仍有大量在运行的核心系统由它写成。

在 COBOL 的推动过程中,她做了一件极具决定性的事:把工作重点放在「标准」而不是「某家机器的实现」上。这个选择意味着任何厂商都能实现它,也让它能真正普及。

她在这一时期遭遇了一次公开的性别对抗。有男性高管在会议场合公开宣称女性不适合编写程序,她与这种说法正面交锋,并给出的反驳不是口舌之辩,而是一份详尽的论证:程序编写是一项需要严谨逻辑与长期训练的工作,性别与这项能力无关。

她把这条判断写进了公开文章,主张评价程序员应当只看程序本身的质量——这段话在几十年后被反复引用,因为它准确地预见了软件工程中最核心、也最容易被非技术因素干扰的判断原则。

COBOL 的设计哲学是「贴近业务语言」:它的语法被设计成更接近英文表述与会计记账的逻辑,而不是机器指令。这与当时多数语言的取向相反,也正是它能进入银行与政府系统的原因。

她在推动标准化的过程中表现出极强的组织能力:她不只写代码,还组织会议、协调厂商、达成共识并推动实际实现。这在技术史上的早期阶段,是一种相当不寻常的组合能力。

六、1986 年:海军上将,以及那台被她命令退役的机器

1986 年的 美国海军上将(两星级),美国海军首位女性上将 之后,Grace Hopper 把主要精力投到 推动机器翻译的实用化、退役 COBOL 与 FORTRAN 的历史性工作,以及 her 晚年在哈佛与国防部的讲学 上。对 编译器与程序设计语言的诞生 领域而言,她所在的机构在她推动下完成了对计算机语言史的系统整理,而她对「程序应当是给人读的」这一主张的坚持,最终在几十年后成为软件工程的主流共识。

她 1986 年以海军少将身份退役,随即被召回担任美国海军信息学指导(Chief of Naval Information),并主导 Navy/MIT 的合作项目,把计算机科学教育与国防需求直接连接起来。

在她的影响下,1980 年代美国海军对计算机语言史做了一次大规模整理,把早期计算文献与设备档案系统地保存了下来。她本人对这段历史的价值有极清醒的判断——她清楚自己正处在一个技术周期的末端,因此更急于把它留下来。

她主持了一项备受争议的「语言退役」工作,促成 COBOL 与 FORTRAN 在特定应用场景下被逐步替换。她给出的理由不是语言本身落后,而是这些语言已经培养出庞大的、难以维护的代码资产,继续依赖它们的风险在累积。

她的长寿与持续工作让她成为美国最长寿的海军退役军官之一,而她选择把 1991 年之后的大量时间投入到国防部的计算机教育与历史整理中,直到 80 多岁仍持续在大学授课。

她的那句「我们总说未来会到来,却忘了它其实一直在路上」式的表达被反复引用,其含义并非对技术的预测,而是对「把经验固化成方法」这一工作方式的总结——这正是她从编译器一路做到语言标准化的主线。

参考来源

  • Grace B. Hopper, “The Education of a Computer”, 1952 年美国科学促进会演讲
  • Grace B. Hopper, “The Compiler Draft”, 1952 年;以及 A-0 System 相关技术报告
  • Grace B. Hopper, “Some Educational Aspects of Machine Development”, AFIPS 1952
  • Grace B. Hopper, “The Relation of Machine Language to Human Language”, 1959 年
  • CODASYL 1959 年 COBOL 规范文本,Hopper 的推动记录
  • Grace B. Hopper 等, 《编译器设计手册》(1952-1963 年多卷)
  • 美国海军 1986 年授予 Grace Hopper 海军上将军衔的官方记录
💬 评论
🔗 本文链接

以专业为基,引领科技向善向新

Rooted in professionalism, we lead technology toward social good and innovation.

数智化转型网 · 了解更多产业资讯与选型数据 →

📰 你可能也喜欢

比雅恩·斯特劳斯特鲁普(Bjarne Stroustrup):C++ 的设计者,「零开销抽象」的定义者 AI人物图谱

比雅恩·斯特劳斯特鲁普(Bjarne Stroustrup):C++ 的设计者,「零开销抽象」的定义者

Bjarne Stroustrup(比雅恩·斯特劳斯特鲁普,丹麦,1950 年生)在 C++ 语言设计与通用系统编程 领域的位置,很少有人能给出准确坐标。他证明…
📅 11-13 · 👁 2026年11月13日
吉姆·格雷(Jim Gray):事务理论、并行数据库与公开基准测试的推动者 AI人物图谱

吉姆·格雷(Jim Gray):事务理论、并行数据库与公开基准测试的推动者

Jim Gray(吉姆·格雷,美国,1944 年生)在数据库事务、并行数据库与分布式系统领域的位置,很少有人能给出准确坐标。他证明了「数据库能扛住一亿次并发交易…
📅 11-13 · 👁 2026年11月13日
安保正一(Katsuhiro Isobe):从 SX 登顶到用超级计算机模拟地球 AI人物图谱

安保正一(Katsuhiro Isobe):从 SX 登顶到用超级计算机模拟地球

他领导的团队做出了当时世界上算力最强的计算机,又用它做了一件当时看来极不划算的事——用超级计算机去模拟地球的气候,而那套模拟后来真的被用来评估人类排放的长期后果…
📅 11-13 · 👁 2026年11月13日
莱斯利·兰波特(Leslie Lamport):逻辑时钟、Paxos 与「软件工程」这个词的另一半 AI人物图谱

莱斯利·兰波特(Leslie Lamport):逻辑时钟、Paxos 与「软件工程」这个词的另一半

他给分布式系统发明了一套思考方式——用「逻辑时钟」代替物理时钟、用「状态机」代替流程图——今天几乎每一个可靠系统的设计里,都藏着他五十年前写下的定理。
📅 11-13 · 👁 2026年11月13日
赫尔曼·霍利思(Herman Hollerith):打孔卡与数据工业的起点 AI人物图谱

赫尔曼·霍利思(Herman Hollerith):打孔卡与数据工业的起点

1860 年生于 美国 的 Herman Hollerith,其研究路径与 数据处理与信息工业的起点 的主流路径几乎不重合。他把人口普查的难题变成了一张打孔卡与…
📅 10-29 · 👁 2026年10月29日
王安(An Wang):磁性存储核心与迷你计算机,以及那段被误判的岁月 AI人物图谱

王安(An Wang):磁性存储核心与迷你计算机,以及那段被误判的岁月

An Wang(王安,中国/美国,1920 年生)在 磁性记忆核心与计算机产业化 领域的位置,很少有人能给出准确坐标。他在麻省理工学院读研究生时把磁性记忆核心做…
📅 10-29 · 👁 2026年10月29日