伙伴们,快刀广播站又开始广播了。
在AI时代,提起程序员或代码,就特别容易让人联想起“降本增效”或是被AI取代之类的消息,今天我跟大家讲一个有点科幻色彩的事情,让我们把视野离开地球,看一看星辰大海。
美国NASA在1977年发射了旅行者1号航天器,它还有个双胞胎版本旅行者2号,这是现在唯二能冲出太阳系的两个人造物了。在发射35年后,也就是2012年,旅行者1号成为第一个离开太阳系的飞行器,6年后,2号也成功离开了太阳系。
今天我们要聊的问题非常粗暴和直接,就是如果一台距离我们240亿公里的设备出现了Bug,程序员要怎么修复?这是真实发生过的,2023年11月14日,旅行者1号就和地球失去了联系,更准确的说法是它仍然可以接受来自地球的命令,但是不再把“可读的科学与工程数据”发回地球,简单来说就是这小子已读不回,不给家里打电话了。
我先和大家简单解释一下这次出现的Bug。旅行者1号上有三台机载计算机,被称为飞行数据子系统,简称FDS,这三台计算机负责把一些科学和工程数据进行打包,再发送给地球。但这次三台计算机都出现了某种程度上的故障。这个“某种程度上的故障”不是我要含糊其辞,是人家官方的说法,因为没有修电脑的能去现场实地检查设备,所以没人敢打保票。
后来在查找根源问题时,他们发现是里面的一个芯片出现了故障,这个芯片用来储存FDS系统的内存和软件代码,而这些代码就是用来打包数据的。问题是故障芯片没有办法修复,最后工程团队想到了一个办法,就是把这个芯片上储存的代码分成更小的单位,然后把切小的代码分别放置在不同的位置,同时调整部分代码,确保它们即使分家了,仍然可以一起工作。
这解决方案听起来也不怎么高大上,但难度却不低。
第一,NASA喷气推进实验室解释说:“首先,团队要挑选出负责打包航天器工程数据的代码,并于4月18日将其发送到FDS内的新位置。无线电信号大约需要22.5小时才能到达距离地球240亿公里的旅行者1号,而验证能否成功接收信号还需要再等待22.5小时。”这就意味着当你把代码发出去,就只能开始祈祷,等过了45小时,才能知道旅行者1号有没有收到。当然,45小时是最短时间,信号还有可能在路上走丢了。
想想看,手机5秒钟没反馈,我们都恨不得马上重启它,但旅行者1号要45个小时才能回你一句“收到”。
第二,比距离长更麻烦的是,旅行者1号是1977年发射的,航天器机载计算机听起来很高大上,但我去查了一下这些机器的配置,它只有一台8通道的磁带记录仪和一台储存空间只有低端iPhone手机24万分之一的电脑,毫不夸张地说,现在很多幼儿园孩子手里拿的电子毛绒狗的机器配置,都比旅行者1号的电脑高多了。
第三,旅行者1号所携带的代码是47年前写的,那时还是用二进制0和1的硬编码,现在的工程团队去修这种代码,那可真是包出浆来的祖传老代码啊。非顶尖水平的程序员谁敢接这种活儿,万一不小心写错一个字母,让旅行者1号从此消失在茫茫宇宙中,那这个程序员肯定会被钉在人类历史的耻辱柱上。要知道旅行者1号还能向地球发送信号,靠的是一个功率只有23瓦的发射器,23瓦是什么概念呢?基本上相当于大家冰箱里的灯泡功率。
4月20日,当团队收到旅行者1号的回复时,确认已经修改成功,团队一起鼓掌庆祝,NASA还把团队庆祝图发在了社交媒体上。我在为这个事情开心之余,还不由得唏嘘一下,这个工程团队的平均年龄看起来要到50岁以上了,要是把35岁以上的程序员都裁掉,未来可没有人能干这种活了。
最后我再给一些同学补充点关于旅行者1号的信息,可能有人会关心它有没有目的地。其实这台机器在发射时,只是为了完成一个为期4年的土星之旅,剩下的一切对于地球来说,都是意外收获。在它最辉煌的时候,给我们传回来了木星和土星的图像,再到1990年之后,为了节省所剩不多的能源,它停止了发送图像,只能靠刚才说的23瓦的信号发射器发送信号。
最后再介绍一个人,他的名字叫爱德华·斯通,它从1972年开始,担任这个旅行者航天器项目的科学家,是这个项目的发言人,同时还是负责旅行者1号和2号航天器上宇宙射线系统的首席研究员。他为旅行者项目整整服务了50年,一直到2022年,也就是前年,88岁的他才正式退休。
我一直在想,对于斯通先生来说,他们建造的某个东西可以在太阳系外的茫茫宇宙中漫游,并且仍处于可工作状态,那当他仰望星空的时候,他会想什么呢?
没有人知道旅行者1号的终点在哪里,但是我们可以计算出来,它下一次遇到大型星球会在什么时候,大约在4万年之后,它会遇到一颗名字叫作AC+793888的矮星,位于鹿豹座。对,是还只有编号,没有名字的一颗星球。
好,今天的快刀广播站就到这里了。如果你觉得今天的内容对你有帮助,欢迎分享到朋友圈或者转发给你的朋友们。明天咱们接着聊AI。
【相关链接】
NASA 官网:NASA 航海者 1 号继续向地球发送工程更新
https://www.jpl.nasa.gov/news/nasas-voyager-1-resumes-sending-engineering-updates-to-earth