阿波羅11號登月飛船原始碼:除了代碼還有笑料和吐槽

2021-01-09 造就

上世紀60年代中期,麻省理工學院(MIT)儀器實驗室的程式設計師們為阿波羅11號登月計劃開發飛行控制軟體,由於當時還沒有開發軟體所需要的技術積累,所以他們必須自己打造一套體系出來。

他們提出了一種存儲電腦程式的新方法,名為「線存儲器」,並創造了一種特殊版本的彙編語言。對於現今的很多程式設計師來說,彙編語言晦澀難懂,其目的是方便計算機理解,而不是便於人類理解。MIT的程式設計師們為阿波羅制導計算機(AGC)編寫了成千上萬行的那種深奧代碼。

從下圖中,可以直觀地感受到他們到底寫了多少代碼。圖為阿波羅登月計劃軟體工程主管瑪格麗特·漢密爾頓(Margaret Hamilton),她旁邊是一大堆的AGC代碼文件。

AGC代碼其實早已公之於眾,最初是由技術研究員羅恩·伯基(Ron Burkey)在2003年上傳到網絡。他根據MIT在網上發布的原始硬拷貝的掃描件進行了轉錄,也就是一行一行地手動打出來。

「掃描的人是一名叫做加裡·內夫(Gary Neff)的飛行員,」伯基在電子郵件中寫道,「MIT得到了掃描件,把它們以網頁圖片的形式放上網。但不幸的是,在此過程中,那些圖片遭到損壞,有些地方無法看清。」伯基利用其工程知識查漏補缺,恢復了無法看清的部分。

「一段時間過後,我從加裡·內夫那裡拿到了備用掃描件,對無法看清的部分進行了核實,幸運地發現我恢復的部分完全正確!」他說。

這使那些想要探究AGC代碼的研究員和愛好者如獲至寶。伯基本人甚至利用AGC代碼創造了一個模仿品。

儘管伯基付出了巨大的努力,成功地重現了無法看清的部分,但對於當今的很多軟體開發者來說,AGC代碼本身仍然有點晦澀難懂,直到7月7日那天,曾在NASA實習的克裡斯·加裡(Chris Garry)將AGC代碼完整地上傳到代碼共享網站GitHub。如今,光顧該網站的程式設計師數不勝數。

幾小時內,程式設計師們開始研究AGC代碼,尤其是AGC原始編程者撰寫的代碼注釋。代碼注釋是用簡單直白的語言描述某個特定時刻執行的任務。Reddit網站程式設計師吐槽欄目的讀者們在找樂子方面一向敏銳,他們發現AGC代碼的很多注釋並不是對代碼本身的枯燥解釋,其中充滿了有趣的笑料和訊息,以及上世紀60年代的很多人和事。

例如,一份原始碼文件名為「BURN_BABY_BURN--MASTER_IGNITION_ROUTINE」(燃燒吧,寶貝,燃燒吧——控制點火程序),開頭的注釋(下圖)這樣寫到:「燃燒吧,寶貝,燃燒吧」可追溯到1965年的洛杉磯騷亂,當時著名DJ、電臺所有者「偉大的蒙塔古」(Magnificent Montague)在打碟時使用了這句話。偉大的蒙塔古是上世紀50年代中期至60年代中期,在芝加哥、紐約和洛杉磯極富感召力的靈歌代表人物。

以下這段代碼也出自控制點火程序,第一行寫著「你好啊」,最後一行寫著「拜拜,歡迎再來哦」。從中可以體會到AGC原始編程團隊有多愛玩。

在名為「LUNAR_LANDING_GUIDANCE_EQUATIONS.s」(月球著陸制導等式)的文件中,程式設計師希望其中的兩行代碼是暫時的,結果卻成了永久的。

也是在那份文件中,出現了讓太空人「轉動那個蠢東西」的注釋。

「那是指轉動著陸雷達的天線,」伯基解釋說,「我覺得那是在提醒太空人調整天線。」

