她说,要有计算机语言,于是有了程序员

时间:2019-09-23 08:40:01 来源:叶子猪 当前位置:光闪闪 > 动漫 > 手机阅读

话说前阵子有个谷歌的码工在公司论坛 “畅所欲言”,从生理和心理的角度阐释 “为什么女性不适合当程序员”。虽然这名老兄惹了众怒,最后被公司开除,这种看法的确在某种程度上反应了很多人的观点,那就是,科技行业是一个男性主宰的领域。


我想跟这位老哥讲的是:你以为自己牛气冲天,其实,要是没有女程序员,你可能现在还蹲在小黑屋里苦哈哈地读着打孔纸带呢。今天我们要讲的,就是将程序员脱离机器语言苦海的这名女程序员,计算机领域的奠基人之一,被誉为软件行业祖奶奶的格蕾丝·霍普(Grace Hopper)。



格蕾丝霍普


霍普生于纽约一个普通家庭,小时候除了好奇心比别的孩子强点,学习成绩比别人好点,她并没有特别突出的地方。唯一可圈可点的事迹也就是,为了搞清楚钟表构造,一口气拆了家里七个钟。


17 岁那年,霍普考上了美国女校七姐妹之一,着名的 Vassar College。读书,毕业,继续深造,在耶鲁一举拿下了数学物理硕士以及数学博士以后,她回到 Vassar 教书,并跟一个纽约大学的文学教授结婚。如果不出意外的话, 她的人生大概跟同时代很多女性一样,不过是教书育人,结婚生子平平淡淡一辈子了。


? Vassar 时期的霍普??


时事造英雄,二战的爆发打破了平静的生活。霍普做出了让亲朋好友跌破眼镜的一个决定 ——她要参军!


可是这个效仿她曾任海军将领的曾祖父的心愿,并不是那么容易实现的。她 ——


年纪太大:当时已经 34 岁;

体重太轻:比海军的最低体重标准 120 磅轻了整整 15 磅;

学历太高:大家普遍认为数学教授的工作贡献更大,而且当时美国军队里,女性是无法担任军官的。


? 穿制服的霍普??


