退休工程师发现月球着陆器电脑游戏代码中存在 55 年之久的漏洞

放大 / 阿波罗登月舱鹰号在月球上空的插图。

周五,一位名叫马丁·C·马丁 (Martin C. Martin) 的退休软件工程师 宣布 他最近发现了原版的一个错误 月球着陆器 电脑游戏的物理代码,同时修改软件。由 17 岁的高中生吉姆·斯托勒 1969 年,这款原始游戏仅将动作呈现为文本状态更新 电传打字机,但它为未来版本奠定了基础。

Storer 在 PDP-8 一种编程语言的小型计算机称为 焦点 就在尼尔·阿姆斯特朗和巴兹·奥尔德林完成历史性月球行走几个月后,这款游戏让玩家可以控制登月舱降落到月球表面。玩家必须小心管理燃料使用量,以实现平稳着陆,每隔十秒钟做出关键决定,以燃烧适量的燃料。

2009 年,在人类首次登月 40 周年之际,我开始寻找原著的作者 月球着陆器 游戏,当时主要被称为图形游戏,得益于 图形版本 自 1974 年以来 1979 年 Atari 街机游戏当我发现 Storer 以电传打字机游戏的形式创造了已知最古老的版本时,我采访了他并写下了 游戏的历史. 稍后存储 发布源代码 在他的网站上有使用 FOCAL 编写的原始游戏。

月球着陆器 游戏,由 Jim Storer 提供。”>原件打印的电传输出扫描件 <em>月球着陆器</em> 游戏,由 Jim Storer 提供。” src=”https://cdn.arstechnica.net/wp-content/uploads/2024/06/lunar_lander_teletype_output-640×524.jpg” width=”640″ height=”524″ srcset=”https://cdn.arstechnica.net/wp-content/uploads/2024/06/lunar_lander_teletype_output-1280×1047.jpg 2x”/></a><figcaption class=
放大 / 原件打印的电传输出扫描件 月球着陆器 游戏,由 Jim Storer 提供。

吉姆·斯托勒

时间快进到 2024 年,人工智能专家、游戏开发者、麻省理工学院前博士后研究员马丁在探索他认为的以最大燃料效率着陆模块的最佳策略时,偶然发现了斯托尔高中代码中的一个错误——这项技术在 坎巴拉太空计划 被狂热爱好者称为“自杀式燃烧”的飞行方式。这种方法需要自由降落以增加速度,然后在最后一刻点燃发动机以减速到刚好可以安全着陆的程度。他还尝试了另一种方法——更平稳的着陆。

“我最近探索了最佳的燃料燃烧计划,以便尽可能平稳地着陆,并最大限度地利用剩余燃料,”马丁在他的博客上写道。“令人惊讶的是,理论上的最佳策略并没有奏效。游戏错误地认为着陆器没有降落在地面上,而事实上它确实降落了。深入研究后,我对游戏中复杂的物理和数值计算感到惊讶。最后我发现了一个错误:一个缺失的‘除以二’,似乎近 55 年来一直没有被注意到。”

分工问题

阿波罗太空舱顶部的发射逃生系统图。
放大 / 阿波罗太空舱顶部的发射逃生系统图。

美国宇航局

尽管采用了本应是教科书式的着陆策略,但马丁发现游戏报告的着陆器完全偏离了月球表面的说法不一致。马丁对这一异常现象很感兴趣,于是深入研究了游戏的源代码,发现着陆算法基于当时极为复杂的物理学,包括 齐奥尔科夫斯基火箭方程 和一个 泰勒级数 扩张。

正如上文所述,问题的根源是一个简单的计算疏忽——用于计算着陆器轨迹的公式中少了一个除以二。这个看似很小的错误却带来了很大的后果,导致模拟低估了着陆器到达最低轨迹点的时间,并错误计算了着陆时间。

尽管存在漏洞,但马丁对当时还是高中生的斯托勒能够将先进的数学概念融入到他的游戏中感到印象深刻,即使以今天的标准来看,这一壮举仍然令人印象深刻。马丁亲自联系了斯托勒, 月球着陆器 作者告诉马丁,他的父亲是一名物理学家,帮助他推导出游戏模拟中使用的方程式。

尽管人们多年来一直玩着并享受着 Storer 的游戏,尽管这个漏洞仍然存在,但这表明真实性并不总是引人入胜的互动体验中最重要的部分。值得庆幸的是,对于奥尔德林和阿姆斯特朗来说,真正的阿波罗登月体验并没有遭遇同样的问题。

您可以在以下网址阅读更多有关 Martin 的激动人心的调试冒险 他的博客

2024-06-14 18:04:33
1718623162

Leave a Reply

Your email address will not be published. Required fields are marked *

近期新闻​

编辑精选​