关于旅行者号的一个流行说法这几年被传得神乎其神:NASA仍在用一种诞生于20世纪70年代的古老编程语言,维持这对迄今飞得最远的探测器。网上一度流传"50年没人碰过的原始代码"只剩最后一名工程师能看懂。NASA喷气推进实验室(JPL)公开澄清过,这个故事既被内部夸大,也被外界误读。但真正的问题确实存在,而且比"没人懂代码"更具体、更复杂。

首先要搞清楚旅行者号上实际运行着什么。两艘探测器各搭载三套计算机系统:指令处理子系统(CCS)、姿态与关节控制子系统(AACS),以及飞行数据子系统(FDS)。其中飞行数据子系统负责打包科学工程数据并传回地球,也是2023年底至2024年那次长达约5个月通信中断的"主角"。

打开网易新闻 查看精彩图片

这些机载计算机运行的是为旅行者号定制的汇编语言驱动程序,硬件由20世纪70年代设计制造。现代流行说法常提到"旅行者号运行在Fortran上",实际上是把飞行软件与地面系统工具混为一谈——探测器上的飞行软件是高度定制的汇编程序,Fortran主要出现在地面系统和任务工具中。NASA在2015年为旅行者号寻找新工程师时,招聘要求确实列出汇编和Fortran,但项目负责人苏茜·多德(Suzy Dodd)真正想找的是"能读汇编、还能理解这些探测器复杂约束的人"。

打开网易新闻 查看精彩图片

与硬件相比,旅行者号的计算资源极为有限。三套计算机加起来总内存常被概括为约64至70千字节,大致相当于一张小地图的文件。多德将其形容为"不是在飞一台Apple II",这个比喻并不完全准确,但核心意思是对的:他们正在用一个完全属于另一个技术时代的系统,维持一项延伸至星际空间的科学任务。

真正让维护变得困难的,不只是编程语言本身,而是近半个世纪运行过程中积累的"债务"。1989年8月,旅行者2号完成对海王星的飞掠、进入距离太阳更远的空间后,任务转入"扩展任务"阶段,飞行软件也进行了一次重要升级,使探测器能在更少地面干预的情况下更自主运行。这一转变意味着任务增加了原本不会发送的指令序列,构成了今天仍在运行的软件基础。

然而,在49年的漫长运营中,团队规模不断缩减。人员逐渐老去,更关键的是,大量原始文档资料已经遗失或从未归档。20世纪70至80年代的任务文档几乎全是纸质,每次搬迁办公室,都会有一批文件"消失在仓库里"。多德在2024年的一次采访中坦言,"那些建造飞行器的人大多已经不在了",团队只能通过一套"相当不完整"的文档,以及大量纸质资料来查找信息,"每次查找资料都像在运行一场'寻宝游戏'"。

打开网易新闻 查看精彩图片

这也是为什么2016年拉里·佐塔雷利(Larry Zottarelli)的退休引发高度关注。作为最后一位仍在岗的旅行者号"创始工程师",他从1977年项目启动起就一直在团队中,主要负责飞行数据子系统。媒体当时将他的退休描绘为"最后懂代码的人离开",由此强化了"写代码的人都已经八十多岁"的叙事。

但这种叙事如今已经终结。佐塔雷利离开已近九年,旅行者号现在的飞行团队是JPL的一小群工程师,其中大部分并不来自太空飞行器设计方。多德本人加入旅行者号时16岁,1984年首次以"指令序列设计工程师"身份参与当天的发射任务,2010年起担任项目经理并一直负责至今。飞行工程工作在过去几十年间已多次交接,接手人并非都来自原设计团队。

因此,多德公开强调的问题,并不是一个简单的"代码遗产"故事,而是一组更具体的挑战:要找到既能在高度定制硬件上维护汇编程序、又愿意投入到一个终点明确、资源环境与现代任何任务都不同的工程师,还要让他们有足够耐心去面对那套支离破碎的文档体系。