阿波羅 11 號登月原始程式碼公布,其中還隱藏莎翁名言

作者 | 發布日期 2016 年 07 月 12 日 17:49 | 分類 科技趣聞 , 航太科技 , 電腦 follow us in feedly

7 日,一名 NASA 的前實習生 Chris Garry 在 Github 上公開了「阿波羅 11 號」登月專案電腦導引系統的原始程式碼,使得普通民眾也能一覽太空登月系統的內部趨動邏輯(只不過當年編寫的程式碼,一般人可能看不太懂就是了)。




其實,「阿波羅 11 號」登月專案的原始程式碼早在 2003 年就被科技學者 Ron Burkey 公布給大眾,那時他不得不從一份原文的掃描版中,人工將程式碼一行一行地敲入電腦,並上傳到網路。如下圖所示,照片右側一人高的紙上全是阿波羅 11 號登月的程式碼,你就可以想像 Ron Burkey 是多麼有毅力的一個人。除了上傳該程式碼,Ron Burkey 還根據自己對程式碼邏輯的理解,寫了一個阿波羅 11 號導引系統的模擬程式,關於該程式的影片大家可以點這裡

阿波羅11號 插圖

▲ 登月程式編寫者之一-瑪格麗特·漢密爾頓(Margaret Hamilton),右側堆起來的阿波羅計算機指導手冊(AGC)的原始程式碼列表(圖片來源:維基百科

可能由於分享工具的關係,當年程式碼上傳後並沒有被廣大的程式設計師看到(也可能當年的程式設計師數量比較少)。一直到 7 日程式碼被上傳到 Github,這才引起廣泛關注和熱烈討論。

經過火眼金睛的網友、程式設計師們的仔細研讀,不禁在程式碼裡發現了許多有趣的段落,現摘錄如下。

  1. 首先是在現代系統程式設計中被明令禁止的「魔鬼數字」(一般都要求在程式碼開頭用帶有明確意義的巨集定義代替程式中出現的具體數字,否則會造成他人閱讀程式的障礙)。萬萬沒想到,堂堂 NASA 登月計畫的程式碼裡竟然隱藏了「魔鬼數字」,不禁令廣大的程式設計師們咋舌。
阿波羅11號 插圖5

2. 另外,阿波羅的程式設計師們在一段關於點火程式的註釋裡,竟然講起了故事,是的,你沒有聽錯,是在講故事。詳細介紹了那句「Burn,Bab!Burn!」的由來(大意是說這句話最先來自一名著名電台主持人 Magnificent Montague,經他之手捧紅了一大批美國 Soul Music 歌曲)。

阿波羅11號 插圖4

3. 還有,阿波羅的程式設計師們非常貼心,還在程式碼的相關部分寫上了太空人此刻在進行相關操作時的注意事項,比如「請展開登錄雷達」等(當然,這裡阿波羅的程式設計師用 the silly thing 代指了 landing radar)。

阿波羅11號 插圖3

4. 最令人吃驚的是,登月程式碼裡竟然還隱藏了莎士比亞的名著《亨利六世》中的一個片段:「IT WILL BE PROVED TO THY FACE THAT THOU HAST MEN ABOUT THEE THAT USUALLY TALK OF A NOUN AND A VERB, AND SUCH ABOMINABLE WORDS AS NO CHRISTIAN EAR CAN ENDURE TO HEAR."」大義是說:「我要向你們指出,你任用了許多人,讓他們大談什麼名詞啊、什麼動詞啊,以及這一類的可惡字眼,這都是任何一個基督徒的耳朵所不能忍受的。」

阿波羅11號 插圖2

關於為什麼會在程式碼裡出現這麼一段莎翁「名言」,有人猜測是因為 MIT 的架構師在編寫登月程式碼時將許多程式指令預設成一個數字,然後透過這些「數字」來進行操作,比如「37」就代表「執行(Run program)」。可能是下面編寫程式碼的程式設計師們不勝其煩,整天要查表才能知道這些數字究竟代表什麼意思,於是忍不住在程式碼裡吐槽了一下。

阿波羅11號 插圖1

現在,任何人都可以訪問 GitHub 來獲取阿波羅 11 號導引系統的原始程式碼,感興趣的朋友們不妨去看看吧。

(本文由 雷鋒網 授權轉載;首圖來源:Flickr/Marc Van Norden CC BY 2.0) 

發表迴響