在被描述為「AGC和計算機操作員之間的鍵盤和顯示系統交互程序」的「PINBALL_GAME_BUTTONS_AND_LIGHTS.s」(彈珠遊戲按鈕和顯示)文件中,甚至出現了莎士比亞名著《亨利六世》中的一段話:「我要徑直向你指出,你任用了許多人,讓他們大談什麼名詞呀,什麼動詞呀,以及這一類的可惡字眼兒,這都是任何基督徒的耳朵所不能忍受的。」 

Reddit網站的一位用戶指出,這可能是在吐槽AGC的程式語言。這種程式語言利用預先確定的「名詞」和「動詞」來執行操作。例如,動詞37代表「運行程序」,名詞33代表「點火時間」。

既然AGC代碼已經在GitHub網站上公布,程式設計師們現在能夠提出問題和修改建議了。他們當然不會錯過機會。一位程式設計師提出了一個問題,說「低溫貯罐發生了非常嚴重的電路故障」,並列出了再現這個問題的步驟。他補充道,「要小心,這可能對測試者造成危險。」回復非常熱烈。

一位用戶說,問題可能不在於代碼,而在於其他方面:

「是不是只發生在月球轉移軌道(sol-3-a)上?還是在所有的月球軌道上都會發生?問題可能出在月球。試著縮小問題的範圍。」

另一位用戶談到了基本操作:

「你有沒有試過關閉後重啟?」

一位程式設計師認為可能只是軟體需要更新:

「阿波羅14號解決了這個問題。」

翻譯:于波

來源:Quartz

造就:線下劇院式的演講平臺,發現最有創造力的思想

更多精彩內容請關注:造就

