Grace Hopper (1906--1992) 本姓 Murray,Hopper 是夫家的姓。公元 1906 年 12 月 9 日在纽约出生。 Grace 的爸爸是个很特别的人物,在那个年代里,很少有人家会供家里的女生去受教育。 Grace 的爸爸不是个高级的知识分子,在当时的工作是个保险推销员,后来得了病,将双腿锯掉,以木腿当作义肢。用义肢练习走路了一段时间后,他又开始从事拉保险的工作,所以他对这件事情相当乐观,他常对他的三个子女(一个儿子、两个女儿)说:「我用这双木头腿都可以出去工作,所以你们应该是任何事情都可以办得到的,你们应该没有办不到的事情。」这些话对于孩子们的影响很深,三个小孩都读到了大学,但是只有 Hopper 拿到了博士学位。
Hopper 回忆她小时候最喜欢上的课是数学课,特别是几何课。为什么她最喜欢上几何课呢?因为她可以把她铅笔盒里所有有颜色的笔全部拿出来用。她从小还有一个特色,虽然她是个女孩子,可是她喜欢玩各种的器具,举凡各种量角尺、计算尺,她都喜欢拿来玩,研究它们是用什么原理作用的。她还有做一些很像男生的事情,她曾经在六、七岁的时候,把她家所有的钟都拆开来,但是没有一个有装回去,因此受了很严厉的处罚。
Hopper 在 1928 年毕业于 Vassar 大学,取得了数学与物理的学士学位。随后到耶鲁大学攻读硕士,并在 1930 年得到数学硕士。毕业后没有继续念博士,而是回到她的母校 Vassar 大学担任教职。 1930 年 6 月 15 日与 Vincent Foster Hopper 结婚, Vincent 是纽约大学英文系教授,但是他在 1945 年时过世了,他与 Grace 没有生育子女。结婚没多久,Grace 就决定要攻读博士,所以 Grace 一边教书, 一边在耶鲁大学在职进修博士学位,并在 1934 年取得学位,前后只花了四年的时间,这算是相当快的。她的博士论文是写:用一个几何的方法去解决一个代数的问题,英文标题是 A new Criterion for Reducibility of Algebraic Equations,到这个阶段为止,还看不出来这个人会跟计算器产生任何的关系。
1941 年,Grace 在她的人生中产生了极大的改变。当时欧战爆发,Grace 有了从军的念头,她想加入海军。当时女人从军都是做后备军人,大部分都是护士,再不然就是担任后勤。如果是受过高等教育的女性,就会被分配要去做有关计算的工作,例如:计算弹道,让前线的炮兵知道如何使用炮弹。 Grace 在受过半年的训练后,因为有着相当高等的学位,所以被分派到的工作也比较高级,她被分派到哈佛大学的一个后勤的计算局 (Bureau of Ordinance Computation at Harvard University),当时的主持人是 Howard Aiken (1900--1973)。他是 1939 年的哈佛物理博士,也是 Mark Ⅰ、Ⅱ、Ⅲ、Ⅳ 这一系列电机计算器的设计及制造者。 Mark Ⅰ原来的名字是 ASCC (Automatic Sequence Controlled Calculator)。它是由哈佛与 IBM 合资建造的,完成于 1943 年,有 35 吨重,内部的线路总共有 500 英哩长。但是在 1944 年 Mark Ⅰ 启用典礼之后,IBM 和哈佛闹翻了,原因哈佛人认为 IBM 只是个出钱的财主,主要的智能贡献是哈佛人的功劳,而 IBM 认为自己也在工程上做了许多研究和创新,只是哈佛认为那些工程上的创新都不值一提。所以 IBM 就从哈佛的 Mark 计划中抽腿,后来的十年间,IBM 在学术界的主要合作伙伴,变成了哥伦比亚大学。
Mark 系列计算器的设计理念,与 Babbage 的设计非常类似,但是增加了电动机械的帮助。 Mark I 的数值都是 23 位的十进制整数 (或定点数)。做一个加法要 6 秒,一个除法要 12 秒。 Aiken 持续在电机计算器方面发展,直到 1952 年的 Mark IV。到那时候,已经明显可见,电机计算器的设计,必将输给电子计算器。由此可见,精明如哈佛,也并非一开始就押对了宝。
根据 Grace 自己的说法,当她走进哈佛的计算工厂,第一眼看到那巨大、丑陋的 Mark I 时,就立刻爱上它了!其实,IBM 是很有格调的公司,他们设计了 Mark I 的外形,还不算丑陋啦。
因为 Grace 从小就喜欢各种的计算尺,所以当她见到这个电动计算器时,她说这是她看过最有趣的计算尺。在她之前有两个男生在 Mark 计算器上写过程序,这两个男生后来帮 Hopper 在三天之内写出了她的第一个程序。所以算起来,Hopper 是第三个在电机计算器上写程序的人。
1945 年 9 月 9 日,发生了一桩对计算机界而言非常重要的轶事。那天因为天气很热,他们都把窗户给打开了,然后飞进来一只蛾,结果那只蛾被打死在一支继电器里面,造成电路不通,让机器当机,使他们没办法算出他们要的结果。经过了近一天的检查,Hopper 找到了那只蛾,她用她的发夹去把那只蛾给弄出来,还把那只蛾的尸体贴在她的管理日志上,上面写着:「就是这个 bug,害我们今天的工作无法完成。」这个消息传开之后,那个实验室里的人每逢老板询问为何还没做出结果时,都把过错推给 bug。尔后,在计算机界中,遇到程序中有错,就称之为 bug。除错叫做 debug。
1945 年二次大战结束后,所有的后备军人应当除役,但是 Grace Hopper 却决定辞去 Vassar 那边的教职,要专心的在 Aiken 的实验室里做个 progammer。 1949 年,Hopper 离开哈佛,到了费城,进入 Eckert 和 Mauchley 合开的计算机公司 (Eckert-Mauchley Computer Corporation),担任资深数学家,主要的工作是帮忙设计软件。这家公司设计出来的第一套电子计算器,也是全世界第三台,叫做 UNIVAC Ⅰ,在这上面发展一些汇编语言出来。 1950 年因经营不善,被 Remington Rand 所并购。过没多久, Remington Rand 又跟几家小公司合并成立 Sperry。 Grace 一直在这家公司做资深数学家、程序设计人员,到 1971 年她 65 岁届龄退休,才离开这家公司。
Grace 对计算机界的贡献相当多,像是 bug 这个名词的引用,只是一个小小的插曲,最大的贡献是发明了全世界第一套的 compiler 叫做 A-0。在当时是没有任何汇编语言及程序语言存在的,所有的程序设计人员,都是要把程序翻译成机器码,就是翻成 0011000101.. 这样的形式,在纸上打洞,再送到机器里面去读。 Grace 在进 Eckert-Mauchley 这家公司之后,她便有了一种想法,她想设计一种程序,让人可以用类似英文的语法,把想做的事写下来,然后用这个程序把英文翻译成机器的语法,交给机器去执行。这个想法就是今日的 compiler(编译器)。当初她提出这样的构想时,众人皆曰不可。所有人都告诉她计算机只能做计算,只能加减乘除,只能处理数字,计算机是不懂英文的。由此可见,在 1950 年代,大部分人尚未意识到计算机是用来处理信息的工具,所有的人就是认为计算机是个计算器而已。 Grace Hopper 可能是第一个想到而且有机会做下去的人。尔后,Grace Hopper 就到处去演讲,到处去跟人要钱来作这项计划。这段期间,有很多她的朋友问她说:「妳怎么这么勇敢呢?万一搞砸了,妳该怎么办?」,Grace Hopper 回答道:
It's always easier to ask forgiveness than it is to get permission.
(以后要道歉,比现在要拿到钱简单多了) 这句话成为她一生中的至理名言之一。
在 1952 年 Grace 终于发展出第一套实验性的编译器,在 Sperry 的机器上可以执行的,叫做 A-0,后来又发展了 A-1、 A-2。当初在写 A-0 时,为了向出钱的老板炫耀,她还设计了三个版本:英文、德文、法文。她给人看 compiler 不仅可以看得懂英文,也看得懂德文跟法文。但是后来德文跟法文的 compiler 都没再做下去。后来 Grace Hopper 渐渐发展她的 compiler 在 UNIVAC Ⅰ & Ⅱ 上面能够执行, 1956 年她已经做出来一套蛮完整的程序语言,叫做 FLOW-MATIC,海军采用了这套系统 (这时 Grace Hopper 还是海军的一员)。后来海军跟一些民间的公司想要把 FLOW-MATIC 变得更标准一点,这也是 Grace Hopper 第二个对计算机界重大的贡献。因为海军幅员广大,各地因为自行稍加将 compiler 修改一小部份,以致发生 A 地的程序在 B 地可能无法执行的问题。 Grace Hopper 写了一套程序,用来检查这些程序之间是不是用同样的编译方式,称作 Validation。后来影响到民间,渐渐发展出一套新的语言,偏向商业用的语法,这套程序语言就是著名的 COBOL (COmmon Business Oriented Language)。在那个年代只有三种程序语言,COBOL、ART、FORTRAN (IBM 的产品)。
1966 年 Grace Hopper 满六十岁,海军又叫她退休了,因为她当时的官阶是海军的中校,六十岁就该届龄退休了。在退休的那一天,Grace Hopper 说这是她一生中最悲伤的一天了,因为人家已经告诉她她太老了。可是海军在她退休后没多久,发现没有她是不行的,因为海军里还有很多计算机化、自动化、正规化的工作尚未完成,所以在她退休的五个月后,海军就要求她复职。所以在她退休的半年后 (1967 年 8 月 1 日),又回到了海军,回去之后担任了好几个海军的计算中心的主持人或是顾问,指挥那些海军的技术人员,到处去演讲、宣传她的观念、管理观。其中,有件很有趣的事,她在演讲之中,总是没有办法让她的听众懂得什么是 nanosecond (十亿分之一秒)。多快的时间是一个 nanosecond? Microsecond(百万分之一秒) 跟 nanosecond 差多少的时间?你很难去解释,因为它们都是很短很短的时间,相差了一千倍。 Grace 想到了个点子,她跑去工程部切了段电线,这节电线是 11.78 英吋她就拿着这将近一呎的电线跟听众说:「这个长度就是电流在一个 nanosecond 可以跑的距离」,同时她又拿了好几捆的电线放到桌上,差不多一千呎 (约莫三百三十三公尺) 的电线,就是一千倍,然后她就说:「这个长度就是电流在一个 microsecond 可以跑的距离」此时,听众就清楚了,所以她说:「你们要小心,绝对不要随便浪费一个 microsecond 的电。