首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >创造了程序语言的女学霸,生前定义程序bug,死后引发千年虫危机

创造了程序语言的女学霸,生前定义程序bug,死后引发千年虫危机

作者头像
IT派
发布2018-03-28 18:26:04
1.2K0
发布2018-03-28 18:26:04
举报
文章被收录于专栏:IT派IT派

如果你觉得好的话,不妨分享到朋友圈。

来源:科学网 作者:张磊

计算机刚出现的1947年,一位女程序员所用的电脑发生了故障。经排查后发现,原来是某个继电器内飞进了一只蛾子,导致了整个计算机无法运作。眼疾手快的她便用镊子小心地将飞蛾夹出,并把它贴在记录本中标上“First actual case of bug being found”。

对,就是这只小虫而她对bug的诡异称呼,后来竟变成了计算机行业的专业术语。而除虫“debug”也成了排除程序故障的代名词。这位发明世界上第一个“bug”的女程序员,其实就是IT界的祖师娘格蕾丝·赫柏。

她是耶鲁大学第一位数学女博士,世界上第三位程序员,与图灵、乔布斯和盖茨等一同被评为“IT界十大最有远见的人才”。

格蕾丝·赫柏从小就是个不折不扣的假小子,经常带着弟弟妹妹上蹦下窜,爬树、游泳、划船。多亏了母亲的正确教导,格蕾丝才把自己的好奇心使对了地方。母亲虽是家庭主妇,但是却对数学特别感兴趣,是位业余数学家。所以在母亲的指导下,格蕾丝的数学和物理等工科成绩都异常出色。考进大学后,她便一路开挂地同时获得数学、物理双学位和美国优等生的荣誉。当时才本科毕业的格蕾丝,就已被母校留任聘为教师。

1934年,她也成了耶鲁大学历史上第一位数学女博士。据统计,1862年到1934年间,全美总共才发出了1279个数学博士学位,平均每年不到18个。而且在那个年代的大环境下,以女性身份获得耶鲁数学博士学位的格蕾丝完全可以用不可思议来形容。之后,她也将生活重心转向教学。

差不多40岁的格蕾丝,都还未曾与计算机有过联系。不过二战的打响,也成了格蕾丝人生最重要的转折。珍珠港事件后,她就铁了心要加入美国海军为国家出力。在最后的考试中,她更是以第一名的成绩完虐跟她同批的学员,让所有人都刮目相看。

霍华德·艾肯与他的第一台计算机

格蕾丝之后也被派到了哈佛大学,有幸成为霍华德·艾肯教授(Howard Aiken)的助手。霍华德·艾肯是世界上第一台数字计算机Mark-Ⅰ的总设计师及制造者。这个重达4吨的庞然大物也被誉为“现代电脑时代的开端”。

格蕾丝坐在艾肯教授(前排中间)旁边,后面是Mark计算机

在这之前,已有两位男性在Mark-Ⅰ上写过程序。格蕾丝也成了世界上第一台计算机上的第三位程序员(虽然程序员这个称呼是在多年以后才出现)

不过一开始,这台MARK-Ⅰ可没少把格蕾丝搞疯。

当时这个大家伙虽然能被用于计算火箭弹道、低空爆炸信管和地雷等的破解方法,以及解决一系列工程的数学问题。但是其本身却远没有现代的计算机那么“智能”,都需要格蕾丝手把手教(编程)它才会计算。如果说艾肯赋予了MARK-Ⅰ生命,那么格蕾丝的程序则像给机器带来思维一样,让它能真正地“动起来”。

然而刚接触计算机的格蕾丝也几乎等同一张白纸。

所以她需要沿着艾肯制造MARK-Ⅰ的思路,首先将计算机中每一个复杂而精细的硬件了解个透彻,才能运用自己的数学才能编写程序。这几乎等同于先学会造电脑,才有机会学编程。所以在刚到哈佛的那段时间,格蕾丝每天都会抓住电机维修工程师好“偷师学艺”。

重达4吨的Mark-Ⅰ

就是因为对机器十分熟悉,才使她能在故障的电脑中很快地找到那只“bug”(小飞蛾)。当时MARK可是包含3500个继电器、2300个存储计数器和成千上万条后面布线的继电器终端。

