人类的首次登月,是真的靠编出来的

人类的首次登月,是真的靠编出来的

今年是人类登月50周年的纪念日, 1969年7月20日下午4时17分42秒,美国宇航员阿姆斯特朗将左脚小心翼翼地踏上了月球表面,这是人类第一次踏上月球。 虽然过去了半个世纪,但阿姆斯特朗那句“我的一小步,人类的一大步”的经典独白,仍然深深地刻在每个人的心里。

现在的我们,其实很难想象,50年前的科学技术可以把人类送上月球,但是当时的人类,真的是做到了。而且在那个时代,程序员们起到了极大的作用。

现在的我们常常把软件设计叫做“编程序”,其实,阿波罗计划的导航软件真的是“编织”出来的。 导航软件的重要性是毫无疑问的。尤其是当飞船运行到月球背面时,无法和地球直接通信,飞船的导航全靠软件指挥。所以,这样的软件容不得一个错误。除了对软件本身正确性的要求之外,软件存储介质也是至关重要的。要是存储介质在太空中受到损害,后果也是不堪设想的。

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

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

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

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

整个软件系统的大小大约是60万位。对于软件的大小来说,这个数字在今天已经是微不足道了。但是,把这样大小的数据用手工输入,而且不能有错,还是很不容易的。所以,整个软件输入的过程都经历了严格的测试。幸运的是,当时已经有自动软件测试的概念了。 最终,这个编织出来的程序成功地把宇航员带到了月球,并且安全的带回了家。