论程序员自我修养程序员技术栈

耗时三年,14万行,50年前阿波罗11号登月的全部代码都能在Gi

2019-07-20  本文已影响850人  大数据文摘

大数据文摘出品

作者:易琬玉

50年前的今天,美国宇航员尼尔森·阿姆斯特朗从阿波罗11号飞船登月舱走出,在月球表面留下了人类登月的第一个脚印。

美国总统肯尼迪1961年就设定了登月目标。阿波罗计划历时9年,经历了十次失败,Apollo11号才终于将人类的踪迹带到了月球。在着陆前,躲开了陨坑和巨石宇航员阿姆斯特朗和奥尔德林在着陆点周围探索了两个多小时,他们采集了土壤和岩石样本、插上美国国旗、留下了纪念阿波罗1号宇航员的奖章和写着“我们为全世界和平而来”的牌匾。那是真正的“人类群星闪耀时”!

从缺乏飞行经验到第一次在月球上迈出人类探索的脚步,Apollo11记录的是从0到1的重大转折。

而现在,完成这场宏大登月计划的制导计算机(AGC)所有源代码,你都可以在Github上找到了!

先放上网址:

https://github.com/chrislgarry/Apollo-11

耗时三年的源代码开放计划

这份源代码的开放工作从三年前就已经开始。通过转录MIT博物馆收藏的纸质拷贝文件,Paul Fjeld完成了代码的数字化工作,并由专门研究技术和科学史的学者Deborah Douglas完成整理。

Paul Fjeld本身也是一名空军艺术家,曾作为阿波罗17号的观察员,为阿波罗登月任务创作了一些列文章和插画。在执行阿波罗17号任务时,他遇到了一些阿波罗计划的飞行教练,“在夜间维护期间,我花了大约20个小时学习飞行宇宙飞船。方便的时候,我会在晚上用他们暂时不用的模拟器。”

参加阿波罗17号任务时的Paul Fjeld

整理这些源代码是一件费时费力的事情,如果不是凭着对于宇宙探索的热爱,很难想象会有人坚持了三年将这14多万行的代码耐心数字化并整理公布出来。

有了代码我们就能“上天”吗?

每个无人飞船都需要制导系统。在所有阿波罗计划任务中,都有两个阿波罗的制导系统(简称AGC),一个用于指挥舱,一个用于登月舱。这次开源的就是这两个部分的源代码。

拥有了这些代码我们就能“上天”吗?这次Apollo11登月代码的开放在reddit上面引发了激烈讨论,Github的代码仓库也惨遭注水。

“虽然软件可以但是硬件真的是要了老命了”,reddit上网友评论说已经有小哥用Arduino和Raspberry Pi 开始尝试了(Arduino是一个微控制器主板。微控制器是一种简单的计算机,可以一次运行一个程序。Raspberry Pi是一种通用计算机,通常带有Linux操作系统,能够运行多个程序)。

也有热心网友泼冷水,“私自登月是非法的”。但是科罗拉多州是个例外,因为美国的下一次登月将由私人公司而不是美国宇航局进行,而科罗拉多有两家公司(Lockheed Martin 和 Deep Space Systems )入围。

虚拟AGC:重现阿波罗登月制导指挥场景

虽然用这段代码我们不能真的“上天”,但是文摘菌为大家找到了一个网站。

这是NASA联合 The Instrumentation Laboratory、MIT、剑桥以及MASS共同资助的一个项目,为了给阿波罗计划登月任务中使用的机载制导计算机提供计算机仿真。

如果对编译阿波罗原始代码感兴趣,不妨去看看。从网站可以获取各种版本的原始AGC软件,真的可以在电脑上重现当年阿波罗登月时的制导系统指挥场景,在自己的电脑上体验一把登月的快乐。

网址在这里:

http://www.ibiblio.org/apollo/

同时,网站也有AGC的电气原理图和机械图纸,以及大量关于阿波罗计划的文件。对阿波罗计划感兴趣的、想要做研究的小伙伴一定不要错过!

AGC Engineering Drawings, Batch 9图纸文件

代码背后的英雄们

从这次公开的代码可以窥见阿波罗项目代码量非常之大。一部分原因是因为要实现的指令复杂,还有一部分原因是限于当时的计算机水平,使用的是汇编语言,而三行汇编语言的代码才抵得上一行C语言代码。

曾提名第89届奥斯卡最佳影片的《隐藏人物》就是以三位为美国登月计划做出过巨大贡献的黑人女性工程师为原型。她们负责水星计划(美国第一个载人航天计划)的计算工作,常因肤色和性别受到刁难和歧视,但仍不放弃自己的理想和本分,在那个计算力算力不够的年代,帮助NASA让约翰·格伦成为首位进入地球轨道的美国太空人。

同样,负责阿波罗号计算机飞行软件的“代码女皇”玛格丽特·汉密尔顿在人们还不知道软件到底是怎么一回事的时候,就开始和同事一起为世界上第一部便携式计算机写代码了,他们也创造了计算机编程的核心理念。

负责阿波罗号计算机飞行软件的“代码女皇”玛格丽特·汉密尔顿

在公开的Apollo11登月代码里也有玛格丽特编写的代码,这段以汇编语言编写的代码即使是对今天的程序员来说,也是教科书级别的存在。

有趣的是,当时阿波罗号的工程师们敲代码时还加入了自己的吐槽,它们就像是上世纪60年代的极客们留给我们的时间胶囊。

变的是时间,不变的是我们人类对于宇宙和自身生生不息地求索。

上一篇下一篇

猜你喜欢

热点阅读