名人说:长风破浪会有时,直挂云帆济沧海。——李白《行路难》
创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
目录
- 一、传奇起点:从数学博士到海军程序员
- 1. 从小就喜欢“拆东西”的女孩
- 2. 第二次世界大战改变了她的人生
- 二、走进计算机:在 Mark I 上写程序
- 1. 一个“程序员”尚未成为职业的年代
- 2. 一只飞蛾与“Debug”的经典故事
- 三、真正的革命:为什么不能让计算机理解人?
- 1. 当所有人都认为“机器只认识机器码”
- 2. A-0:早期编译器的重要突破
- 四、FLOW-MATIC:第一次真正让程序接近“人话”
- 1. 编程为什么一定要写数学符号?
- 2. 从机器语言到英语式编程
- 五、COBOL:让编程真正进入商业世界
- 1. 一门影响半个多世纪的语言
- 2. COBOL 到底有多像英语?
- 六、她真正改变的,不只是一门编程语言
- 1. 人不应该被机器绑架
- 2. 编程应该让更多人使用
- 七、迟来的荣耀:她的名字留在了计算机历史里
- 八、今天再看霍珀:从编译器到AI,我们仍走在她开辟的路上
今天,我们使用 Python、Java、C++ 编程时,早已习惯写下人类可以理解的代码,然后交给编译器或解释器处理。
但如果把时间拨回到计算机刚刚诞生的年代,事情完全不是这样。
那时的程序员往往需要直接面对机器指令、数字代码和复杂的硬件结构。在很多人眼中,想使用计算机,就应该先学会计算机的语言。
但有一个人提出了完全相反的思路:
为什么一定要让人去适应机器?为什么不能让机器去理解人写的语言?
这个看似理所当然的想法,在20世纪50年代却极其大胆。
而提出并真正推动它走向现实的人,就是本文的主人公——格蕾丝·霍珀(Grace Murray Hopper)。
她是数学家、计算机科学先驱、美国海军少将,也是早期编译器技术的重要开拓者。她参与了 Harvard Mark I 的编程工作,主持开发了 A-0、FLOW-MATIC 等早期编程系统,并对后来 COBOL 语言的形成产生了重要影响。
美国白宫后来称她为“Amazing Grace”和计算机软件领域的重要先驱。
图片:Grace Hopper 格蕾丝·霍珀
一、传奇起点:从数学博士到海军程序员
1. 从小就喜欢“拆东西”的女孩
1906年12月9日,格蕾丝·布鲁斯特·默里出生于美国纽约。
她从小就有非常强烈的好奇心。
相比于单纯接受一个东西“能用”,她更喜欢研究:
它为什么能工作?里面到底是什么?
这种对结构和原理的兴趣,后来也贯穿了她整个计算机生涯。
1928年,霍珀从瓦萨学院(Vassar College)毕业,学习数学和物理;1930年获得耶鲁大学数学硕士学位,1934年又获得数学博士学位,之后回到瓦萨学院教授数学。
在那个年代,一名女性能够获得数学博士学位本身就已经十分罕见。
但霍珀的人生,很快迎来了另一个转折点。
2. 第二次世界大战改变了她的人生
第二次世界大战期间,霍珀决定加入美国海军预备役。
1944年,她被派往哈佛大学的Bureau of Ships Computation Project,并进入霍华德·艾肯(Howard Aiken)领导的计算团队。
摆在她面前的,是当时最先进的计算设备之一:
Harvard Mark I。
这台机器与我们今天桌面上的电脑完全不同。
它由大量机械和电磁部件组成,体积庞大,编程方式也远没有今天这么友好。
霍珀成为 Mark I 最早的一批程序员之一,由此正式进入一个当时甚至还没有成熟名字的新领域——计算机编程。
图片:Grace Hopper 与 Harvard Mark I
二、走进计算机:在 Mark I 上写程序
1. 一个“程序员”尚未成为职业的年代
如今我们谈到程序员,会想到 IDE、Git、框架、数据库以及各种高级编程语言。
但在霍珀工作的时代,几乎什么都没有。
没有 Visual Studio Code。
没有 GitHub。
没有 Stack Overflow。
更没有 Python、Java、C++。
程序员必须非常了解机器本身,并将复杂的问题一步步转换成机器能够执行的指令。
这使编程拥有极高的门槛。
而霍珀逐渐意识到:
真正限制计算机普及的,可能不仅仅是硬件性能,还有人与计算机之间沟通的方式。
这个问题,最终促使她走向了自己最重要的研究方向——编译器。
2. 一只飞蛾与“Debug”的经典故事
霍珀还有一个几乎所有程序员都听过的故事。
1947年,Harvard Mark II 计算机出现异常。
工作人员检查机器后,发现一只飞蛾卡在继电器中。
于是,他们把这只飞蛾取出来,直接用胶带粘在了运行日志上,并在旁边写下了大意为:
“第一次发现真正的 Bug。”
这张保存着飞蛾的日志后来成为计算机历史上的著名文物,如今由美国国家历史博物馆保存。
图片:Mark II 日志中真正的“Bug”
不过,这里有一个经常被误传的细节。
Bug 并不是霍珀创造的词,Debugging 也不是因为这只飞蛾才第一次出现。
在此之前,“bug”就已经被工程师用于描述机器或系统中的故障。
真正有趣的是,这一次机器里面真的出现了一只“虫子”。
所以,这件事成为计算机历史上最著名的程序员轶事之一。
从此以后,“找 Bug”“Debug”也成为了无数程序员每天都要面对的日常。
三、真正的革命:为什么不能让计算机理解人?
如果说 Mark I 让霍珀进入了计算机世界,那么编译器则真正让她在计算机发展史上留下了自己的名字。
1. 当所有人都认为“机器只认识机器码”
早期计算机编程非常接近机器本身。
程序员需要告诉计算机:
在哪里读取数据?
执行什么指令?
结果放在哪里?
下一步跳到什么位置?
霍珀却开始思考一个看起来有些“异想天开”的问题:
计算机为什么不能自动完成这些翻译工作?
程序员只负责描述自己想做什么。
至于怎样转换成机器可以执行的指令,交给另一个程序完成。
例如:
程序员编写的高级语言 ↓ 编译器 ↓ 机器能够执行的指令 ↓ CPU今天看来,这几乎是编程领域最基础的工作流程。
但在当时,很多人并不相信这种方式能够实现。
2. A-0:早期编译器的重要突破
1949年,霍珀加入 Eckert-Mauchly Computer Corporation,开始参与 UNIVAC 计算机相关工作。
随后,她设计并推动开发了A-0 System。
A-0 通常被视为计算机历史上最早的编译器系统之一,也是高级语言走向现实的重要里程碑。计算机历史博物馆的资料将其描述为 Hopper 的早期编译器工作,并指出后来的 A-0、A-2 等系统进一步推动了编译式编程的发展。
它背后的思想非常重要:
程序员不应该每一次都重新编写底层机器指令。
那些已经写好并验证过的程序,可以通过名字调用,再由系统自动找到对应代码并组合起来。
从今天的角度来看,这种思想已经深入现代软件开发:
print("Hello World")我们不需要知道print()最终对应多少条机器指令。
也不需要自己控制 CPU 如何打印字符。
因为这些复杂工作,已经被一层又一层的软件抽象替我们完成。
而霍珀所推动的,正是这种改变:
让程序员逐渐远离机器细节,把注意力放回“解决问题”本身。
四、FLOW-MATIC:第一次真正让程序接近“人话”
1. 编程为什么一定要写数学符号?
有了编译器之后,霍珀并没有停止。
她又提出了一个更加大胆的想法:
既然计算机能够翻译程序,那为什么不能直接使用接近英语的语句编程?
这一次,她面对的质疑更大。
很多程序员认为:
计算机是数学机器。
程序就应该使用数学符号和机器语言。
让计算机处理英语?
没有必要。
甚至是不可能的。
但霍珀坚持了下来。
她带领团队开发出了FLOW-MATIC。
FLOW-MATIC 是早期使用接近英语语句进行商业数据处理的编程语言之一,并成为后来 COBOL 形成过程中最重要的技术来源之一。
图片:FLOW-MATIC 编程资料
2. 从机器语言到英语式编程
FLOW-MATIC 最大的突破,并不是某一个具体语法。
而是改变了人们对于“编程语言”的理解。
过去是:
人 → 学习机器语言 → 控制计算机霍珀希望变成:
人 → 使用更自然的语言描述任务 ↓ 编译器 ↓ 计算机执行这里真正改变的是:
人与机器之间的主动权。
以前,是人类努力学习机器。
后来,越来越多的软件开始帮助机器理解人类。
这条路从汇编语言、高级语言、编译器一路发展,最终形成了今天庞大的软件生态。
五、COBOL:让编程真正进入商业世界
1. 一门影响半个多世纪的语言
1959年,美国政府和计算机行业组织专家讨论建立一种通用的商业编程语言。
这个项目最终诞生了:
COBOL(Common Business-Oriented Language,通用商业导向语言)。
霍珀并不是 COBOL 的“唯一发明者”。
这一点需要特别说明。
COBOL 是一个委员会协作产生的语言,霍珀担任相关工作的技术顾问,她此前推动的 FLOW-MATIC 以及“使用接近英语的方式编程”的理念,对 COBOL 的形成产生了重要影响。
因此,与其简单把她称作“COBOL唯一创造者”,更准确的说法是:
她是 COBOL 最重要的先驱和推动者之一。
2. COBOL 到底有多像英语?
我们来看一个简单的 COBOL 程序:
IDENTIFICATIONDIVISION.PROGRAM-ID.HELLO.PROCEDUREDIVISION.DISPLAY"Hello, World!".STOPRUN.即使完全没有学过 COBOL,大概也能猜到它要做什么。
这就是霍珀一直推动的方向:
代码应该更加接近人的表达方式,而不是让所有人都去适应机器。
今天我们使用 Python:
print("Hello, World!")使用 JavaScript:
console.log("Hello, World!");程序语言越来越强调:
可读性、抽象、封装和开发效率。
从某种角度来看,这正是霍珀当年坚持的方向不断向前延伸的结果。
六、她真正改变的,不只是一门编程语言
如果只把格蕾丝·霍珀理解成“COBOL先驱”,其实远远低估了她。
她真正推动的是一种新的计算机哲学:
1. 人不应该被机器绑架
早期程序员需要理解大量机器细节。
霍珀却不断推动计算机软件提高抽象层次。
机器码:
01001000 01100101 01101100 01101100 01101111汇编语言:
MOV AX, BX高级语言:
printf("Hello World");Python:
print("Hello World")再到今天,我们甚至可以直接告诉 AI:
帮我写一个读取 Excel 文件, 统计每个月销售额, 然后生成柱状图的 Python 程序。从机器语言到高级语言,再从高级语言到自然语言驱动的软件开发,人类一直在做同一件事情:
不断缩短“人的想法”与“机器执行”之间的距离。
而霍珀,是这条道路上最早、也最坚定的推动者之一。
2. 编程应该让更多人使用
编译器真正伟大的地方,并不仅仅是节省了几行代码。
它改变了软件开发的参与门槛。
因为如果世界上所有程序员都必须直接操作机器码,那么计算机永远只能属于极少数专家。
只有当工具越来越简单、语言越来越高级、抽象越来越完善,越来越多的人才能开始编程。
从这个角度来看:
霍珀推动的不只是编译器的发展,也是计算机从少数专家工具走向大众的重要一步。
七、迟来的荣耀:她的名字留在了计算机历史里
1992年1月1日,格蕾丝·霍珀去世,享年85岁。
她被以完整军事荣誉安葬于阿灵顿国家公墓。
但她的名字并没有随着时代远去。
2016年,美国总统奥巴马追授霍珀总统自由勋章(Presidential Medal of Freedom),这是美国最高等级的平民荣誉之一。白宫在介绍她时,再次强调了她在编译器以及让编程语言更加实用、易用方面的重要贡献。
奥巴马政府在纪念计算机科学先驱时,还曾用一句非常简洁的话概括她的历史地位:
如果莱特兄弟代表飞行,爱迪生代表电灯,那么霍珀代表代码。
从 Harvard Mark I,到编译器;
从 FLOW-MATIC,到 COBOL;
从数学博士,到海军少将;
她的一生横跨了现代计算机最重要的早期发展阶段。
图片:Grace Hopper 晚年
八、今天再看霍珀:从编译器到AI,我们仍走在她开辟的路上
今天再看 Grace Hopper,她最重要的意义,不只是开发了什么程序,而是推动了一个至今仍不过时的理念:
让技术更简单,让计算机更懂人。
从机器指令到高级语言,从编译器到今天的 AI,计算机一直在降低人与机器交流的门槛。
几十年前,霍珀推动计算机理解更接近人类的编程语言;几十年后,我们开始尝试让计算机直接理解自然语言。
技术在变,但问题没有变:
如何让人与机器之间的距离更近一点?
她没有独自创造 COBOL,却坚定推动了编译器、高级语言和机器无关编程的发展。
她所坚持的目标很简单:
让计算机适应人,而不是永远让人适应计算机。
格蕾丝·霍珀,让编程一步步从机器的世界,走向了人的世界。
专栏✅:《计算机名人堂》,欢迎订阅催更,谢谢大家支持!
创作者:Code_流苏(CSDN)