登月50年 | 让人类登月的程序,真的是纺织工“编织”出来的

阿波罗项目组雇佣了很多有经验的纺织女工,采用一种类似纺车的设备,再加上一种特别的毛衣针,一位一位地把整个导航软件织进了存储器中。

编者按:

1969年7月20日下午4时17分42秒,美国宇航员阿姆斯特朗将左脚小心翼翼地踏上了月球表面,这是人类第一次踏上月球。

如今时间已经过去了50年,但阿姆斯特朗那句“我的一小步,人类的一大步”的经典独白,仍然深深地刻在每个人的心里。

腾讯科技联合知乎发起“登月50年”系列策划,聚焦人类探索月球的点点滴滴,一起回顾人类和月球的往事。

今天来说阿波罗计划中的一个小细节,也许可以帮助你了解以当时的技术要把人送上月球的难度,作者:知乎答主Mandelbrot。

我们常常把软件设计叫做“编程序”,其实,阿波罗计划的导航软件真的是“编织”出来的。

导航软件的重要性是毫无疑问的。尤其是当飞船运行到月球背面时,无法和地球直接通信,飞船的导航全靠软件指挥。所以,这样的软件容不得一个错误。除了对软件本身正确性的要求之外,软件存储介质也是至关重要的。要是存储介质在太空中受到损害,后果也是不堪设想的。

在当时,比较流行的存储介质是打孔纸带,就是在纸带上不同位置用有没有打孔表示0和1。但是,载人航天工程显然不能把性命攸关的安全性寄托在弱不禁风的纸带上面。至于磁带,它依赖于过于巨大的设备,而且在太空环境下可靠性也得不到保障。于是,最后的选择是磁环和电缆。

存储器实际上是一个有很多磁环构成的阵列,电缆从阵列中穿过,以二进制机器码(0和1)的方式保存软件信息。下图就是阿波罗导航系统中用于测试的存储器。你可以清楚地看到红色的磁环和绿色的导线。

磁环的作用是改变导线上电压的状态。如果导线穿过磁环,导线上的电压就会发生改变。系统检测到这种改变后,就把这条导线上的数据解释为1。

如果导线没有穿过磁环,那么导线上的电压不发生改变,系统就把这条线上的数据解释为0。

可以想象,软件写入存储器的过程实际上和织布差不多。所以,项目组雇佣了很多有经验的纺织女工,采用一种类似纺车的设备,再加上一种特别的毛衣针,一位一位地把整个软件织进了下图中这个存储器。

整个软件系统的大小大约是60万位。对于软件的大小来说,这个数字在今天已经是微不足道了。但是,把这样大小的数据用手工输入,而且不能有错,还是很不容易的。所以,整个软件输入的过程都经历了严格的测试。幸运的是,当时已经有自动软件测试的概念了。

最终,这个编织出来的程序成功地把宇航员带到了月球,并且安全的带回了家。

往期回顾

登月50年 | 人类40多年不再登陆月球,背后是什么阴谋?

登月50年 | “阿波罗登月”真的是一场彻头彻尾的骗局?

登月50年 | 阿波罗11号险坠毁!是她的代码让人类成功登月

登月50年 | 为何前苏联没有能力将人类送往月球?

登月50年 | 在第一次登月前,这三位宇航员被活活烧死

登月50年|人类用史上最大火箭登月 50年后它仍是史上最大

登月50年 | 别误会,那个经典的月球脚印不是阿姆斯特朗的

登月50年 | 爆炸!阿波罗13号差点把宇航员永远留在月球