当前位置:首页 > 公众号精选 > 半导体快评
[导读]这几天适逢人类登月50周年,1969年的今天美国阿波罗11号飞船成功在月球着陆,正如首个登月的宇航员阿姆斯特朗所说——这是个人的一小步,但是人类的一大步。


这几天适逢人类登月50周年,1969年的今天美国阿波罗11号飞船成功在月球着陆,正如首个登月的宇航员阿姆斯特朗所说——这是个人的一小步,但是人类的一大步。面对阿波罗11号登月50周年这个大热点,不少公司、组织、个人也从多个角度来纪念这一伟大的日子,NVIDIA发布了一段使用光线追踪技术渲染的登月Demo,不仅效果出色,还从光线渲染的角度证明了登月不是骗局。


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)中的指令模块Comanche055、登月模块Luminary099的原始代码公布在了GitHub上,任何人均可自由查阅、编译。


考虑到阿波罗工程的庞大及复杂,阿波罗11号的源代码开源更多地是象征意义,其他人或者组织也不可能根据这个源码搞自己的登月飞船。


也许正是因为这样,阿波罗11号开源之后很快就有了许多issue(可以看做对源码的提问或者评论,虽然本质上不是这个作用),而且中文占了绝大多数,中文程序员们把阿波利11号源码issue当作了一个评论区。


这些评论大多不是恶意的,主要是调侃、跟风、吐槽、灌水,但总的来说这些评论更多地是国内微博、贴吧的风格,完全看不出与阿波罗11号源码有什么关系。


Github作为全球最主要的代码托管平台,一直被程序员自嘲为最大同性交友社区,如今里面不严肃不正经的东西越来越多,这也是很多人对Github不满的地方。


前两天还有国外的程序员发文表示Github上有太多中文项目,GitHub Trending几乎被被思中国人霸榜了,这些项目有的连注释都是中文的,国外程序员大部分看不懂,所以这事导致一些国外程序员很无奈。


当然,这位小哥的文章态度OK,不是为了喷中文程序员,而是提出了Github上的一个管理问题,确实值得官方思考和改进。



除了代码还有笑料和吐槽


上世纪60年代中期,麻省理工学院(MIT)仪器实验室的程序员们为阿波罗11号登月计划开发飞行控制软件,由于当时还没有开发软件所需要的技术积累,所以他们必须自己打造一套体系出来。


他们提出了一种存储计算机程序的新方法,名为“线存储器”,并创造了一种特殊版本的汇编语言。对于现今的很多程序员来说,汇编语言晦涩难懂,其目的是方便计算机理解,而不是便于人类理解。MIT的程序员们为阿波罗制导计算机(AGC)编写了成千上万行的那种深奥代码。


从下图中,可以直观地感受到他们到底写了多少代码。图为阿波罗登月计划软件工程主管玛格丽特·汉密尔顿(Margaret Hamilton),她旁边是一大堆的AGC代码文件。



AGC代码其实早已公之于众,最初是由技术研究员罗恩·伯基(Ron Burkey)在2003年上传到网络。他根据MIT在网上发布的原始硬拷贝的扫描件进行了转录,也就是一行一行地手动打出来。


“扫描的人是一名叫做加里·内夫(Gary Neff)的飞行员,”伯基在电子邮件中写道,“MIT得到了扫描件,把它们以网页图片的形式放上网。但不幸的是,在此过程中,那些图片遭到损坏,有些地方无法看清。”伯基利用其工程知识查漏补缺,恢复了无法看清的部分。


“一段时间过后,我从加里·内夫那里拿到了备用扫描件,对无法看清的部分进行了核实,幸运地发现我恢复的部分完全正确!”他说。


这使那些想要探究AGC代码的研究员和爱好者如获至宝。伯基本人甚至利用AGC代码创造了一个模仿品。


尽管伯基付出了巨大的努力,成功地重现了无法看清的部分,但对于当今的很多软件开发者来说,AGC代码本身仍然有点晦涩难懂,直到7月7日那天,曾在NASA实习的克里斯·加里(Chris Garry)将AGC代码完整地上传到代码共享网站GitHub。如今,光顾该网站的程序员数不胜数。


几小时内,程序员们开始研究AGC代码,尤其是AGC原始编程者撰写的代码注释。代码注释是用简单直白的语言描述某个特定时刻执行的任务。Reddit网站程序员吐槽栏目的读者们在找乐子方面一向敏锐,他们发现AGC代码的很多注释并不是对代码本身的枯燥解释,其中充满了有趣的笑料和讯息,以及上世纪60年代的很多人和事。


例如,一份源代码文件名为“BURN_BABY_BURN--MASTER_IGNITION_ROUTINE”(燃烧吧,宝贝,燃烧吧——控制点火程序),开头的注释(下图)这样写到:“燃烧吧,宝贝,燃烧吧”可追溯到1965年的洛杉矶骚乱,当时著名DJ、电台所有者“伟大的蒙塔古”(Magnificent Montague)在打碟时使用了这句话。伟大的蒙塔古是上世纪50年代中期至60年代中期,在芝加哥、纽约和洛杉矶极富感召力的灵歌代表人物。



以下这段代码也出自控制点火程序,第一行写着“你好啊”,最后一行写着“拜拜,欢迎再来哦”。从中可以体会到AGC原始编程团队有多爱玩。



