當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 半導(dǎo)體快評(píng)
[導(dǎo)讀]這幾天適逢人類登月50周年,1969年的今天美國(guó)阿波羅11號(hào)飛船成功在月球著陸,正如首個(gè)登月的宇航員阿姆斯特朗所說——這是個(gè)人的一小步,但是人類的一大步。


這幾天適逢人類登月50周年,1969年的今天美國(guó)阿波羅11號(hào)飛船成功在月球著陸,正如首個(gè)登月的宇航員阿姆斯特朗所說——這是個(gè)人的一小步,但是人類的一大步。面對(duì)阿波羅11號(hào)登月50周年這個(gè)大熱點(diǎn),不少公司、組織、個(gè)人也從多個(gè)角度來紀(jì)念這一偉大的日子,NVIDIA發(fā)布了一段使用光線追蹤技術(shù)渲染的登月Demo,不僅效果出色,還從光線渲染的角度證明了登月不是騙局。


1969 年 7 月 20 日,“阿波羅 11 號(hào)”飛船登月,宇航員尼爾·阿姆斯特朗(Neil Armstrong)成功踏上月球表面,標(biāo)志著人類第一次踏上月球,完成重要的一步:“這對(duì)個(gè)人來說是一小步,對(duì)人類來說卻是一大步。


2019 年 7 月 20 日的今天,正是人類登月 50 周年。


這兩天,Apollo-11的源碼項(xiàng)目一直占據(jù) GitHub 熱榜第一,目前已獲得 37,000+ 個(gè)Star。



其實(shí) Apollo-11 并非是沖著在這 50 周年才開源,早在 2014 年便有第一次的代碼 commit,并在 2016 年開源。目前已累計(jì)超過 300 次commit,有近5000 個(gè) Fork。??

?


這些代碼是阿波羅11號(hào)制導(dǎo)計(jì)算機(jī)(AGC)中指令模塊(Comanche055)和登月模塊(Luminary099)原始代碼,這個(gè)項(xiàng)目的目的是存儲(chǔ)阿波羅 11 號(hào)原始代碼。



此外,虛擬AGC和麻省理工科學(xué)博物館將阿波羅導(dǎo)航計(jì)算機(jī)(AGC)中的指令模塊Comanche055、登月模塊Luminary099的原始代碼公布在了GitHub上,任何人均可自由查閱、編譯。


考慮到阿波羅工程的龐大及復(fù)雜,阿波羅11號(hào)的源代碼開源更多地是象征意義,其他人或者組織也不可能根據(jù)這個(gè)源碼搞自己的登月飛船。


也許正是因?yàn)檫@樣,阿波羅11號(hào)開源之后很快就有了許多issue(可以看做對(duì)源碼的提問或者評(píng)論,雖然本質(zhì)上不是這個(gè)作用),而且中文占了絕大多數(shù),中文程序員們把阿波利11號(hào)源碼issue當(dāng)作了一個(gè)評(píng)論區(qū)。


這些評(píng)論大多不是惡意的,主要是調(diào)侃、跟風(fēng)、吐槽、灌水,但總的來說這些評(píng)論更多地是國(guó)內(nèi)微博、貼吧的風(fēng)格,完全看不出與阿波羅11號(hào)源碼有什么關(guān)系。


Github作為全球最主要的代碼托管平臺(tái),一直被程序員自嘲為最大同性交友社區(qū),如今里面不嚴(yán)肅不正經(jīng)的東西越來越多,這也是很多人對(duì)Github不滿的地方。


前兩天還有國(guó)外的程序員發(fā)文表示Github上有太多中文項(xiàng)目,GitHub Trending幾乎被被思中國(guó)人霸榜了,這些項(xiàng)目有的連注釋都是中文的,國(guó)外程序員大部分看不懂,所以這事導(dǎo)致一些國(guó)外程序員很無奈。


當(dāng)然,這位小哥的文章態(tài)度OK,不是為了噴中文程序員,而是提出了Github上的一個(gè)管理問題,確實(shí)值得官方思考和改進(jìn)。



除了代碼還有笑料和吐槽


上世紀(jì)60年代中期,麻省理工學(xué)院(MIT)儀器實(shí)驗(yàn)室的程序員們?yōu)榘⒉_11號(hào)登月計(jì)劃開發(fā)飛行控制軟件,由于當(dāng)時(shí)還沒有開發(fā)軟件所需要的技術(shù)積累,所以他們必須自己打造一套體系出來。


