计算机导论课程

Grace Murray Hopper ___第一位发现并排除了程序错误(bugs)的人

 

Grace Hopper (1906--1992) 本姓 MurrayHopper 是夫家的姓。公元 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)。在那个年代只有三种程序语言,COBOLARTFORTRAN (IBM 的产品)

 

1966 Grace Hopper 满六十岁,海军又叫她退休了,因为她当时的官阶是海军的中校,六十岁就该届龄退休了。在退休的那一天,Grace Hopper 说这是她一生中最悲伤的一天了,因为人家已经告诉她她太老了。可是海军在她退休后没多久,发现没有她是不行的,因为海军里还有很多计算机化、自动化、正规化的工作尚未完成,所以在她退休的五个月后,海军就要求她复职。所以在她退休的半年后 (1967 8 1 ),又回到了海军,回去之后担任了好几个海军的计算中心的主持人或是顾问,指挥那些海军的技术人员,到处去演讲、宣传她的观念、管理观。其中,有件很有趣的事,她在演讲之中,总是没有办法让她的听众懂得什么是 nanosecond (十亿分之一秒)。多快的时间是一个 nanosecond? Microsecond(百万分之一秒) nanosecond 差多少的时间?你很难去解释,因为它们都是很短很短的时间,相差了一千倍。 Grace 想到了个点子,她跑去工程部切了段电线,这节电线是 11.78 英吋她就拿着这将近一呎的电线跟听众说:「这个长度就是电流在一个 nanosecond 可以跑的距离」,同时她又拿了好几捆的电线放到桌上,差不多一千呎 (约莫三百三十三公尺) 的电线,就是一千倍,然后她就说:「这个长度就是电流在一个 microsecond 可以跑的距离」此时,听众就清楚了,所以她说:「你们要小心,绝对不要随便浪费一个 microsecond 的电。

posted on 2008-09-22 21:39 王冬青 阅读(308) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。

导航

<2008年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

统计

常用链接

留言簿(4)

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