耗时三年,14 万行,50 年前阿波罗 11 号登月的全部代码都能在 GitHub 找到了!...

本文转自大数据文摘,作者:易琬玉

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

AR 应用 “JFKmoonshot” 模拟的从 Apollo11 太空舱走出的视频:

美国总统肯尼迪 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 上面引发了激烈讨论。


“虽然软件可以但是硬件真的是要了老命了”。reddit 上网友评论说已经有小哥用 Arduino 和 Raspberry Pi 开始尝试了。

也有热心网友泼冷水,“私自登月是非法的”。但是科罗拉多州是个例外,因为美国的下一次登月将由私人公司而不是美国宇航局进行,而科罗拉多有两家公司(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 年代的极客们留给我们的时间胶囊。

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

参考资料:

http://bit.ly/2O4tfUJ

http://bit.ly/32AwS82

GitHubDaily:

今天看到许多人都在讨论 Apollo 项目的 issue 区被国人疯狂灌水的问题。其实整件事情的是与非,大家身为成年人,心中都有杆秤可自行判断。

这里我主要是想提醒大家,在被这个事件吸引了注意力的同时,也别忘了 Apollo 项目开源对技术圈所作出的贡献。

以上,为今日分享的内容,觉得对你有所帮助的,可点个「在看」支持,谢谢各位。

推荐阅读:

URL 地址栏能玩出什么新花样?这位歪果程序员小哥给你开开脑洞!

「GitHub 交流群」已开放

想入群的可在公众号后台回复「入群」

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值