他們提出了一種存儲(chǔ)計(jì)算機(jī)程序的新方法,名為“線存儲(chǔ)器”,并創(chuàng)造了一種特殊版本的匯編語(yǔ)言。對(duì)于現(xiàn)今的很多程序員來說,匯編語(yǔ)言晦澀難懂,其目的是方便計(jì)算機(jī)理解,而不是便于人類理解。MIT的程序員們?yōu)榘⒉_制導(dǎo)計(jì)算機(jī)(AGC)編寫了成千上萬(wàn)行的那種深?yuàn)W代碼。


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



AGC代碼其實(shí)早已公之于眾,最初是由技術(shù)研究員羅恩·伯基(Ron Burkey)在2003年上傳到網(wǎng)絡(luò)。他根據(jù)MIT在網(wǎng)上發(fā)布的原始硬拷貝的掃描件進(jìn)行了轉(zhuǎn)錄,也就是一行一行地手動(dòng)打出來。


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


“一段時(shí)間過后,我從加里·內(nèi)夫那里拿到了備用掃描件,對(duì)無法看清的部分進(jìn)行了核實(shí),幸運(yùn)地發(fā)現(xiàn)我恢復(fù)的部分完全正確!”他說。


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


盡管伯基付出了巨大的努力,成功地重現(xiàn)了無法看清的部分,但對(duì)于當(dāng)今的很多軟件開發(fā)者來說,AGC代碼本身仍然有點(diǎn)晦澀難懂,直到7月7日那天,曾在NASA實(shí)習(xí)的克里斯·加里(Chris Garry)將AGC代碼完整地上傳到代碼共享網(wǎng)站GitHub。如今,光顧該網(wǎng)站的程序員數(shù)不勝數(shù)。


幾小時(shí)內(nèi),程序員們開始研究AGC代碼,尤其是AGC原始編程者撰寫的代碼注釋。代碼注釋是用簡(jiǎn)單直白的語(yǔ)言描述某個(gè)特定時(shí)刻執(zhí)行的任務(wù)。Reddit網(wǎng)站程序員吐槽欄目的讀者們?cè)谡覙纷臃矫嬉幌蛎翡J,他們發(fā)現(xiàn)AGC代碼的很多注釋并不是對(duì)代碼本身的枯燥解釋,其中充滿了有趣的笑料和訊息,以及上世紀(jì)60年代的很多人和事。


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



以下這段代碼也出自控制點(diǎn)火程序,第一行寫著“你好啊”,最后一行寫著“拜拜,歡迎再來哦”。從中可以體會(huì)到AGC原始編程團(tuán)隊(duì)有多愛玩。



在名為“LUNAR_LANDING_GUIDANCE_EQUATIONS.s”(月球著陸制導(dǎo)等式)的文件中,程序員希望其中的兩行代碼是暫時(shí)的,結(jié)果卻成了永久的。



也是在那份文件中,出現(xiàn)了讓宇航員“轉(zhuǎn)動(dòng)那個(gè)蠢東西”的注釋。



“那是指轉(zhuǎn)動(dòng)著陸雷達(dá)的天線,”伯基解釋說,“我覺得那是在提醒宇航員調(diào)整天線?!?/span>


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



Reddit網(wǎng)站的一位用戶指出,這可能是在吐槽AGC的編程語(yǔ)言。這種編程語(yǔ)言利用預(yù)先確定的“名詞”和“動(dòng)詞”來執(zhí)行操作。例如,動(dòng)詞37代表“運(yùn)行程序”,名詞33代表“點(diǎn)火時(shí)間”。


既然AGC代碼已經(jīng)在GitHub網(wǎng)站上公布,程序員們現(xiàn)在能夠提出問題和修改建議了。他們當(dāng)然不會(huì)錯(cuò)過機(jī)會(huì)。一位程序員提出了一個(gè)問題,說“低溫貯罐發(fā)生了非常嚴(yán)重的電路故障”,并列出了再現(xiàn)這個(gè)問題的步驟。他補(bǔ)充道,“要小心,這可能對(duì)測(cè)試者造成危險(xiǎn)?!被貜?fù)非常熱烈。


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


“是不是只發(fā)生在月球轉(zhuǎn)移軌道(sol-3-a)上?還是在所有的月球軌道上都會(huì)發(fā)生?問題可能出在月球。試著縮小問題的范圍?!?/span>


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


“你有沒有試過關(guān)閉后重啟?”


一位程序員認(rèn)為可能只是軟件需要更新:


“阿波羅14號(hào)解決了這個(gè)問題?!?/span>


不重要的登月代碼才開源?


可能會(huì)有人認(rèn)為,能開源的登月代碼應(yīng)該不算是重要的代碼。實(shí)際上并不是的。那么 AGC 究竟是什么?


