作者 | 伍杏玲

转载自CSDN(ID:CSDNnews)

1969 年 7 月 20 日,“阿波罗 11 号”飞船登月,宇航员尼尔·阿姆斯特朗(Neil Armstrong)成功踏上月球表面,标志着人类第一次踏上月球,完成重要的一步:“这对个人来说是一小步,对人类来说却是一大步。

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

这两天,Apollo-11的源码项目一直占据 GitHub 热榜第一,截至发稿,已获得 37,000+ 个Star。

其实 Apollo-11 并非是冲着在这 50 周年才开源,早在 2014 年便有第一次的代码 commit,并在 2016 年开源。目前已累计超过 300 次commit,有近5000 个 Fork。

这些代码是阿波罗11号制导计算机(AGC)中指令模块(Comanche055)和登月模块(Luminary099)原始代码,这个项目的目的是存储阿波罗 11 号原始代码。

不重要的登月代码才开源?

可能会有人认为,能开源的登月代码应该不算是重要的代码。实际上并不是的。那么 AGC 究竟是什么?

阿波罗制导计算机(AGC)于上世纪 60 年代由美国国家航空航天局(NASA )开发,主要用来控制阿波罗宇宙飞船上的导航与制导系统。

阿波罗号太空船实际上是两种不同的航天器,分为指挥舱(CM)和登月舱(LM)。指挥舱是用来让三名宇航员登上月球,然后再接回来。登月舱是用于承载两名在月球行走的宇航员,而第三名宇航员则留在指挥舱中,绕月球轨道运行。

所以说在人类第一次登月的三位宇航员里,只有前两位宇航员阿姆斯特朗和巴兹·奥尔德林(Buzz Aldrin) 真正地在月球行走,第三位迈克尔·科林斯(Michael Collins)则是坐在飞船里执行任务。

无论是否有宇航员的协助,每个航天器都需要能够在太空中航行,因此需要有一个“制导系统”。该指导系统由麻省理工学院的仪器实验室开发,这个制导系统的一个重要部分是阿波罗制导计算机——“AGC”。

在阿波罗任务中,有两个 AGC,一个用于指导舱,一个用于登月舱。这两个AGC 是相同且可互换的,但它们运行不同的软件,因为航天器执行的任务是不同的。

此外,由 AGC 运行的软件随着时间的推移而发展,所以在后来的任务中使用的AGC 软件(如 Apollo 17)与早期的任务(如 Apollo 8)略有不同。

所以说,这份源码还是很重要的。

在该项目里,还列出当时参与编写这些代码的程序员:

正因为有了这些程序员,我们才完成在科学上重要的“一大步”。

惊心动魄的登月时刻

这位女程序员拯救了所有

阿波罗 11 号登月的过程并不如阿姆斯特朗登月时那“轻松”的一步,而是惊险万分!如果没有这位女程序员,可能就阿波罗就无法成功登月了。

她就是玛格丽特·希菲尔德·汉密尔顿(Margaret Heafield Hamilton),在美国媒体 IT World 评选“在世的世界上最伟大程序员”中,玛格丽特排名第一。

一开始为了贴补家用,玛格丽特成为实验室临时编码员,后因工作出色,被推荐去了 NASA。

当时她带领团队为阿波罗登月计划做后备方案,由于大家是奔着成功去的,所以她负责是最不受重视的部分:万一任务失败之后的后备方案。

但玛格丽特依然认真地用模拟器模拟飞行状态,检查系统漏洞。

可没想到阿波罗 11 号飞船准备正式登陆月球前几分钟,雷达发来的大量的数据涌入计算机存储区,让系统近乎崩溃,飞船将在月球坠毁,宇航员已做好牺牲的准备。

幸好有玛格丽特编写的后备方案软件抗住了压力:在大量错误数据突然涌入,计算机不堪重负是因为进行了一系列不必要的计算,事实上最重要的资源应该用在安全登录上,其他不重要的任务将终止。

这就是她后来提出的“异步处理”概念。

正因为有了这样优秀严谨的程序员,人类才能完成第一次登月。后为了表彰她在登月计划中的贡献,奥巴马授予她“自由奖章”。

所以在我们纪念人类登月 50 周年之际,别忘了给我们优秀的程序员点赞。

GitHub 传送门:

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

参考:

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

https://www.wired.com/2015/10/margaret-hamilton-nasa-apollo/