相關焦點

  • 阿波羅11號登月原始碼公布,其中竟隱藏莎翁名言
    「阿波羅11號」登月項目計算機制導系統的原始碼,使得普通民眾也能一覽航天登月系統的內部實現邏輯。(只不過當年用彙編寫的代碼,一般人可能看不太懂就是了)其實,「阿波羅11號」登月項目的原始碼早在2003年就被科技學者Ron Burkey公布於眾,那時他不得不從一份原文的掃描版中人工將代碼一行一行地敲入計算機,並上傳到網絡。如下圖所示,照片右側一人高的紙上全是阿波羅11號登月的代碼,你就可以想像Ron Burkey是多麼有毅力的一個人。除
  • 耗時三年,14萬行,50年前阿波羅11號登月的全部代碼都能在GitHub找到了!
    大數據文摘出品作者:易琬玉50年前的今天,美國太空人尼爾森·阿姆斯特朗從阿波羅11號飛船登月艙走出,在月球表面留下了人類登月的第一個腳印。AR應用「JFKmoonshot」模擬的從Apollo11太空艙走出的視頻美國總統甘迺迪1961年就設定了登月目標。阿波羅計劃歷時9年,經歷了10次失敗,Apollo11號才終於將人類的蹤跡帶到了月球。
  • 登月50年|阿波羅11號險墜毀!是她的代碼讓人類成功登月
    看到這種情況,瑪格麗特就提議在整個系統中多加一段代碼,防止類似的狀況發生。如果在飛行過程中,太空人操作出了什麼差池,還有挽回的地步。但是當時所有人都覺得太空人是受過嚴格訓練,操作是完美的,「絕對不可能出錯」。再加上當年的計算機存儲空間和運算能力十分有限,決策者也不想添加任何「累贅」的部分。
  • 美國的阿波羅登月計劃背後隱藏的秘密,神秘代碼1201是什麼?
    人類登月,我們不得不提的就肯定是人類的首次登月了——美國的阿波羅11號,這是人類的第一次,所以NASA也進行了全球的直播,發射的時候大概有6億人在看,而登月的時候也將近有5億人在看。出發的時候,阿波羅11號搭載著三個太空人飛往月球的途中
  • 人類登月五十年,憶阿波羅11號的奇妙冒險。
    11號飛船,載著三位航天員開始了他們的登月之旅。進入地月轉移軌道後,阿波羅11號飛船準備開始進行空中組裝,即由指令服務艙和登月艙兩大模塊組成的阿波羅系列飛船,裝在火箭上時不是最終形態,需要在太空中重新組裝。空中組裝在航天任務中是比較少見的,通常入軌後,太空飛行器只進行類似太陽翼展開這樣的動作。那麼,為什麼阿波羅飛船要在太空中進行組裝呢?在土星五號運載火箭上有一個尖尖的逃逸塔,這是為航天員準備的。
  • 從「阿波羅11號」登月諸多怪現象窺見一二
    1969年7月20日阿波羅11號載人飛船登陸月球,阿姆斯特朗從飛船中走出來,踏上了月球,說了一句非常著名的話:「我的一小步,人類的一大步。」這的確是人類歷史上非常重要的時刻,也是人類探索太空邁出的重要一步。
  • 從「阿波羅11號」登月諸多怪現象窺見一二
    important}1969年7月20日阿波羅11號載人飛船登陸月球,阿姆斯特朗從飛船中走出來,踏上了月球,說了一句非常著名的話:「我的一小步,人類的一大步。」不過在阿波羅11號載人飛船登月的整個過程中發生了很多怪異的事情。而這些事情,大部分都是後來參與這次任務的太空人晚年爆料出來的。被大家所熟知的想必就是這次登月直播過程中的電視轉播信號中斷了4分30秒。
  • 多圖預警:阿波羅11號登月的那些事
    1969年7月16日「阿波羅11」號飛船從甘迺迪航天中心發射升空。4天後尼爾阿姆斯特朗和巴茲奧爾德林乘坐登月艙在寧靜海登陸,同行的太空人麥可柯林斯留在繞月軌道。阿姆斯特朗在登上月球時說:「這是我個人的一小步,但卻是人類的一大步。」
  • 阿波羅11號:登月50年
    固定發射臺一側還有一座固定式勤務塔,裝有旋臂起重機、電梯、空調、照明、通風、通信系統,以及各種管線、液體推進劑等等,用來在發射前給火箭和飛船進行最後的測試和檢查,加注推進劑和充填壓縮空氣。「阿波羅11號」的減速動作毫無偏差,順利進入繞月軌道,離月球101-121公裡——幾乎是一個圓形軌道。19日下午6時30分,奧爾德林和阿姆斯特朗通過指揮艙和登月艙之間的圓形通道,進入了登月艙,檢查了一遍所有的裝置和系統。7月20日下午4時17分40秒,登月艙「鷹」脫離了母艙「哥倫比亞」,穩穩落在月面上。
  • 多圖預警,「阿波羅11」號登月的那些事兒
    搭載尼爾•阿姆斯特朗和巴茲·奧爾德林的「小鷹」號登月艙,正在進行人類歷史上的第一次載人登月1969年,「阿波羅11」號太空人與一個月球模型合影留念。從左至右分別是登月艙駕駛員埃德溫·巴茲·奧爾德林、指令艙駕駛員麥可·柯林斯和指揮官尼爾·阿姆斯特朗。1969年5月20日,阿姆斯特朗、柯林斯和奧爾德林站在土星V型火箭前面合影留念。他們乘坐的「阿波羅11」號飛船便是搭乘這款火箭發射升空。
  • 你不知道的阿波羅登月秘聞
    阿波羅11號飛船搭乘土星火箭起飛 尼克森總統準備兩份演講稿,以防阿波羅11號登月任務的航天員有去無回 阿波羅11號登月任務有三名備份航天員。 除了三個主力航天員,阿波羅11號登月任務還有三位備份航天員,他們是:吉姆·洛威爾、弗萊德·海斯、比爾·安德斯。備份航天員同樣需要接受任務訓練,在主力航天員因各種原因無法執行任務時接替。
  • 人類登月40年「阿波羅11號」登月八大內幕(組圖)
    事實上,他們聞到的是通過他們的太空靴靴底被帶到飛船上的一點點月球塵土的氣味。  「阿波羅11號」太空人在第一次登月任務中發現了一種月球礦石——阿姆阿爾柯爾礦石,後來科學家在地球上也發現了這種礦石。這種月球礦石後來按照3名「阿波羅11號」登月太空人的名字被命名,它們被叫做「尼爾·阿姆斯特朗、巴茲·奧爾德林和麥可·科林斯」。
  • 阿波羅 11 號登月 50 周年,回顧阿波羅號探月計劃
    北京時間7月15日消息,據美國宇航局網站報導,阿波羅11號飛船登月50周年紀念日臨近,讓我們再次回顧一下阿波羅號計劃的探月歷史。進入太空的首個阿波羅任務是「阿波羅7號」,在為期11天的太空飛行中,機組人員對太空飛行器系統進行了一系列測試,並從美國太空飛船上主持了首個電視直播節目。
  • 阿波羅11號登月50周年紀念,人類為什麼自此不再登月了?
    2019年7月20是人類登月50周年紀念日。50年前的7月16日,巨大的「土星5號」火箭載著 「阿波羅11號」宇宙飛船從美國的甘迺迪航天中心點火升空。開始了人類首次的登月徵程。美國太空人阿姆斯特朗、奧爾德林和柯林斯乘坐宇宙飛船飛越了38萬公裡徵程。最終於7月20日踏上了月球表面。
  • 阿波羅11號的主要目標: 「執行載人登月並安全返回」
    NASA阿波羅11號任務主要目標官方文件雖然上述目標聽起來很簡單,但要實現它遠非易事。阿波羅11號任務當然還有一些次要目標,比如了解太空飛行器和太空衣的性能,以及太空人本身所需執行的登月任務,在月球表面進行實驗,並帶回月球巖石和土壤樣本供科學家進行分析。
  • 阿波羅17號登月飛船曾經拍攝到「UFO」?
    這張照片顯示釋放3束光線的神秘飛船正在監控月球,很可能是阿波羅17號飛船太空人拍攝的。該照片發布在網站上吸引了許多人的密切關注,認為這可能是證實外星生命的「證據」,但是一位英國UFO專家告訴新聞媒體,照片中所謂的外星人飛船很可能是由於相機鏡頭光暈所致,光線反射或者太空垃圾。
  • 關於阿波羅11號的幾個冷知識
    諷刺的是,阿波羅11號的船員們拒絕把果珍列入他們的食物供應裡。特氟龍(聚四氟乙烯(Poly tetra fluoroethylene,簡寫為PTFE),一般稱作「不粘塗層」或「易清潔物料」。這種材料具有抗酸抗鹼、抗各種有機溶劑的特點,幾乎不溶於所有的溶劑。
  • 阿波羅11號登月50周年,阿波羅計劃電影盤點
    50年前的7月21日(北京時間),阿波羅11號登陸月球,太空人尼爾·阿姆斯特朗在月球寧靜海邁出的一小步,成為了人類探索宇宙的一大步。50年來,圍繞阿波羅計劃的讚頌和陰謀論從未間斷,從這些電影就可見一斑。
  • 阿波羅登月過程中出現的離奇事件|月球上有不明飛行物?
    那當然這也獲得了國際天文學聯合會(IAU)批准,真是為我國取得的探月成就啊感到驕傲,那在慶祝的同時我們來聊一下美國第一次登月,也就是阿波羅11號登月過程中發生了一些什麼事。1969年7月16日早晨,在億人注目下,阿波羅11號發往月球,因為這是人類首次登月,對於這一盛況,NASA特意授權相關機構進行了全球直播,那發射的時候有6億人在看,登月的時候有5億人在看,基本上就是凡是家裡有電視的,都調到了登月頻道。
  • 阿波羅11號登月始末【組圖】
    1969年7月20日,太空人實施阿波羅11號艙外活動,奧爾德林在登月艙旁漫步。  據美國《大西洋月刊》7月15日消息:今年7月16日,是美國阿波羅11號飛船發射45周年紀念日。經過多年艱苦和大膽的實驗與探索,人類在45年前終於登上了月球。當年,世界各地數百萬人通過電視直播看到了飛船發射實況。