乐趣区

编译器与Debug的传奇Grace-Murray-Hopper小传

摘要: 改变世界的程序员前辈。

来自:http://www.road2stat.com/cn/network_3c/grace_murray_hopper.html

这两天读《UNIX 痛恨者手册》时看到一句被引用的牛人体语录:“标准的伟大之处在于它可以有很多。—— Grace Murray Hopper.”Google 之,意外挖出了一位女性牛人,谨作一文以记之。以下内容系根据已有资料编辑整理而成。


Grace Murray Hopper

引言

1992 年 1 月 7 日,华盛顿阿灵顿国家公墓,美国海军为在元旦凌晨睡梦中安然去世的退休海军女军官格蕾丝·穆雷·赫柏 (Grace Murray Hopper) 举行了隆重的葬礼。海军仪仗队和众多肃穆的海军官兵按照海军的礼仪向这位令人尊敬的长者作最后的告别。千千万万的美国人则通过电视转播观看了葬礼的实况。四年后的 1996 年 1 月 6 日,美国海军在缅因州的巴斯港 (Bath, Maine) 为它新建造的一艘阿利·伯克级驱逐舰举行了隆重的命名仪式,把它命名为“赫柏号”。这是第二次世界大战以后第一次、整个美国海军历史上第二次以一位女性的名字命名一艘战舰。

启蒙

Grace Hopper (1906–1992), 本姓 Murray, Hopper 为夫姓。1906 年 12 月 9 日生于美国纽约一个海军世家,其祖父军衔曾达少将。她的外祖父则是一名高级土木工程师,常常带着她去上班,她也十分高兴地去帮着扶红白相间的测量杆,这培养了她对于几何学和数学的兴趣。Grace 的父亲因患动脉硬化导致双腿截肢,长期住院,这使得作为长女的她从小就更加懂事和勤奋。

Grace 回忆她小时候最喜欢上的课是数学课,特别是几何课。因为在几何课上,她可以把铅笔盒里所有彩色的笔全部拿出来用。虽然她是个女孩子,可是各种量角器、计算尺她都喜欢拿来玩,研究它们的原理和作用。她还做过一些很像男孩子做的事情:她曾经在六、七岁的时候,把家里所有的钟都拆开,但是没有一个成功装回去,因此还受到了严厉的处罚。

教育

进入大学之前,Grace 就读于私立的 Wardlaw-Hartridge 学校。1928 年她大学毕业于瓦萨学院 (Vassar College) 并取得数学和物理的双学士学位,在校期间是美国资优学生联谊会 (Phi-Beta-Kappa Society) 成员 (PBK 是一个有着两百多年历史的,很好很强大的学生社团。老布什、克林顿、厄普代克都曾是其中一员)。随后进入耶鲁大学攻读数学硕士,在 1930 年得到硕士学位。1930 年 6 月 15 日她与 Vincent Foster Hopper 结婚 (Vincent 是纽约大学英文系教授,1945 年过世,他与 Hopper 没有生育子女)。结婚没多久,Grace 就决定要攻读博士,于是她一边教书,一边在耶鲁大学进修博士学位,并在 1934 年取得学位,前后只花了四年的时间,这算是相当快的。她的博士论文题为《代数方程可约的一个新准则》(A New Criterion for Reducibility of Algebraic Equations), 但是让许多人惊奇的是,她是用几何方法证明这个准则的。作为一个女性,获得数学博士学位是一个很大的成就,因为在数学上取得成就而获得博士学位本身就是很困难的。据统计,从 1862-1934 年间,全美总共授予 1279 个博士学位,平均 每年不到 18 个,而女性获得数学博士学位的就更是凤毛麟角了。在求职方面,女数学家通常只能到高中教课,极难希望上大学讲台,但 Grace 做到了:她在硕士毕业后被母校瓦萨学院聘任,短短几年就从助教升到副教授。不过,到这个阶段为止,我们还看不出来她会跟计算机产生任何关系。

转折

1941 年是 Grace 人生的转折点。珍珠港事件后,Grace 有了从军的念头,她想加入海军。当时女性从军都是做后备军人,大部分都是护士,要不然就是做后勤。如果是受过高等教育的女性,就会被分配去做有关计算的工作。由于家庭传统,她选择了参加海军的 WAVES 组织 (Women Accepted for Voluntary Emergency Service)。在马萨诸塞州北安普敦 (Northampton, MA) 的海军军官学校接受培训以后,她被授予上尉军衔,考虑到她的数学背景,她被派到哈佛大学的 Howard Aiken (1900-1973) 教授手下参与 Mark I 的研制工作。Aiken 教授是 1939 年的哈佛物理博士,也是 Mark I、II、III、IV 这一系列电机计算机的设计及制造者。

