当前位置: 代码迷 >> 计算机图书 >> 编译器与Debug的传奇:女牛人Grace Hopper小传解决思路
  详细解决方案

编译器与Debug的传奇:女牛人Grace Hopper小传解决思路

热度:8972   发布时间:2013-02-26 00:00:00.0
编译器与Debug的传奇:女牛人Grace 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是世界上第三个在电机计算机上写程序的人。

荣耀
1945年9月9日,发生了一件对计算机界而言非常重要的轶事。那天的天气很热,工作人员把窗户都打开了,后来 有一只蛾飞了进来,结果那只蛾死在一只继电器里面,造成电路不通,机器死机,他们没办法算出他们要的结果。经过了近一天的检查,Grace找到了那只蛾, 她设法用她的发夹把那只蛾弄了出来,还把那只蛾的尸体贴在她的管理日志上,上面写道:“就是这个Bug,害我们今天的工作无法完成。”这个消息传开之后, 那个实验室里的人每逢老板询问为何还没做出结果时,都把过错推给Bug. (那个实验室里的人们真是幸福啊 ..)
尔后,”bug” (小虫) 和”debug” (除虫) 这两个本来普普通通的词汇成了计算机领域中特指莫明其妙的“错误”和“排除错误”的专用词汇而流传至今。下面这张照片,就是当时的那只蛾以及Grace的记录。
第二次世界大战结束后,所有的后备军人应当退役,但是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语言对计算机应用发展所起的作用。
  相关解决方案