当前位置: 首页 > 科技观察

一位女程序员用代码将人类从地球送上月球

时间:2023-03-16 17:23:52 科技观察

没有她,就没有阿姆斯特朗的一小步,人类的一大步。玛格丽特·汉密尔顿无意提出现代软件概念,也无意将人送上月球。要知道1960年代的社会并不鼓励女性从事高科技行业。当时,24岁的玛格丽特刚从数学系毕业。她打算存三年钱供丈夫考上哈佛法学院,然后再读数学研究生。但阿波罗登月计划就是在那个时候启动的。玛格丽特在实验室领导了一项史诗般的工程壮举,这将改变人类和技术的未来。在1960年代成为一名职业母亲非常不寻常,而玛格丽特是一名为宇宙飞船编写代码的程序员。在周末或平常的晚上,玛格丽特会带着女儿劳伦来实验室。在俯瞰查尔斯河的办公室里,四岁的劳伦在地板上睡得很香,而玛格丽特则在编写代码,这些代码最终将被添加到阿波罗控制模块的计算机中。玛格丽特回忆说,“他们对我说,你怎么能离开你的女儿呢?”。但她喜欢这份工作的神秘和新奇,也喜欢同事之间的情谊——下班后,他们会在麻省理工学院的员工俱乐部一起喝点酒,讲一些只有技术极客才能听懂的笑话。旁人一头雾水,但在实验室里,她说:“我是兄弟之一。”当年的科技界和工程界也是由“兄弟”主宰。和当今科技圈为数不多的女码农一样,当时的玛格丽特就像一个不折不扣的外星人。今天的软件开发人员应该对这个“男孩俱乐部”的创始人之一是女性感到惊讶。或许他们也应该停下来想想,这个《广告狂人》时代的性别不平等是如何持续到今天的。玛格丽特的职业生涯走上了正轨,软件世界——多亏了肯尼迪1961年的阿波罗登月计划——正处于彻底变革的边缘。玛格丽特在麻省理工学院的仪器实验室工作,在那里她和她的同事为世界上第一台便携式计算机编写了代码,并创立了计算机编程的核心思想。玛格丽特成为系统编程专家,并在许多重要的技术辩论中获得认可。“刚开始学编程的时候,没人知道我们在干什么,我们就像在美国的蛮荒西部,没有这门课,也没有教授教。”玛格丽特说。此时距离微软的出现还有10年,而距离MarcAndreessen(这家伙是世界上第一个开发浏览器的人)发现软件正在“吞噬世界”还有将近50年。在阿波罗计划的早期,人们并没有过多地考虑软件。记录与阿波罗计划相关的工程要求的文件甚至没有提到“软件”一词??,麻省理工学院宇航学教授DavidMindell在《数字阿波罗》(数字阿波罗)中写道。“软件没有包含在计划中,因此不在预算中”。不管怎样,一开始,软件并没有受到重视。但随着阿波罗计划的进展,软件在这项任务中的重要性变得显而易见。1965年,玛格丽特开始负责“阿波罗”计算机的飞行软件。对于玛格丽特来说,这是一个激动人心的时刻,全美国都指望着她的工作成果。但有时压力会让她彻夜难眠。有一次,在一次深夜聚会后,玛格丽特赶回实验室修复一段代码,她突然想到哪里出了问题。“我总是幻想报纸上的头条新闻询问错误是如何发生的,并最终指向我。”图为1962年4月19日,玛格丽特和她以前的同事。玛格丽特正在林肯实验室的第一台AN/FSQ-7计算机上开发软件,一种雷达监控软件,用于探测敌机。图片来源:MargaretHamilton  图为1962年4月19日,Margaret和她以前的同事。Margaret在林肯实验室的第一台AN/FSQ-7计算机上开发软件,一种雷达监控软件,用于探测敌机。图片来源:MargaretHamilton软件已成为美国登月竞赛的重要筹码。1968年,已有400多人参与了阿波罗软件的开发。当然,最终证明软件对世界的贡献远不止于此。在玛格丽特和她的同事们为阿波罗飞船编程时,他们正在孵化一个未来价值4000亿美元的产业。对玛格丽特来说,编程就像在模仿阿波罗登月工作的霍尼韦尔大型机上一夜之间批量完成一堆穿孔卡片。玛格丽特回忆说,“我们必须在飞船起飞前模拟所有可能的场景。”代码完成后,将被发送到附近的雷神工厂。在阿波罗计划中有一群被称为“小老太太”的“针线匠”女性,她们将铜线穿过磁环(1穿过磁环,0绕磁环)。没有RAM,也没有磁盘驱动器;在阿波罗号上,记忆是固定的,几乎坚不可摧。阿波罗号载具搭载了两台几乎相同的机器:一台用于登月舱,即登陆月球的鹰号,以及用于运送宇航员往返地球的操作舱。与其他笨重的计算机不同,这些70磅重的机器是便携式的。它由MIT工程师HalLaning和Margaret的老板DickBatton设计,是第一台使用集成电路代替晶体管的重要计算机。正如曼德尔在他的书中所写,这是第一个由人类操作但采用计算机控制的自动驾驶技术的机载导航系统,这是当今喷气客机标准导航系统的老前辈。该系统可以安全地保存超过12,000个字节——即雷神公司女孩穿的铜线环——以及1,024个字节的临时存储空间。麻省理工学院仪器实验室负责编写登月舱代码的唐·艾尔斯(DonEyles)说:“这是第一次将重要的计算机移动到航天器上,它被赋予了很大的责任。”时间。他说:“我们已经证明这是可能的。我们用今天看起来不可思议的东西做到了这一点,内存很小,计算速度非常慢。”没有这一切,尼尔·阿姆斯特朗(NeilArmstrong)不可能登上月球;如果没有玛格丽特、艾尔斯和麻省理工学院工程师编写的软件,计算机在这里将毫无用处。这一点在1969年6月20日表现得淋漓尽致。就在阿波罗11号飞船即将登陆月球的前几分钟,就在这样一个关键时刻,阿波罗计算机突然开始显示错误信息。而也正是接下来发生的事情,让玛格丽特获得了认可,也为团队成功化解了危机。大量的错误信息是由于计算机过度工作,除了控制模块降落在月球表面所需的过程之外,还执行了一系列不必要的计算。在休斯敦,工程师们知道,由于阿波罗任务的异步处理特性,计算机将专注于手头的任务——将鹰号送上月球。Margaret说,当软件意识到没有足够的空间来运行一个进程时,它会进行自己的错误检查,然后专注于权重最高的工作。“不可能”一天,劳伦摆弄DSKY,这是一款用于麻省理工学院控制舱模拟器的显示器和键盘一体机。正当她在键盘上摸索的时候,弹出了一条错误信息。劳伦不知何故激活了一个名为P01的预运行程序,原本可以飞行的模拟器坠毁了。虽然宇航员一般不会犯这样的错误,但玛格丽特还是想加一段代码来防止这种情况的发生。这个提议被美国宇航局拒绝了,“他们一遍又一遍地告诉我,宇航员不能犯任何错误,他们被训练得近乎完美,”玛格丽特说。相反,她添加了一个程序说明,??所有NASA工程师和宇航员都可以看到:“飞行期间不要按P01。”“每个人都说,‘那永远不会发生,’”她回忆道。但它确实发生了。1968年圣诞节前后,进入阿波罗8号飞行的第五天,宇航员吉姆洛弗尔在飞行途中意外启动了程序P01。当电话从休斯敦打来时,玛格丽特正在仪器实验室二楼的会议室里。启动P01程序导致这里的导航数据全部清空,阿波罗计算机无法计算返回地球的方式。玛格丽特和麻省理工学院的程序员需要想出一个补救办法,必须是没有错误或遗漏的最佳解决方案。在花了9个小时仔细研究了摆在他们面前的8英寸厚的节目单后,他们有了一个计划。休斯顿需要上传一个新的导航数据,然后一切都会很顺利。多亏了玛格丽特和淘气的劳伦,阿波罗号宇航员才得以返回地球。还要感谢玛格丽特和她开创的工作,这些工作让人类了解了它在太空和地面上都能做些什么。而软件工程这一由玛格丽特首创的概念,从登月到现在几乎进入了人类生活的方方面面。到1970年代,玛格丽特已经超出了她??之前在NASA和阿波罗计划中的学习。她后来创立并领导了几家软件公司。今天,她的公司HamiltonTechnologies距离她开始职业生涯的地方——麻省理工学院只有几个街区,代码革命仍在发生,星星仍在仰望。