题外话:Mark I 原来的名字是 ASCC (Automatic Sequence Controlled Calculator), 由哈佛大学与 IBM 合资建造,完成于 1943 年,重 35 吨,内部线路长达 500 英里。但是在 1944 年的 Mark I 启用典礼之后,IBM 和哈佛就闹翻了,原因是哈佛认为 IBM 只是个出钱的财主,主要的智力贡献是哈佛人的功劳,IBM 认为自己也在工程上做了许多研究和创新,而哈佛却认为那些工程上的创新都不值一提。(残念 ..) 所以 IBM 就从哈佛的 Mark 计划中退出。后来的十年间,IBM 在学术界的主要合作伙伴,变成了哥伦比亚大学。(都是牛校中的牛校啊 ..)

Grace 从小就喜欢各种计算尺,当她走进哈佛的计算工厂见到这台电机计算机时,她说这是她看过最有趣的计算尺。在她之前,有两个男生在 Mark 上写过程序,这两个男生后来帮助 Grace 在三天之内写出了她的第一个程序。所以算起来,Grace 是世界上第三个在电机计算机上写程序的人。下面的照片就是 Mark 计划的工作人员。坐在中间的是 Aiken 教授,唯一的女性就是 Grace Hopper, 背景为 Mark I.


The Harvard Mark Team

荣耀

1945 年 9 月 9 日,发生了一件对计算机界而言非常重要的轶事 。那天的天气很热,工作人员把窗户都打开了,后来有一只蛾飞了进来,结果那只蛾死在一只继电器里面,造成电路不通,机器死机,他们没办法算出他们要的结果。经过了近一天的检查,Grace 找到了那只蛾,她设法用她的发夹把那只蛾弄了出来,还把那只蛾的尸体贴在她的管理日志上,上面写道:“就是这个 Bug,害我们今天的工作无法完成。”这个消息传开之后,那个实验室里的人每逢老板询问为何还没做出结果时,都把过错推给 Bug. ( 那个实验室里的人们真是幸福啊 ..)

尔后,”bug”(小虫) 和”debug”(除虫) 这两个本来普普通通的词汇成了计算机领域中特指莫明其妙的“错误”和“排除错误”的专用词汇而流传至今。下面这张照片,就是当时的那只蛾以及 Grace 的记录。


Grace Hopper’s Bug

第二次世界大战结束后,所有的后备军人应当退役,但是 Grace Hopper 却决定辞去瓦萨学院的教职,专心在 Aiken 的实验室里做个 Programmer. 1949 年,Grace 离开哈佛来到费城,进入 Eckert 和 Mauchley 合开的计算机公司 (Eckert-Mauchley Computer Corporation) 担任资深数学家,主要工作是设计软件。这家公司设计出来的第一套电子计算机,也是全世界的第三台电子计算机,叫做 UNIVAC I. 1950 年公司因经营不善,被 Remington Rand 收购。没过多久,Remington Rand 又跟几家小公司合并成立了 Sperry. Grace 一直在这家公司做资深数学家和程序设计人员,到 1971 年 65 岁退休,她才离开这家公司。

Grace 对计算机界的贡献相当多,Bug 这个名词的引用,其实只算是一个小小的插曲。她最大的贡献是发明了世界上第一个编译器 (Compiler), 名字叫做 A -0. 当时是没有任何组合语言及程序语言存在的,所有的程序设计人员都要把程序翻译成机器码,即”0011000101011″这样的形式,在纸上打孔,再送到机器里去读。Grace 在进入 Eckert-Mauchley 公司之后,便产生了一种想法,她想设计一种程序,让人可以用类似英文的语法,把想做的事写下来,然后用这个程序把英文翻译成机器的语法,交给机器去执行。这个想法就是今日的 Compiler (编译器). 当初她提出这样的构想时,众人皆曰不可。所有人都告诉她计算机只能做计算,只能处理数字,计算机是不懂英文的。在 50 年代,大部分人都尚未意识到计算机是用来处理信息的工具,所有的人就认为计算机只是个计算器而已。Grace Hopper 可能是第一个想到这个问题并且有机会做下去的人。尔后,她就到处去演讲以筹集资金来做这项计划。这段期间,有很多朋友问她:“你怎么这么勇敢呢? 万一搞砸了,你该怎么办?”Grace 回答道:

