1969年7月20日下午4時17分42秒,美國宇航員阿姆斯特朗將左腳小心翼翼地踏上了月球表面,這是人類第一次踏上月球。

如今時間已經過去了50年,但阿姆斯特朗那句“我的一小步,人類的一大步”的經典獨白,仍然深深地刻在每個人的心里。

我們常常把軟件設計叫做“編程序”,其實,阿波羅計劃的導航軟件真的是“編織”出來的。

導航軟件的重要性是毫無疑問的。尤其是當飛船運行到月球背面時,無法和地球直接通信,飛船的導航全靠軟件指揮。所以,這樣的軟件容不得一個錯誤。除了對軟件本身正確性的要求之外,軟件存儲介質也是至關重要的。要是存儲介質在太空中受到損害,后果也是不堪設想的。

在當時,比較流行的存儲介質是打孔紙帶,就是在紙帶上不同位置用有沒有打孔表示0和1。但是,載人航天工程顯然不能把性命攸關的安全性寄托在弱不禁風的紙帶上面。至于磁帶,它依賴于過于巨大的設備,而且在太空環境下可靠性也得不到保障。于是,最后的選擇是磁環和電纜。

存儲器實際上是一個有很多磁環構成的陣列,電纜從陣列中穿過,以二進制機器碼(0和1)的方式保存軟件信息。下圖就是阿波羅導航系統中用于測試的存儲器。你可以清楚地看到紅色的磁環和綠色的導線。

登月50年|當時登月程序真的是“編制”出來的

磁環的作用是改變導線上電壓的狀態。如果導線穿過磁環,導線上的電壓就會發生改變。系統檢測到這種改變后,就把這條導線上的數據解釋為1。

登月50年|當時登月程序真的是“編制”出來的

如果導線沒有穿過磁環,那么導線上的電壓不發生改變,系統就把這條線上的數據解釋為0。

登月50年|當時登月程序真的是“編制”出來的

可以想象,軟件寫入存儲器的過程實際上和織布差不多。所以,項目組雇傭了很多有經驗的紡織女工,采用一種類似紡車的設備,再加上一種特別的毛衣針,一位一位地把整個軟件織進了下圖中這個存儲器。

登月50年|當時登月程序真的是“編制”出來的

整個軟件系統的大小大約是60萬位。對于軟件的大小來說,這個數字在今天已經是微不足道了。但是,把這樣大小的數據用手工輸入,而且不能有錯,還是很不容易的。所以,整個軟件輸入的過程都經歷了嚴格的測試。幸運的是,當時已經有自動軟件測試的概念了。

最終,這個編織出來的程序成功地把宇航員帶到了月球,并且安全的帶回了家。

來源:騰訊科技