但是,霍普骨子里是一个非常执着的人。三年后,拜罗斯福所赐,霍普以 37 岁高龄,终于破格入伍,加入了海军预备役。罗斯福签署的这项法案便是女性从军法案(Women's Armed Services Integration Act),该法案允许女性在战时参军,并加入一些在和平时期只能由男性担任的岗位。


通过预备役的新兵训练以后,霍普作为唯一一名女性加入了哈佛大学实验室的一个十人小组,参与维护和操作人类历史上最早的计算机之一,马克一号( Harvard Mark I)。这时候,霍普并不知道,这不仅开启了她自己的软工生涯,更为日后软件工程能成为一个行业铺上了第一块砖。


Mark I


马克一号长度约 51 英尺。这个庞然大物是当时科技的顶峰,一个小时就可以完成过去需要一个月才能做完的运算。


由于霍普的高学历,海军一开始就让她担任了整个研究小组的二把手。这让马克一号的发明制造者霍华德·艾肯(?Howard H. Aiken)非常的不爽。而霍普认定的只有一条路:用实力说话。


虽然霍普是数学博士,隔行如隔山,她对计算机一无所知。作为新兴事物,马克一号太过庞大,复杂。如果是今天,自然可以去亚马逊买本教程,或者去谷歌搜索在线教程,实在不行还有网上论坛找热心人答疑。


可是这些,偏偏都是建立在霍普之后的成果之上的。那个年代,整个世界上会使用马克一号的只有寥寥数人,其中一个还是处处看霍普不顺眼的艾肯。这些没能难倒女学霸霍普,她在短时间内通过自学掌握了马克一号的用法。霍普说:“我发现马克没有使用说明书,就自己写了一本。”


工作中的霍普


最早马克的用途是计算打印各种弹道公式。经过一段时间的使用,小组发现,马克的计算功能远远不止这种简单机械的工作。只要能够人为设计计算机操作,给马克输入一系列指令,它就可以胜任几乎任何种类的计算工作。


人类给计算机下的操作指令日后被叫做程序(program),而给计算机写指令的人就叫程序员(programmer)。霍普是小组里第三个可以给马克下工作指令的人,当之无愧我们码工的祖奶奶。


写程序是霍普的长项,她极擅长把现实问题抽象成数学问题,再把数学问题翻译成马克能懂的一条条指令。


子程序(Subroutine)也是霍普率先使用的——把经常用到的小功能模块化,做成子程序,使用时像搭积木一样拿来就能用。码工如今的道路这么宽,必须要感谢霍普当年这么一块砖一块砖地铺出了最初的小路。


在霍普的带领下,十人小组日以继夜的对马克进行维护操作。马克在二战中担任了大量的计算,其中最着名的操作是计算分析了原子弹的爆炸模型。


有一次,马克小组在真空管中发现了一只死蛾子,导致计算机不能正常工作。他们的日常维护包括找到影响计算机工作的虫子,这就是日后程序员捉虫(debug)这个说法的由来。


世界上第一个 Bug Report


霍普在马克工作期间也结识了几个好朋友,其中之一是负责马克硬件维修的理查德·布洛赫(Richard Bloch),俩人虽然性格迥异,却成了非常要好的朋友。


唯一的矛盾点在于布洛赫经常半夜维修更改 马克的设置,然后霍普第二天早上上班的时候,就会发现头天运行得好好的程序不工作了。


每当这时霍普都会破口大骂布洛赫,据布洛赫回忆,霍普用词之粗俗简直赶上航海多年的老水手。这个,大概是 IT 界硬工软工的第一次大规模冲突吧。

正当霍普在马克小组风生水起之际,二战结束了,她的事业重新陷入迷茫之中。哈佛二话不说给了艾肯一个教授的职位,但是告诉霍普,哈佛不会聘请女性担任教职工作。


而随着二战结束,战时女性从军法案作废,海军跟她的合同也到期了。这时候的霍普已经四十多岁,她为了计算机这个在当时还属于前沿实验性的学科,婉言谢绝了回到原来学校继续教职的邀请,婚姻也早就因为常年分居破裂,她的未来将何去何从?


在二战期间高强度工作期间,霍普一直靠酒精减压。现在酒精成了她逃避现实的工具,酒喝得越来越多,有时候连上班都是醉醺醺的,甚至曾经因为醉酒闹事被警察逮捕。眼看着一个不世出的奇才就要陨落了。


这时候还是她在哈佛的同事们伸手拉了她一把。其中一个同事在信里写到,霍普这人,哪怕只有 20% 的时间工作,她对计算机的贡献也会远超旁人。


哈佛时期的霍普


1949 年,霍普离开哈佛,加入了第一台电子计算机 ENIAC 发明人莫契利(John Mauchly)和埃克特(J Presper Eckert )创办的公司,开始领导另一场计算机的革命。


那个时候,和计算机交流都是用机器语言。程序员要靠打孔的卡片或者纸带用二进制 “0” 和 “1” 构成的机器语言和计算机进行对话。由于每一台计算机都是专门特制的,不同计算机的机器语言并不相通。程序员每换一台机器,就要重新学习一遍该机器所使用的特殊机器语言。


霍普提出,要设计一种高级的计算机语言,用英语跟计算机交流,这样会大大方便程序员,提高写程序的速度和效率。而且这样一个程序可以应用在多个不同的计算机上,实现通用。


她的想法不出意外地不被当时的计算机主流人士所接受。他们认为,计算机造价这么昂贵,体积这么巨大,需要特殊的空调环境恒温除尘,基本上除了几个财大气粗的公司,根本没有人可以用得起。为这么一个昂贵的设备设计一个人人都能使用的计算机语言完全没有意义——

难道计算机可以普及到千家万户吗?

可以吗?

可以吗?



霍普的这个提议被生生地搁置了三年,最后她决定不理这些反对意见自己直接动手。她的名言是:先斩后奏(It's easier to ask forgiveness than it is to get permission)。本着这个原则,霍普开发了历史上第一个计算机语言编译器 A-0。


编译器不仅仅把程序员从晦涩难懂的二进制机器语言中解放出来,它同时也把软件和硬件分离。编程时候用统一的跟英语近似的编程语言,编译器会根据不同的机器把程序翻译成机器能懂的二进制语言。程序可以在许多不同的机器上运行——这正是现代软件行业的基础。

?

1959年,大家在霍普发明的计算机语言 Flow-Matic 的基础上开发了一种通用的高级商用编程语言 —— COBOL,霍普则被称之为 COBOL 的祖奶奶。在极盛时期,全世界超过 80% 的程序都是用 COBOL 写的。直到今天,COBOL 语言还在财经界广泛使用。


霍普和COBOL


当然,COBOL 因为缺乏结构性,过于话痨的语法没少受到后来科班计算机科学家的批评。甚至计算机历史上最大的 bug 也是霍普埋的雷。


早年间,硬件极其昂贵,为了节省内存空间,霍普采用 6 位数字来储存日期,即年、月、日各两位。COBOL 以及之后不少语言都照抄了学霸的标准答案。


随着公元 2000 年的接近,大家突然发现,如果按照这个数据格式,系统却无法自动辨识 00/01/01 究竟代表 1900 年的 1 月 1 日,还是 2000 年的 1 月 1 日,所有的软硬件都可能因为日期的混淆而产生资料流失、系统死机、程序紊乱、控制失灵等问题,如此所造成的损失以及灾难是无法估计想像的。这就是着名的 “千年虫”。为了纠正这个错误,人类最后花费了将近 3000 亿美元。


1986 年,David Letterman 在自己的晚间节目请到了霍普。霍普当时已经 80 岁,但是说话干脆利索而且诙谐幽默,连习惯于开嘉宾玩笑的 Letterman 也是一脸毕恭毕敬,说:“能请到这位嘉宾是我们节目的荣幸”。

?

领略一下 “女王” 接受采访的画风:


上一篇趣图:猪年适合学什么语言?

下一篇夏季,觉得穿T恤太素?这件T恤颠覆你!

相关文章:

动漫本月排行

动漫精选