“It is always easier to ask forgiveness than it is to get permission.”

(以后要道歉,比现在要拿到钱简单多了。)

这句话后来成为她一生中的至理名言之一。

当初在写世界上第一个编译器 A - 0 时,为了向能出钱的老板炫耀,Grace 还设计了三个版本:英文版、德文版、法文版,表明编译器不仅看得懂英文,也看得懂德文跟法文。但后来德文版和法文版的编译器都没再做下去。到 1956 年,她开发出来一套很完整的程序语言,叫做 FLOW-MATIC. 海军采用了这套系统 (这时 Grace 还是海军的一员)。因为海军幅员广大,如果各地自行稍加将编译器修改一小部分,就会发生 A 地的程序在 B 地无法执行的问题。于是 Grace 写了一套程序,用来检查这些程序之间是不是采用同样的编译方式,称作 Validation. 后来影响到民间,渐渐发展出一套新的语言,偏向于商业使用的语法,这套程序语言就是著名的 COBOL (Common Business Oriented Language). 这也是Grace Hopper 对计算机界的第二个重大贡献。其实,在那个年代总共只有三种程序语言:COBOL、ART、FORTRAN (IBM 的产品). 有人把 Grace 叫做“COBOL 之母”,这个称号虽然被学术界的某些人所反对 (因为她没有直接参 COBOL 语言的设计工作),但她对 COBOL 的形成与发展所起的重大作用却是世人一致公认的。据 20 世纪 80 年代初的统计,全美在运行中的程序有 80% 是用 COBOL 语言编写的,由此可见 COBOL 语言对计算机应用发展所起的作用。

下面这张,是 Grace 颁奖给 Donald E. Knuth (神一般的存在) 的照片。前者是开创计算机程序设计语言的早期领袖之一,后者是计算机程序算法的当代领袖之一。这是一张难得的合影。(强大的气场,泪奔 ..)


Grace & Knuth

1966 年,Grace Hopper 满 60 岁。她当时的官阶是海军中校,而海军中校 60 岁就该退休了。退休的那一天,Grace 说这是她一生中最悲伤的一天,因为别人已经告诉她:她太老了。但很快,海军发现离了 Grace 还不行——有个工资管理程序 重写了 823 次 还是不能正常运行。因此,她刚从海军退休半年就又被海军召回重新服役,负责海军系统计算机高级语言的标准化和普及工作,并且一干就是 20 年,直到 1986 年 8 月 14 日才正式最后退休。这期间她的军衔一再提升,1985 年被提升为少将。由于这超过了美国法律规定的军官服役年龄,国会还通过了专门的法律使对 Grace 的任命合法化。在波士顿的“宪法号”战舰上向 Grace 授予“国防部优秀服役勋章”(Defense Distinguished Service Medal) 并为她退休举行的隆重仪式上,Grace 在致词中自豪地说她是 WAVES 成员中最后一个离开岗位的人:她 40 岁时就被告知她太老了不宜继续在部队中工作,而她却仍然穿着制服又干了整整 40 年!

重返海军期间,她担任了好几个海军计算中心的主持者或是顾问,指挥海军的技术人员,到处去演讲,宣传她的观念。其中,有一件很有趣并且很有名的事情。她在演讲之中,总是没有办法让听众听懂什么是 nanosecond (十亿分之一秒). 多长的时间是一个 nanosecond? 而 microsecond (百万分之一秒) 又跟 nanosecond 差多少? 这一点很难去解释,因为它们都是极短极短的时间,但相差了一千倍。Grace 想到了个点子,她跑到工程部切了段电线,这段电线长 11.78 英寸 (约合 0.3 米),她就拿着这将近 1 英尺的电线跟听众说:“这个长度就是电波在一个 nanosecond 可以跑的距离。”同时,她又拿了好几捆电线放到桌上,差不多有 1000 英尺 (约合 300 米),然后她就说:“这个长度就是电波在一个 microsecond 可以跑的距离。”此时,听众就明白了。所以她说:“你们要小心,绝对不要随便浪费一个 microsecond 的电。”

其间,有一位参议员,他从来没见过 Grace. 但是他听说了这个人以后,就私下做了些调查,然后在国会里面主动提出了关于 Grace 的申请案。他认为这样重要的女性不应该在海军里面只做一个校官而已,觉得她应该做将官。国会很快就通过了这个提案,然后通知了海军,海军就将 Grace 升职了,于是,在 1985 年 11 月,Grace 成为了 海军少将,她是美国第一个到达这个官阶的女性。1986 年,她七十九岁,是所有在世的、最年长的、尚未退役的美军军官。此时的她,即将正式退休。

