作者 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

封图 | CSDN下载于视觉中国

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/

2019程序员转型学什么?

https://edu.csdn.net/topic/ai30?utm_source=csdn_bw

【End】

 热 文 推 荐 

☞鸿蒙将用于工业;三星新芯片支持 5G 和 AI;Material UI 4.2.1 发布 | 极客头条

☞中国第一程序员传

☞抢饭碗?这位 05 后开发三款小程序!

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

☞344亿天价罚单也救不了Libra!

☞面试官问我:你们的数据库是怎么架构的?

☞10分钟学会用Pandas做多层级索引

☞江湖又现中科大少年班的传说

☞中国第一程序员,微软得不到他就要毁了他!

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

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

登月源码登顶 GitHub Top1,37000 Star 致敬人类登月 50 周年!相关推荐

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

    作者 | 伍杏玲 转载自CSDN(ID:CSDNnews) 1969 年 7 月 20 日,"阿波罗 11 号"飞船登月,宇航员尼尔·阿姆斯特朗(Neil Armstrong)成功 ...

  2. V 语言强势登顶 GitHub TOP1,欲取 Go 而代之?

    这个结合了 Go 和 Rust 特性的新语言 V,正式发布了首个可用版本. 整理 | 郭芮 出品 | CSDN(ID:CSDNnews) 长久以来,编程语言在语法.语义和标准库等方面都存在着千差万别, ...

  3. 雷丰阳spring系列的笔记_怒肝8个月源码,我成为了 Spring 开源贡献者

    我最近一直在写Spring的文章,而且仅仅是Spring FrameWork的文章 ,从最开始的官网入门到现在源码的深度分析.主要就是三个系列 官网入门系列,Spring官网读书笔记,这一系列的文章是 ...

  4. 麻辣GIS源码的github下载与调试

    麻辣GIS源码的github下载与调试 一点想法 GITHUB下载问题 无法访问 可以访问,但是点击页面code下载不了 源码运行 安装vs2013 源码编译 一点想法 近来无事,想接触下gis,同时 ...

  5. CocoaChina12月源码精选

    CocoaChina12月源码精选 转自http://www.cocoachina.com/applenews/devnews/2012/1227/5428.html 优秀开源代码解读:JS与iOS ...

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

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

  7. 25 万行逆向源码遭 GitHub 下架!

    来源:CSDN(ID:CSDNnews) 整理 | 郑丽媛 近日,听闻有人将<GTA3>和<GTA:罪恶都市>这两款 R 星经典游戏成功逆向工程,并发布到 GitHub.目前, ...

  8. 技术干货 | 源码解析 Github 上 14.1k Star 的 RocketMQ

    简介: 站在发送方视角,通过源码,来分析在事务消息发送中 RocketMQ 是如何工作的. 前言 Apache RocketMQ 作为广为人知的开源消息中间件,诞生于阿里巴巴,于 2016 年捐赠给了 ...

  9. 怒肝 8 个月源码,我成为了 Spring 开源贡献者

    作者 | cxuan 来源 | 程序员cxuan 责编| 王晓曼 前言 我最近一直在写Spring的文章,而且仅仅是 Spring FrameWork 的文章 ,从最开始的官网入门到现在源码的深度分析 ...

最新文章

  1. Android Market 链接的生成与分享
  2. python 微信爬虫_python3简单实现微信爬虫
  3. 问题:AttributeError: module 'tensorflow' has no attribute 'gfile'
  4. 第二次冲刺 站立会议5
  5. Android初学第86天
  6. import numpy as np_纪录27个NumPy操作
  7. 菜鸟,下一代分布式体系架构的设计理念
  8. 男生学计算机哪专业好,男生学计算机科学与技术专业好不好有前途吗
  9. POJ2190 HDU2714 ISBN
  10. Win10 通过 VirtualBox安装CentOS7操作手册
  11. (转)Android Binder设计与实现 – 设计篇
  12. 使用搭建的GNS3连接交换机互联互通
  13. 中兴配置dhcp服务器,中兴ZXR10 5928三层交换机DHCP配制步骤
  14. 某智能化小区网络规划及设计
  15. macbook word插入公式快捷键 输入阿拉伯数字快捷键 快速打开访达快捷键
  16. 常见bugger集合
  17. ArcGIS教程:山地风景区景观规划中的可视性分析
  18. JAVA学习 API_day11(属性集, 函数式编程, stream流)
  19. pandas支持读取哪些类型文件_Pandas教程: 读取Excel文件
  20. 阿里云主机购买及配置Linux服务器(centos7.5)详细步骤

热门文章

  1. 从Helm仓库创建应用流程示例
  2. [Git] 多个分支修改相同文件
  3. 生成对抗网络GAN损失函数loss的简单理解
  4. 如何把网页添加到服务器,如何把一个网页放到云服务器
  5. 联想微型计算机怎么开盖,联想C4030一体机怎么拆后盖加内存?
  6. 【金融工程实验】【matlab】使用candle函数画日均k线图
  7. leetcode python3 简单题14. Longest Common Prefix
  8. vba下标越界9怎么解决_铝模气泡怎么解决?看9个常见问题防治
  9. pyqt5信号与槽连接的生命周期与对象引用的生命周期
  10. Python椭圆加密算法实现区块链信息认证