深空中的遗留代码:维护旅行者号航天器
旅行者1号和2号航天器是距离地球最远的人造物体,它们正在继续向星际空间进发。然而,它们长寿的关键因素不仅在于硬件,还在于一套用20世纪70年代编程语言编写的遗留代码库,目前地球上只有极少数人能够理解这些代码。
这种情况为软件维护提供了一个独特的案例研究:一个无法像现代软件那样进行补丁修复的系统,其单向通信延迟超过24小时,且最初的设计架构师们现在正步入退休年龄。
星际遗留代码的挑战
维护旅行者号航天器需要应对一系列在现代软件工程中几乎闻所未闻的约束条件。与基于云的应用甚至现代卫星不同,旅行者号探测器运行在几十年前设计的硬件和软件之上。
由于航天器距离如此遥远,任何软件更新或修正都是一场高风险的操作。通信延迟——现在单条消息到达探测器的时间已超过24小时——意味着实时调试是不可能的。发送到旅行者号探测器的每一行代码在传输之前都必须经过精确的计算和测试。
人力因素:知识传递与技能差距
最紧迫的问题之一是机构知识的流失。在20世纪70年代编写原始代码的工程师们现在已进入高龄。随着这些原始开发人员的退休,NASA面临着专业知识的缺口。
虽然年轻的工程师具备学习这些古老语言的技术能力,但他们往往缺乏从事遗留系统工作的意愿。然而,正如社区成员所指出的,参与旅行者号项目是一个享有盛誉的机会。它提供了历史保护与活跃任务支持的独特交集,对于任何能够弥合1970年代汇编语言与现代计算之间鸿沟的工程师来说,这都是其职业生涯中的一颗“金星”。
针对古老系统的现代解决方案
维护旅行者号代码库的艰辛引发了关于NASA如今如何管理这些系统的几个问题。工程师和爱好者之间的讨论提出了几种潜在的缓解路径:
- 数字化: 对于项目的物理文档,人们一直存在担忧。将70年代的每一份纸质文档和手册进行数字化是至关重要的,以确保知识不会因物理损耗而丢失。
- 模拟与仿真: 为了测试变更,NASA可能依赖于现代设备上的软件模拟器或旅行者号硬件的物理复制品,以确保发送到真空中的任何指令都是安全的。
- AI 的角色: 有些人建议,大语言模型 (LLMs) 可以用于分析旧文档和代码片段,以帮助现代工程师理解70年代系统的逻辑。通过在现有的遗留代码上训练模型,AI 可能有助于翻译或记录那些未被记录的软件部分。
70年代工程学的持久力
这其中存在着一种深刻的讽刺:人类探索领域一些最先进的成就,竟然是由在大多数商业领域会被视为过时的代码驱动的。虽然许多公司在银行领域挣扎于 COBOL 系统,但旅行者号探测器或许代表了现存运行中的遗留代码库最极端的例子。
归根结底,旅行者号任务提醒着我们,最关键的软件并非是最现代的软件,而是那些稳健、可靠,并且能够在想象中最严酷的环境中生存近半个世纪的软件。