尾声

Grace 退休的 Party 上来了 2000 多人,有她认识的,也有她不认识的。在正式退休之后,她又跟 Digital 公司签约,Digital 公司聘请她代表他们演讲、推销他们公司的产品。Digital 公司当时主要的产品是 Minicomputer. 事实上,在 1986 年时 PC 已经出现,那时叫做 Microcomputer. 在海军里,Grace Hopper 是极力推行使用 PC 的人之一。她在这方面也有一句名言。她说,在古老的时候,人们都是用牛和马来拉东西,后来人类社会发展得越来越蓬勃,东西越来越重,但是人们并没有使用更大更壮的物种来搬运东西。事实上,人们是用更多的牛和马来做这些更加粗重的工作。她用这个比喻来说,计算机不应该越做越大,而应该用小型的、大量的计算机一起来做要做的事情。(原来 Grace 在 20 多年前就提出了并行计算?)

Grace Hopper 逝世于 1992 年 1 月 1 日凌晨,在参加了新年 Party 之后,准确时间不明。她生前的一个心愿是活到 1999 年 12 月 31 日的晚上,因为她说她想参加那一场 Party. 显然,Grace 是个很喜欢 Party 的人。


Grave of Grace

后记

Grace Hopper 是个非常 amazing 的人 (常被称为 Amazing Grace),崇拜她的人相当多。虽然她的事迹很多,但是还有很多有类似事迹的人并没有像她这样受到众人的崇拜。由其中一点我们可以看出来:从 1947 年开始 (二战结束后第二年),她获得了第一个荣誉博士学位 (宾州大学),从那以后,她先后被 40 多所大学授予荣誉博士学位,其中包括芝加哥大学、华盛顿大学、马里兰大学等知名学府。各种妇女社会团体和学术组织都曾授予 Grace 各种称号和奖励。1991 年,布什总统在白宫授予她的“美国国家技术奖”(National Medal of Technology) 是其中的最高奖项,她也是至今惟一获此殊荣的美国女性。她的名言有很多,她自己最喜欢的,也是她最喜欢对所谓的“年轻人”说的 (在她年老时,她所谓的年轻人就是“年龄不到我的一半的人就叫做年轻人”),这句话是:

“A ship in port is safe, but that is not what ships are built for.”

语录

下面 Grace 的语录中有几句比较有意思的话。

  • From then on, when anything went wrong with a computer, we said it had bugs in it.
  • The most dangerous phrase in the language is,“We’ve always done it this way.”
  • Humans are allergic to change. They love to say,“We’ve always done it this way.”I try to fight that. That’s why I have a clock on my wall that runs counter-clockwise.
  • Leadership is a two-way street, loyalty up and loyalty down. Respect for one’s superiors; care for one’s crew.
  • One accurate measurement is worth a thousand expert opinions.
  • Someday, on the corporate balance sheet, there will be an entry which reads,“Information”; For in most cases, the information is more valuable than the hardware which processes it.
  • We’re flooding people with information. We need to feed it through a processor. A human must turn information into intelligence or knowledge. We’ve tended to forget that no computer will ever ask a new question.
  • To me programming is more than an important practical art. It is also a gigantic undertaking in the foundations of knowledge.
  • They told me computers could only do arithmetic.
  • In pioneer days they used oxen for heavy pulling, and when one ox couldn’t budge a log, they didn’t try to grow a larger ox. We shouldn’t be trying for bigger computers, but for more systems of computers.
  • Life was simple before World War II. After that, we had systems.
  • We went overboard on management and forgot about leadership. It might help if we ran the MBAs out of Washington.
  • At any given moment, there is always a line representing what your boss will believe. If you step over it, you will not get your budget. Go as close to that line as you can.
  • I seem to do a lot of retiring.
  • I handed my passport to the immigration officer, and he looked at it and looked at me and said,“What are you?”

参考

  • 维基百科:Grace Hopper
  • 计算机概论十六讲:Grace Murray Hopper
  • 耶鲁大学计算机系:Grace Murray Hopper

关于 Fundebug

Fundebug 专注于 JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js 和 Java 线上应用实时 BUG 监控。自从 2016 年双十一正式上线,Fundebug 累计处理了 20 亿 + 错误事件,付费客户有阳光保险、核桃编程、荔枝 FM、掌门 1 对 1、微脉、青团社等众多品牌企业。欢迎大家免费试用!

退出移动版