Mark-Ⅰ背后复杂的布线

在计算机诞生伊始,所有的程序员编程都只能用机器语言,没有任何组合语言及程序语言的存在。所谓机器语言,简单来说就是机器硬件本身能够识别的语言,只有0和1。所以那时的程序员都要以“0111001011”的机器码形式,先在纸上打孔,再送到机器里读取。

老式的打孔纸带

在帮Mark系列计算机编程时,格蕾丝就已经感受到被机器语言支配的恐惧。

所以她才想设计一种程序,能让大家直接用人类看得懂的语言编程,然后这个程序便能把语言翻译成机器码,交给电脑执行。这就是我们现在说的编译器(Compiler)的原理。

只是在那个年代,大家都对她的这个“想法”表示怀疑。

因为在所有人眼里计算机就像计算器一样,只能处理数字,是看不懂人类语言的。即使得不到认可,格蕾丝还是头脑清晰地决定将想法变成行动,到处演讲筹集资金。因为她认为,编程就应该是高水平的脑力劳动,只有不断地将繁杂的工作交给电脑完成,才能提高人类脑力的应用。

1952年,她就率先设计出了世界上第一个编译程序A-0。

为了向大家证明计算机也能看得懂人类的语言。格蕾丝还特意开发了三个版本,包括英文、德文、法文语版,甩当初不看好自己的人一脸。之后她再用了5年时间,从这第一个编译器发展到一整套完整的程序语言FLOW-MATIC。这也是世界上第一个运用词语的计算机语言。从那以后,编程工作才确定了往化繁为简的方向进发。如果没有格蕾丝,对着满屏的0和1,程序员的秃头率或许还要更高。

从FLOW语言中看到了未来,美国政府立马就给了格蕾丝一个新的任务。就在FLOW语言面世后的第二年,格蕾丝带领着团队又成功地研制出了第一个商用编程语言COBOL。它被公认的优点便是是语法和英语十分接近,可以让不懂电脑的人也能看懂程序。

格蕾丝也被称为COBOL之母

即使是2000年出现了史上最大的bug“千年虫”*,也未能撼动COBOL的地位。*注:“千年虫”,是因为50年代计算机存储空间非常有限,为了节省内存格蕾丝只采用了6位数来表示日期,如DD/MM/YY表示日、月、年。但是从20世纪进入21世纪的2000年,系统就无法识别YY(00)表示的是1900还是2000,所以计算机里的时间全乱了套,对世界的影响巨大,也称千年虫问题,缩写“Y2K”。据计算机世界(Computerworld)统计,“千年虫事件”后的2006年到2012年仍有超过60%的企业用COBOL处理数据。

甚至还有人预测说,即使到了下个世纪,COBOL仍有可能在老骥伏枥。所以在IT界也有个笑话,一个COBOL程序员因解决了千年虫问题挣了大钱,以至于他可以用钱将自己冷冻起来。未来的一天他突然被人复活,睁开眼一瞬间他就被告知:“现在是9999年,而你懂COBOL语言”。

到了1966年,格蕾丝也到了60岁该退休了。由于海军还是有大量无法处理的工程管理程序亟待解决。于是格蕾丝才刚休息了半年,就又被紧急地召回,为了使格蕾丝能名正言顺地回来,军方还特意修改了原来的规章,将退休年龄延长至65岁。

2016年格蕾丝被追授总统自由勋章

而原本只打算留5年的格蕾丝,也因工程需要在岗位上一待就是20年。这期间她的军衔也一路被提升,1985年她也达到了女性罕见的成就,成为海军少将。

格蕾丝号

为了表彰她这么多年来的贡献,美国海军将一艘驱逐舰命名为“格蕾丝号”和将加利福尼亚海军数据处理中心改名为“赫柏服务中心”。到了1986年,格蕾丝才以80岁高龄从海军中光荣退休。

在欢送会上,格蕾丝非常自豪地说。“当初我40岁时就被告诉你太老了不能参军,但是身上这套制服我一穿上就又是一个40年”。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT派 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档