计算机软件第一夫人Grace Hopper
被誉为计算机软件第一夫人的Grace Hopper于1906年12月9号出生在纽约市的一个海军世家。她对计算机领域的贡献不可磨灭,她发现了计算机程序中的第一个Bug,同时也创造了计算机世界最大的Bug——千年虫(Y2K);她实现了第一个编译语言和编译器;创造了世界上第一种商业编程语言COBOL并为之后的高级程序设计语言定义了模型。
之所以Hopper被誉为计算机软件第一夫人,除了致力于发展程序语言设计外,同时还培养了大批的程序设计人员。Hopper自己曾说:“与其说我的最大贡献是发展了程序设计技术,不如说我培养了大批程序设计人才。”在Hopper传奇的一生中,她赢得了无数荣誉和奖励。1971年为了纪念现代数字计算 机诞生25周年,美国计算机学会特别设立了“Grace Hopper”奖;1980年Hopper获得国际IEEE组织颁发的首届计算机先驱奖;1991年,布什总统在白宫授予Hopper“全美技术奖”,这也是至今美国女性唯一获此殊荣的人。
Grace Hopper抓住了计算机历史上第一个bug
图为Grace Hopper抓到的Bug——一只蛾,以及她的记录
1945年9月9日,发生了一件对计算机界而言非常重要的轶事。那天的天气很热,工作人员把窗户都打开了,后来有一只蛾飞了进来,结果那只蛾死在一只继电器里面,造成电路不通,机器死机,他们没办法算出他们要的结果。经过了近一天的检查,Grace找到了那只蛾,她设法用她的发夹把那只蛾弄了出来,还把那只蛾的尸体贴在她的管理日志上,上面写道:“就是这个Bug,害我们今天的工作无法完成。”这个消息传开之后,那个实验室里的人每逢老板询问为何还没做出结果时,都把过错推给Bug。
尔后,”bug”(小虫)和”debug” (除虫)这两个本来普普通通的词汇成了计算机领域中特指莫明其妙的“错误”和“排除错误”的专用词汇而流传至今。
另外,那时的硬件极其昂贵,为了节省内存空间,Grace博士开始采用6位数字来储存日期,即年、月、日各两位。随着COBOL语言的影响日愈扩大,这一习惯做法被人们沿用下来,到2000年前,居然变成了危害巨大的“千年虫”,这当然是Grace博士始料不及的事。
发明了世界上第一个编译器(Compiler)
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.”
这句话后来成为她一生中的至理名言之一。
COBOL语言
当初在写世界上第一个编译器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语言对计算机应用发展所起的作用。
COBOL是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言,是一种功能很强而又极为冗长的语言。适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境。
上图是Grace颁奖给Donald E. Knuth的照片。前者是开创计算机程序设计语言的早期领袖之一,后者是计算机程序算法的当代领袖之一。这是一张难得的合影。
海军少将
她不但是计算机大师,还是海军少将
1966年,Grace Hopper满60岁。她当时的官阶是海军中校,而海军中校60岁就该退休了。退休的那一天,Grace说这是她一生中最悲伤的一天,因为别人已经告诉她:她太老了。但很快,海军发现离了Grace还不行——有个工资管理程序重写了823次还是不能正常运行。因此,她刚从海军退休半年就又被海军召回重新服役,负责海军系统计算机高级语言的标准化和普及工作,并且一干就是20年,直到1986年8月14日才正式最后退休。这期间她的军衔一再提升,在1985年11月,Grace成为了海军少将,她是美国第一个到达这个官阶的女性。由于这超过了美国法律规定的军官服役年龄,国会还通过了专门的法律使对 Grace的任命合法化。在波士顿的“宪法号”战舰上向Grace授予“国防部优秀服役勋章”(Defense Distinguished Service Medal)并为她退休举行的隆重仪式上,Grace在致词中自豪地说她是WAVES成员中最后一个离开岗位的人:她40岁时就被告知她太老了不宜继续在部队中工作,而她却仍然穿着制服又干了整整40年!
晚年一直在致力于推动计算机的发展
Grace退休的Party上来了2000多人,有她认识的,也有她不认识的。在正式退休之后,她又跟Digital公司签约,Digital公司 聘请她代表他们演讲、推销他们公司的产品。Digital公司当时主要的产品是Minicomputer。事实上,在1986年时PC已经出现,那时叫做Microcomputer。在海军里,Grace Hopper是极力推行使用PC的人之一。她在这方面也有一句名言。她说,在古老的时候,人们都是用牛和马来拉东西,后来人类社会发展得越来越蓬勃,东西越来越重,但是人们并没有使用更大更壮的物种来搬运东西。事实上,人们是用更多的牛和马来做这些更加粗重的工作。她用这个比喻来说,计算机不应该越做越 大,而应该用小型的、大量的计算机一起来做要做的事情。(原来Grace在20多年前就提出了并行计算?)
Grace的墓碑
Grace Hopper逝世于1992年1月1日凌晨,在参加了新年Party 之后,准确时间不明。她生前的一个心愿是活到1999年12月31日的晚上,因为她说她想参加那一场Party。显然,Grace是个很喜欢Party的人。
Amazing 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的名言太多,所以小编还是摘取了一些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?”
她的语录还是原汁原味的比较好,所以小编并未翻译。
写在最后:
她是计算机界崇拜的软件大师,事实上,她对计算机领域的贡献不只是COBOL语言,Bug和千年虫,更重要的是,她开创了程序语言的编译时代,为现代编程语言提供了出行,解放了程序员的生产力,为计算机软件打下了高速发展的理论基础和实例模型。请记住计算机软件第一夫人Grace Hopper,美国海军少将,Bug发现者,编译语言创始人和现代高级程序设计语言的奠基人。