阿波羅制導(dǎo)計(jì)算機(jī)(AGC)于上世紀(jì) 60 年代由美國(guó)國(guó)家航空航天局(NASA )開發(fā),主要用來控制阿波羅宇宙飛船上的導(dǎo)航與制導(dǎo)系統(tǒng)。


阿波羅號(hào)太空船實(shí)際上是兩種不同的航天器,分為指揮艙(CM)和登月艙(LM)。指揮艙是用來讓三名宇航員登上月球,然后再接回來。登月艙是用于承載兩名在月球行走的宇航員,而第三名宇航員則留在指揮艙中,繞月球軌道運(yùn)行。


所以說在人類第一次登月的三位宇航員里,只有前兩位宇航員阿姆斯特朗和巴茲·奧爾德林(Buzz Aldrin) 真正地在月球行走,第三位邁克爾·科林斯(Michael Collins)則是坐在飛船里執(zhí)行任務(wù)。


無論是否有宇航員的協(xié)助,每個(gè)航天器都需要能夠在太空中航行,因此需要有一個(gè)“制導(dǎo)系統(tǒng)”。該指導(dǎo)系統(tǒng)由麻省理工學(xué)院的儀器實(shí)驗(yàn)室開發(fā),這個(gè)制導(dǎo)系統(tǒng)的一個(gè)重要部分是阿波羅制導(dǎo)計(jì)算機(jī)——“AGC”。


在阿波羅任務(wù)中,有兩個(gè) AGC,一個(gè)用于指導(dǎo)艙,一個(gè)用于登月艙。這兩個(gè)AGC 是相同且可互換的,但它們運(yùn)行不同的軟件,因?yàn)楹教炱鲌?zhí)行的任務(wù)是不同的。

此外,由 AGC 運(yùn)行的軟件隨著時(shí)間的推移而發(fā)展,所以在后來的任務(wù)中使用的AGC 軟件(如 Apollo 17)與早期的任務(wù)(如 Apollo 8)略有不同。


所以說,這份源碼還是很重要的。


在該項(xiàng)目里,還列出當(dāng)時(shí)參與編寫這些代碼的程序員:??



正因?yàn)橛辛诉@些程序員,我們才完成在科學(xué)上重要的“一大步”!


驚心動(dòng)魄的登月時(shí)刻,這位女程序員拯救了所有!


阿波羅 11 號(hào)登月的過程并不如阿姆斯特朗登月時(shí)那“輕松”的一步,而是驚險(xiǎn)萬(wàn)分!如果沒有這位女程序員,可能就阿波羅就無法成功登月了。


她就是瑪格麗特·希菲爾德·漢密爾頓(Margaret Heafield Hamilton),在美國(guó)媒體 IT World 評(píng)選“在世的世界上最偉大程序員”中,瑪格麗特排名第一。

一開始為了貼補(bǔ)家用,瑪格麗特成為實(shí)驗(yàn)室臨時(shí)編碼員,后因工作出色,被推薦去了 NASA。


當(dāng)時(shí)她帶領(lǐng)團(tuán)隊(duì)為阿波羅登月計(jì)劃做后備方案,由于大家是奔著成功去的,所以她負(fù)責(zé)是最不受重視的部分:萬(wàn)一任務(wù)失敗之后的后備方案。


但瑪格麗特依然認(rèn)真地用模擬器模擬飛行狀態(tài),檢查系統(tǒng)漏洞。


可沒想到阿波羅 11 號(hào)飛船準(zhǔn)備正式登陸月球前幾分鐘,雷達(dá)發(fā)來的大量的數(shù)據(jù)涌入計(jì)算機(jī)存儲(chǔ)區(qū),讓系統(tǒng)近乎崩潰,飛船將在月球墜毀,宇航員已做好犧牲的準(zhǔn)備。


幸好有瑪格麗特編寫的后背方案軟件抗住了壓力:在大量錯(cuò)誤數(shù)據(jù)突然涌入,計(jì)算機(jī)不堪重負(fù)是因?yàn)檫M(jìn)行了一系列不必要的計(jì)算,事實(shí)上最重要的資源應(yīng)該用在安全登錄上,其他不重要的任務(wù)將終止。


這就是她后來提出的“異步處理”概念。


正因?yàn)橛辛诉@樣優(yōu)秀嚴(yán)謹(jǐn)?shù)某绦騿T,人類才能完成第一次登月。后為了表彰她在登月計(jì)劃中的貢獻(xiàn),奧巴馬授予她“自由獎(jiǎng)?wù)隆薄?br />



-END-

半導(dǎo)體快評(píng)

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