大数据文摘出品

作者:易琬玉

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年代的极客们留给我们的时间胶囊。

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

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

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

    本文转自大数据文摘,作者:易琬玉 50 年前的今天,美国宇航员尼尔森·阿姆斯特朗从阿波罗 11 号飞船登月舱走出,在月球表面留下了人类登月的第一个脚印. AR 应用 "JFKmoonshot ...

  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. 前言 致Java开发学习前的一段话
  2. 计算机word基础知识菜单,Word试卷模板_电脑基础知识_IT/计算机_资料
  3. 画验证曲线_椭圆曲线加密算法(ECC)
  4. 用ISA阻挡用户向论坛发贴子
  5. Lua: 给 Redis 用户的入门指导
  6. 手机软件项目管理—项目组内部的沟通
  7. spark java foreach_Spark Java使用DataFrame的foreach/foreachPartition
  8. Mybatis mapper代理开发方法实现增删改查
  9. CLion开发,运行报错后问题排查
  10. 【UnityDragonBone】2D像纸娃娃系统所需资料
  11. 微信小程序 获取用户昵称、头像、手机号
  12. c语言setw,在C++中,setw(int n)
  13. python:Craps赌博游戏
  14. 手机1520 win8.1升级win10
  15. 数字货币量化分析报告_2017-09-04
  16. python 录音vad_语音活性检测器py-webrtcvad安装使用
  17. 【人因工程】熵值法与CRITIC法求权重
  18. 企业成长能力分析的指标是什么
  19. 运放--单电源半波精密整流
  20. 201421123042 《Java程序设计》第5周学习总结

热门文章

  1. 用java做一个简单的万年历
  2. 念数字(PTA题库)
  3. 人均月薪83887元?腾讯第三季财报来了!我酸了...
  4. PHP+MySQL动态网站开发 从基础到实践pdf
  5. 手撕VGG卷积神经网络-pytorch-详细注释版(可以直接替换自己数据集)-直接放置自己的数据集就能直接跑。跑的代码有问题的可以在评论区指出,看到了会回复。训练代码和预测代码均有。
  6. pyqt5 发送键盘信号_为什么提款机的键盘要用金属?看完之后长知识了……
  7. 浅析C语言和Python(1)
  8. 阿里云国际站充值:阿里云PAI DSW实例安装R Kernel
  9. 屏幕截图按什么键,截图快捷键是什么?(四种方法)
  10. 0-1背包问题 动态规划c语言,详解动态规划01背包问题--JavaScript实现