在上个世纪60年代,程序员可没有今日这么风光,连“程序猿”都比不上,更别提“软件工程师”这样响亮的头衔。 和今日科技圈少有的女码农一样,当年的玛格丽特就是一个不折不扣的异类。 虽然名不正言不顺,但当年程序员们的工作可比现在复杂上几十倍。 在那个年代,并不是敲敲键盘就能写出代码那么简单。玛格丽特首先需要将代码用打字机写到纸上,连Debug(排错)的功能都只能靠脑力检查。在确认无误后,这些信息才会交给一群精通针线活的“小老太太”(Little Old Ladies)。 她们会像绣花一样用磁环把信息编到内存里,当铜线穿过磁芯代表1,绕过磁芯则代表0。 然而这些都还不是最难的。那个年代正是程序的“开荒期”,软件工程也不是一个拿捏得十分准确的领域,很多东西还未统一。所以要想为一个软件编程,至少要学好几套汇编语言。 而刚进去的玛格丽特更像一块白纸,还需要面对各种棘手的程序,任谁都得崩溃。但也正是这些五花八门的难题,激起了对编程的无限兴趣。 随着日渐丰富的编程经验,玛格丽特也慢慢成了系统编程的专家。而另一边肯尼迪也在1961年发起的阿波罗登月计划,这就成了玛格丽特人生重要的转折点。 那时的她也加入到了阿波罗计划,为登月飞船写程序。在阿波罗计划的最初,好像并没有“软件”什么事。就连在原始档案列出的阿波罗任务的各项需求中,竟从头到尾都没有提到软件这个词,更别提预算什么的。 之后随着阿波罗项目逐渐启动,NASA才意识到软件的重要,逐渐把软件团队扩大到400人。在1965年,玛格丽特也成了整个软件编程部的部长。 随着责任变重,玛格丽特的压力也越来越大。有一次她甚至还做梦见到,新闻头条是阿波罗坠毁,最后追查下来竟是自己的程序有误。当时她从梦中惊醒,就连夜跑回实验室,竟然还真的在程序中发现了一个小错误并改正。 在那段日子里她的女儿劳伦也出生了,所以特别忙的时候玛格丽特还不得不将女儿带去实验室。她在工作的时候,小女儿就在旁边玩耍,累了就直接在地板睡觉。 身边的人都对这位“工作狂妈妈”十分不理解,常问她“你怎么忍心这么不顾自己的孩子”。虽然心有愧疚,但她还是对神秘的程序十分痴迷,不能自拔。 一天,女儿劳伦在指令舱模拟器中玩耍。当她在键盘上乱按时,一条错误的信息突然弹出。原因是她不小心启动了一个叫P01的预运行程序,导致原本还在飞行状态的模拟器瞬间崩溃。 看到这种情况,玛格丽特就提议在整个系统中多加一段代码,防止类似的状况发生。如果在飞行过程中,宇航员操作出了什么差池,还有挽回的地步。 但是当时所有人都觉得宇航员是受过严格训练,操作是完美的,“绝对不可能出错”。再加上当年的计算机存储空间和运算能力十分有限,决策者也不想添加任何“累赘”的部分。 所以玛格丽特也无可奈何,只能在操作系统中添加了一个备注“不要在飞行中选择P01模式”。 但是可怕的事情,还是发生了。1968年12月21日,人类首次绕月飞行的阿波罗8号发射。 但就在飞行的第5天,宇航员Jim Lovell还是在无意间按下了P01模式。这个模式的启动后,所有导航数据都会被清空。 这样下去,飞船将无法把宇航员送回地球,在太空中迷路是分分钟的事。知道要出大事了,决策者也十万火急地打电话到玛格丽特那,让她想一个补救的办法。 于是,玛格丽特也马上带着MIT的一群程序员,连夜奋战了9个小时,才设计出了一个新的计划。当时这份新的导航数据上传后,大家才松了一口气。 一切又回到正常的轨道,阿波罗8号也顺利载着宇航员返航。这次事件后,决策者与玛格丽特都更明显地感受到软件对登月计划的重要性。 软件几乎成了美国要赢得太空竞赛的重要筹码,玛格丽特加班的频率也越来越高,时间也越来越长。 但玛格丽特最大的挑战还在后面。就在阿波罗11号飞船即将登陆月球前的几分钟,就是这么一个关键的时刻,危机还是发生了。 登月时期,人类能用的电脑都是超小内存、计算速度极度缓慢的。系统能永久保存的不过1.2万字节,而临时存储的空间就更小了,只有1024字节。 用玛格丽特的话来说就是“今天看起来这简直不可思议”。所以就在阿波罗11号离月球不远处时,电脑也因过度运转,大量地弹出错误信息,系统几近崩溃。
|