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

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 交流群」已开放

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

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

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

    大数据文摘出品 作者:易琬玉 50年前的今天,美国宇航员尼尔森·阿姆斯特朗从阿波罗11号飞船登月舱走出,在月球表面留下了人类登月的第一个脚印. 美国总统肯尼迪1961年就设定了登月目标.阿波罗计划历时 ...

  2. 高清重制版阿波罗11号录像,英伟达RTX还原50年前登月细节

    晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 1969年,阿姆斯特朗的一小步,成为人类历史的一大步. 为了纪念阿波罗11号登月球50周年,英伟达用RTX系列显卡的光线追踪技术,修复了颗粒 ...

  3. GitHub开源14.5万行阿波罗11号源代码

    1969年7月20日,阿波罗11号协助人类首次完成在另一颗星球表面行走的航天器.按照时间推送,2019年7月20日正好是阿波罗11号完成历史使命的第50周年. 整整50年前的今天,人类历史上首次实现在 ...

  4. 丢人现眼……GitHub阿波罗11号代码仓库惨遭中文灌水

    问耕 发自 凹非寺 量子位 出品 | 公众号 QbitAI 这不是一件光彩的事情. 昨天登上GitHub趋势热榜第一的阿波罗11号(Apollo 11)代码仓库,获得了3万多标星称赞,但也同时惨遭中文 ...

  5. 1969年7月16日上午9点32分,“阿波罗11号”在肯尼迪空间中心的第39号发射台发射升空...

    1969年7月20日,宇航员实施阿波罗11号舱外活动,奥尔德林在登月舱鹰旁漫步.这张照片是由指令长阿姆斯特朗使用70mm月球相机拍摄的.此时,另一位宇航员柯林斯则独自一人留在绕月环行的指令舱内. 人类 ...

  6. 超级计算机阿波罗11,阿波罗11号制导计算机中指令模块和登月模块原始代码已在 GitHub 上开源...

    维基百科上"阿波罗11号"词条下对阿波罗 11 号的介绍如下: 阿波罗11号(英语:Apollo 11)是美国国家航空航天局的阿波罗计划中的第五次载人任务,是人类第一次登月任务,歷 ...

  7. 阿波罗登月计算机内存,吓尿了!助力阿波罗载人登月的电脑竟然长这样

    1969年人类的足迹第一次踏上了月球,正如第一个走出舱门的阿姆斯特朗所说"这是个人的一小步,但却是人类的一大步",在这之后的几十年里,美国数次登月,而登月这件事推动的则是计算机革命 ...

  8. “被遗忘的宇航员”逝世,他是阿波罗11号上唯一没登月的人

    梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 迈克尔·柯林斯因癌症去世,享年90岁. 这个名字可能对你而言很陌生,他是阿波罗11号进行人类第一次登月时,唯一留在飞船上的那个人,没有踏上月 ...

  9. Jeff Bezos计划回收阿波罗11号飞船引擎

    2019独角兽企业重金招聘Python工程师标准>>> 亚马逊创始人Jeff Bezos在其 Bezos Expeditions网站上宣布,他的团队发现了阿波罗11号飞船引擎的位置, ...

最新文章

  1. 一文读懂:GoogleNet的Inception从v1到v4的演变
  2. openJDK之lambda——List的forEach如何实现的
  3. 初中英语八下单词表(SuperMemo QA文本格式)
  4. css:中文词不断开,整体换行
  5. ExtJS的xtype列表
  6. 【python数字信号处理】——Z变换
  7. oracle concat函数用法_大白的函数笔记:文本合并就是这么简单,不会的快来学...
  8. struts2 拦截器_Struts2 execAndWait拦截器示例,用于长时间运行的动作
  9. 服务器2012怎么安装无线网卡驱动,如何安装usb无线网卡驱动,教您如何安装电脑usb驱动...
  10. 抖音去除水印还原真实视频解析
  11. 各国家分析之加拿大安道尔
  12. nest 模拟器_如何将Nest Thermostat用作运动探测器
  13. XILINX FPGA 7系之 Distribute RAM
  14. 2022年湖北省光电子信息和生命健康领域科技计划成果路演征集条件以及申报时间流程汇总!
  15. python tkinter 实现简易秒表计时器
  16. 迪思杰oracle 11g rac,Oracle 11g RAC UDEV管理RAC共享存储
  17. 如何批量检测查询域名或者网址是否被微信屏蔽拦截
  18. 【大学物理·恒定电流的磁场】恒定磁场的高斯定理与安培环路定理
  19. 逐单分析分时图指标(转贴)
  20. Java使用iText生成word文 表格、图片、表格里插图片、页眉、页脚、图片页脚、(学习帖)

热门文章

  1. The Lost Art of Structure Packing
  2. Apache .htaccess规则RewriteCond 和RewriteRule-实操解释说明
  3. Vue element ui + AmazonS3上传文件功能
  4. 神经网络综合知识小杂烩汇总
  5. 分析交互设计和UI设计的区别!优漫动游
  6. 将5G作为4G的附庸,或许不失为拯救5G的一个办法
  7. 设计模式 -- 工厂模式
  8. python读取csv文件的几种方式(含实例说明)
  9. 【java实现网址转换为二维码】
  10. Django Rest Framework - 实例PartyDemo 之 API文档