在名为“LUNAR_LANDING_GUIDANCE_EQUATIONS.s”(月球着陆制导等式)的文件中,程序员希望其中的两行代码是暂时的,结果却成了永久的。



也是在那份文件中,出现了让宇航员“转动那个蠢东西”的注释。



“那是指转动着陆雷达的天线,”伯基解释说,“我觉得那是在提醒宇航员调整天线。”


在被描述为“AGC和计算机操作员之间的键盘和显示系统交互程序”的“PINBALL_GAME_BUTTONS_AND_LIGHTS.s”(弹珠游戏按钮和显示)文件中,甚至出现了莎士比亚名著《亨利六世》中的一段话:“我要径直向你指出,你任用了许多人,让他们大谈什么名词呀,什么动词呀,以及这一类的可恶字眼儿,这都是任何基督徒的耳朵所不能忍受的。”



Reddit网站的一位用户指出,这可能是在吐槽AGC的编程语言。这种编程语言利用预先确定的“名词”和“动词”来执行操作。例如,动词37代表“运行程序”,名词33代表“点火时间”。


既然AGC代码已经在GitHub网站上公布,程序员们现在能够提出问题和修改建议了。他们当然不会错过机会。一位程序员提出了一个问题,说“低温贮罐发生了非常严重的电路故障”,并列出了再现这个问题的步骤。他补充道,“要小心,这可能对测试者造成危险。”回复非常热烈。


一位用户说,问题可能不在于代码,而在于其他方面:


“是不是只发生在月球转移轨道(sol-3-a)上?还是在所有的月球轨道上都会发生?问题可能出在月球。试着缩小问题的范围。”


另一位用户谈到了基本操作:


“你有没有试过关闭后重启?”


一位程序员认为可能只是软件需要更新:


“阿波罗14号解决了这个问题。”


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


可能会有人认为,能开源的登月代码应该不算是重要的代码。实际上并不是的。那么 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 号飞船准备正式登陆月球前几分钟,雷达发来的大量的数据涌入计算机存储区,让系统近乎崩溃,飞船将在月球坠毁,宇航员已做好牺牲的准备。


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


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


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



-END-

半导体快评

扫描二维码,关注更多精彩内容

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

业内消息,近日马斯克旗下 AI 初创企业 xAI 发布新闻稿,宣布正在开源 3140 亿参数的混合专家模型 Grok-1,该模型遵循 Apache 2.0 协议开放模型权重和架构,号称是“迄今为止全球参数量最大的开源大语...

关键字: 马斯克 大模型 开源 OpenAI ChatGPT xAI Grok-1 Grok

开源免专利芯片技术RISC-V成为美中科技战的新战场。华盛顿过去几个月一直在讨论限制中国获取RISC-V技术,认为中国利用RISC-V绕过了美国对华芯片出口管制。上个月众议院一个委员会建议成立一个跨部门政府委员会研究RI...

关键字: RISC-V 开源

众所周知,寒武纪是地球生物大爆发的一个关键期。寒武纪地球气候发生了明显的变化,从冰期转变为了温暖的温带气候,为生物提供了良好的生存环境,从而促进了生物的大量繁殖和多样化,而这种生物学上的进化和开源软件的发展有着异曲同工之...

关键字: 开源 寒武纪 处理器

北京2023年9月22日 /美通社/ -- 华为全联接大会2023期间,华为举办了"昇思MindSpore AI框架:引领大模型&科学智能原生创新"主题论坛,软通动力数字化创新服务线高级副总裁...

关键字: DSP AI 模型 开源

北京2023年9月22日 /美通社/ -- 随着人工智能、云计算等技术的快速发展,算力需求爆发,服务器设计呈现多元异构特征,如何快速适配多种通用计算处理器、多种异构加速器和各类部件,实现服务器高效、稳定、可靠运行,对服务...

关键字: 三星 开源 英特尔 PEN

北京2023年9月18日 /美通社/ -- 9月17日,828 B2B企业节软通动力主题日,第二届软通动力"917转型"企动日峰会以"云上新生态,数智新动力"为主题在北京软通动力总...

关键字: 华为云 数字化 石墨 开源

(全球TMT2023年9月12日讯)近日,2023中国国际数字经济博览会数字雄安论坛在石家庄国际会展中心举办。软通动力子公司鸿湖万联受邀参加本次论坛,软通动力集团高级副总裁、鸿湖万联的总经理秦张波代表鸿湖万联分别与雄安...

关键字: 鸿蒙 开源 操作系统 闸机

北京2023年9月12日 /美通社/ -- 近日,以"智能 绿色 创新 -- 打造未来典范之城"为主题的2023中国国际数字经济博览会数字雄安论坛在石家庄国际会展中心举办。作为开源生态的先锋军,软通动...

关键字: 开源 鸿蒙 操作系统 闸机

深圳2023年9月8日 /美通社/ -- 近日,超算领域国际顶级会刊SC23公布了论文入选名单,由微众银行区块链团队发表的论文——《FISCO-BCOS:An Enterprise-grade Permissioned...

关键字: 区块链 OS 开源 联盟链

北京2023年8月31日 /美通社/ -- "大模型的未来在于行业应用",对此业界已经达成了共识,下一步则是如何将大模型在行业中落地。 于是,我们能够看到,既前一阶段的基础大模型之后,近来又掀起了行...

关键字: 模型 ICT 开源 IDC
关闭
关闭