开发者生态
morning
NASA 仍然保留着 70 年代 Voyager 飞船的一些代码
2026-05-18
1 阅读
redbell
这个故事的流行版本已经固化成固定的形状。美国国家航空航天局 (NASA) 仍然在用一种无人能读懂的编程语言编写的软件来运行航海者号,由少数八十多岁的工程师继续运行,没有人排队来取代它们。根据我们对记录的解读,其中部分内容是准确的。零件则不然。根本问题是真实存在的,而且比标题所暗示的更具体。航天器实际运行的内容 Voyager 机载计算机运行为专用通用电气中断驱动处理器编写的汇编语言,该处理器于 20 世纪 70 年代初设计和制造。每个航天器上都有三个计算机系统:计算机命令子系统、姿态和关节控制子系统以及飞行数据子系统。 FDS 是新闻中最常出现的子系统,因为它打包科学和工程数据进行传输,并且是 Voyager 1 在 2023 年底和 2024 年初发生的长达五个月通信故障的核心子系统。流行的速记通常说 Voyager“在 Fortran 上运行”。这似乎模糊了两件事:机载飞行软件和地面工具。航天器的低空飞行工作取决于高度专业化硬件上的汇编语言编程。 Fortran 与地面系统和较旧的任务工具相关。 2015 年,当 NASA 寻找替代工程师时,简报涵盖了两者,但 Suzy Dodd 在同一篇报道中特别关注的是寻找能够进行组装编程并了解航天器复杂性的人。按照现代标准来看,航天器的机载计算资源很小。在 Voyager 计算机系统中,总内存通常被描述为大约 64 到 70 KB,小于当今小图像文件的大小。多德将操作它比作驾驶 Apple II。这一比较抓住了基本点:该团队正在使用另一个技术时代的计算资源来操作深空探测器。失去了什么,四十九年的运营产生了比语言本身更重要的差距。在星际任务开始前后,航行者 2 号于 1989 年 8 月最接近海王星后,飞行软件进行了更新,使每艘航天器更加自主,更适合长期运行,而无需地球的实际关注。该版本通过团队每隔几个月上传的命令序列进行了增强,是现在运行的基础。几十年来,团队规模不断缩小、老化。更重要的是,许多原始文档已经丢失或支离破碎。 20 世纪 70 年代和 80 年代的 Voyager 文书工作主要是纸质文件,每次项目搬迁办公室时,都会有更多纸质文件消失。多德在 2024 年初告诉《生活科学》杂志,“建造宇宙飞船的人已经不在人世了”,尽管该团队拥有“一套相当完善的文档”,但其中大部分仍停留在纸面上,这使得寻找记录感觉就像是“考古挖掘以获取文档”。 Zottarelli 退休背景 Larry Zottarelli 是最后一位仍在从事该项目工作的原始 Voyager 工程师,他于 2016 年退休,时年 80 岁。自 1977 年发射以来,他一直在该任务中工作,负责飞行数据子系统。美国有线电视新闻网 (CNN)、《大众机械》(Popular Mechanics) 等媒体报道称,当时的退休是代际过渡的时刻。 “懂代码的工程师都80多岁了”的说法大多来自这个时期。现在已经过时九年了。目前 Voyager 飞行团队是 JPL 的一小群工程师,其中大多数人都不是 80 多岁。 Voyager 发射时,多德本人 16 岁。她于 1984 年首次参与该航天器的设计工作,担任与天王星相遇的序列设计师,并于 2010 年返回担任项目经理,此后一直担任该职位。飞行工程工作已经不止一次地移交给原来团队以外的人。多德公开指出的更棘手的问题比一代人的故事更具体。根本的困难是找到能够在定制硬件上流畅地进行装配编程、愿意执行具有定义端点的任务以及对文档空白有耐心的工程师。组装的流畅性不再是常规训练。在多德的框架中,年轻的工程师往往有能力,但没有意愿。该团队还依靠一份可以在紧急情况下呼叫的退休工程师名单。这个名单每年都在变短。这是这个故事的真实版本。并不是说代码不可读,而是围绕代码的机构记忆是支离破碎的,并且产生构建代码的工程师的条件无法复制。接下来看什么硬件正在缓慢下降。放射性同位素热电发电机每年损失约四瓦的电力输出,喷气推进实验室一直在一次关闭一个仪器,以保持两艘航天器的运行。根据 NASA 的 Voyager FAQ,工程 d