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

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

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

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

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

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

登月50年|当时登月程序真的是“编制”出来的

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

登月50年|当时登月程序真的是“编制”出来的

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

登月50年|当时登月程序真的是“编制”出来的

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

登月50年|当时登月程序真的是“编制”出来的

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

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

来源:腾讯科技

本站内容未经许可,禁止任何网站及个人进行转载。