(*本文为AI科技大本营转载文章,转载请联系原作者

精彩推荐

“只讲技术,拒绝空谈!”2019 AI开发者大会将于9月6日-7日在北京举行,这一届AI开发者大会有哪些亮点?一线公司的大牛们都在关注什么?AI行业的风向是什么?2019 AI开发者大会,倾听大牛分享,聚焦技术实践,和万千开发者共成长。目前,大会早鸟票抢购中~扫码购票,领先一步!

推荐阅读

  • 阿里达摩院做AI这两年

  • 性能比GPU高100倍!华人教授研发全球首个可编程忆阻器AI计算

  • 豪投10亿!华为放话:3年培养100万AI人才!网友神回应了

  • 《长安十二时辰》教了哪些算法知识?

  • 非科班出身程序员,如何超越科班程序员?

  • 谷歌停止中国版搜索引擎;李楠宣布离职魅族;微软用 Rust 替代 C/C++ | 极客头条

  • 首批8款5G手机获3C认证:华为占4款;IBM获AT&T“几十亿美元”云计算合同;马库斯:未来薪酬将以Libra发放

  • 用50年前NASA送阿波罗上天的计算机挖矿什么体验? 出一个块要10^18年……

你点的每个“在看”,我都认真当成了喜欢

近4万Star,登月源码登顶GitHub,这位女程序员“拯救”了阿波罗相关推荐

  1. 登月源码登顶 GitHub Top1,37000 Star 致敬人类登月 50 周年!

    作者 | 伍杏玲 出品 | CSDN(ID:CSDNnews) 封图 | CSDN下载于视觉中国 1969 年 7 月 20 日,"阿波罗 11 号"飞船登月,宇航员尼尔·阿姆斯特 ...

  2. 登月源码开源登顶GitHub No.1!接而又被中国程序员“玩坏”了

    这几天适逢人类登月50周年,1969年的今天美国阿波罗11号飞船成功在月球着陆,正如首个登月的宇航员阿姆斯特朗所说--这是个人的一小步,但是人类的一大步.面对阿波罗11号登月50周年这个大热点,不少公 ...

  3. 源码泄露是裁员报复还是程序员反抗 996?

    "后院"都要失守了,就先别馋大碗宽面了--B 站,你可长点儿心吧! "你的源代码泄露了,还搁这儿吃面?" 2019 年 4 月 22 日,B 站(bilibil ...

  4. android自助终端界面源码_这些安卓源码调试技巧,不懂的程序员月薪绝对不过 30k...

    今天我分享的是Framework的学习和调试的方法. 首先,Android是一种基于Linux的开放源代码软件栈,为广泛的设备和机型而创建.下图是Android平台的主要组件. 从图中你可以看到主要有 ...

  5. 为什么我不推荐Python初学者直接看项目源码?工作五年的程序员给的忠告

    前言 很多刚开始学习Python的初学者,一般看文章,看视频,都会需要直接获取源代码,其实这样对自己的学习是不怎么好的,因为无论是有没有其他语言的经验,入门Python都很简单.Python拥有简单直 ...

  6. 程序员的数学全三册密码_阿波罗50年前成功登月,少不了这位硬核女程序员

    大约在50年前的这个时候,1969年7月21日,载着巴兹·奥尔德林和尼尔·阿姆斯特朗的阿波罗11号登月舱正在月球轨道上与CSM和迈克尔·柯林斯会合. 大家都知道这件事,但你知道吗,阿波罗能成功登月的背 ...

  7. 女程序员晒出11月的工资条:工资是高,但是真累,说老十岁一点也不过分

    快过年了,网上晒工资的瞬间多了起来.有服务员.工人.护士.教师还有"程序猿".程序员在大多数人眼里都是"高智商",高薪资,那程序员到底一月的工资能开多少呢? 前 ...

  8. 女程序员晒出5月的工资条:工资是高,但是真累,网友评论炸锅了

    最近内卷严重,网上晒工资的瞬间多了起来.有服务员.工人.护士.教师还有"程序猿".程序员在大多数人眼里都是"高智商",高薪资,那程序员到底一月的工资能开多少呢? ...

  9. 女程序员放弃大厂年薪20万,回老家当实习老师,工作难找,后悔哭了

    对于应届毕业生来说找工作,高薪都是他们的方向,而对于在互联网行业的老员工来说,稳定和长久发展是他们的方向,介于这两种选择,有些人偏向互联网,而有些人更偏向于事业单位,这二个的价值观不同. 近日一位女程 ...

最新文章

  1. Java web speach api_Web Speech API - 语音文本转换的Web解决方案
  2. 超级网管员原有QQ群己满,现增加新群
  3. pytorch笔记——简易回归问题
  4. Learning ROS: Service and Client (C++)
  5. Hadoop 同步集群时间ntp
  6. sql 中实现打乱数据的排序
  7. .NET Core下的Spring Cloud——前言和概述
  8. linux 或者xshell等工具输入错误命令 删除键显示^H 解决办法
  9. 一起学习C语言:函数(三)
  10. linux 内存使用很大,在32位和64位Linux上,为什么同一进程的pmap的内存使用量会有很大差异?...
  11. [BZOJ] 1610: [Usaco2008 Feb]Line连线游戏
  12. 浅谈计算机教学论文,毕业论文--浅谈计算机教学的有效性
  13. TensorFlow使用--MNIST分类学习(BP神经网络)
  14. 一个小工具帮你搞定实时监控Nginx服务器
  15. [转载] 七龙珠第一部——第020话 修行的威力
  16. 网吧个性化系统的制作与优化(终极版)(转)
  17. windows下db2创建数据库
  18. scala 定义空list_scala-03-list操作
  19. 一口气说出 OAuth2.0 的四种授权方式,面试官会高看一眼
  20. matlab如何设置自变量,matlab中如何指定一个函数的自变量

热门文章

  1. golang笔记——struct
  2. WPF及Silverlight中将DataGrid数据导出
  3. 关于Iframe在IE6下不显示的bug
  4. 9月Python开源项目Top10
  5. 反射 -- 通过字符串操作对象中的成员
  6. pwn with glibc heap(堆利用手册)
  7. 配置hadoop集群一
  8. css3实现3D立体翻转效果
  9. Task03:青少年软件编程(Scratch)等级考试模拟卷(一级)
  10. 【青少年编程】【四级】绘图程序优化