XUANRA玄曜
NovelBab 68
19zh-Hans

NOVEL RESMI

68. 第六十八章 没有写进代码的那几行

2.744 kata · 0 Bacaan · Diterbitkan · zh-Hans

七月中旬,霍桑,一间大会议室。

白板上贴着一张指令时序表,表是从那趟任务的飞行软件里打出来的,长长的,从上到下几十行,每行一个动作,动作前面标着顺序号。纸比白板宽,两边用磁吸条压住,压得不齐,左边翘起来一点,风从半开的门里进来,纸角轻轻抖。

飞行可靠性副总裁汉斯·科尼格斯曼,德国人,公司早期核心之一,他拿一支红笔,从表的最上面一条开始,往后拉。红笔尖在纸上划出一道细线,拉过"解锁伞舱",拉过"给伞舱供电",拉过"确认伞舱压力"。

拉到中段,红笔停住了。

"这条。"科尼格斯曼用笔尖点着空白处,"'给开伞机构上电',在这一张表里,从来没出现过。"

屋里几个人凑过去看。那张表上,从中段往后,直接就是解锁、供电、确认,没有"先通电让机构醒过来"这一行。有人伸手把纸按平,指腹在空白处蹭了一下,什么都没有——那一行,确实没被印上去。

"上电这一步,正常流程里是飞船自己做的。"一个管软件的工程师说,"它自己做在解锁之前,所以我们打表的时候,没把它单独列出来。手动发令那天,人照着这张表念,表上没有,人就漏了。"

"不是设计缺陷。"科尼格斯曼说,"也不是代码写错了。是这张表里,没有人写过'分离之后出事,你先给自己上电'这一行。"

他顿了顿,把红笔放下。笔滚到白板槽里,停住,笔帽上的小夹子磕在槽边上,响了一声。

"那天抢时间,操作员照表发令,表上没这条,他就没发。"他说,"没人被处分,因为错不在某一个人手里。错在,我们从没设想过这种时候。"

有人问,为什么原来没有这条。

管飞船的老工程师靠在椅背上,想了几秒,手指在扶手上敲了两下。

"因为我们以前所有的失败,都发生在还没分离的时候。"他说,"火箭在下面炸,飞船还在箭上,连自己飞都没开始飞。那种时候,写自救没用——箭都没了,你自救什么。"

他伸手比划了一下,从下往上指,像在空气里画一枚箭。

"所以这艘船的自救逻辑,是按'分离之后一切都好'写的。"他说,"分离成功了,后面它自己来。可六月二十八日那天,是分离之前箭就散了,飞船被甩出来,还在飞,却没人告诉它'你现在得自己活'。"

"我们没给'分离之后出事'写过任何一句。"他说,"一张表,从头到尾,都是'正常的意外'。真正的意外,不在这张表里。"

会议室里有人把那张表揭下来,翻到背面,背面是空白的。他用铅笔在空白处写:"分离后异常——飞船自唤醒。"

写完了,他把纸贴在白板最底下,用磁吸条压好。磁吸条吸上去,啪的一声。

公司创始人、首席执行官兼首席工程师埃隆·马斯克走进来的时候,会已经开了一半。他拉了把椅子坐下,没看人,先看白板上那道红笔线,线拉到中段断在空白处。

"龙不该这么蠢。"他说,"它应该自己活下来。"

句式还是那样,先结论,再补一句。屋里没人接,他也没等谁接,把水瓶放在桌上,瓶底在桌面磕了一下。

"一艘能自己从轨道回来的船,不该因为少了一条上电的命令就沉海里。"他说,"这不是人的错,是人没把船教好。船得自己会。"

"自己会"这三个字,被一个人记在笔记本上,记完把本子合上,本子封面沾着一点咖啡渍。

改法分两步。

第一步,把"救自己"写进流程,也写进代码。下一次飞龙,开伞前的上电,不再靠地面记着发,而是由飞船自己判断——到点,自己通电,自己解锁,自己开。这一套东西,装在下一趟龙的飞行软件里。

软件组那头,一个工程师把新加的几行逻辑敲进编辑器。屏幕上原来那一长串指令里,最前面多了一段,段首写着注释:分离后若未收到正常飞行确认,自行唤醒开伞机构。他盯着那几行看了半天,把注释改了改,去掉一个多余的"若"字。

"下一趟是哪趟?"有人问。

"补给第八次。"管货运的人说,"那趟的龙,带上这套。"

第二步,有人提了一条更狠的。

"能不能让船自己判断——我坐的箭出事了。"一个年轻工程师说,"不用等地面发指令,船自己看遥测,箭一散,它自己进入自救。"

屋里静了一下。这话听着像把飞船变成另一个东西——不是被动的乘客,是能自己认出"载具没了"的活物。有人端起杯子喝水,杯沿碰着牙,发出轻轻的磕声。

"可以试。"马斯克说,"先写最基础的,能自己上电、自己开伞。再往后,让它自己认事故。"

白板上那道红笔线旁边,又加了一行小字:"飞船自主事故识别——待排期。"字是科尼格斯曼写的,笔迹比红笔细,是黑签字笔。

龙飞船项目负责人大卫·吉格把新排的指令序列从打印机里抽出来。纸还热,边角卷着,他用手掌把纸压平,压在桌面上。最前面那行是"给开伞机构上电",他用红笔在那行底下重重描了一道,描得纸面微微凹进去。

"这一行,以前在表里是隐的。"他对旁边那个年轻工程师说,"飞船自己做的,我们不当它是一条命令。现在它得亮出来,亮在最前头。"

年轻工程师凑过去看那道红线。打印机旁边堆着几张废稿,废稿上还是旧的顺序,上电那行夹在中段,不显眼。吉格把废稿拢到一边,和印错的图纸归在一堆。

"下一趟的龙,带上这个。"吉格说,"补给第八次那艘。"

"如果箭又出事呢?"年轻工程师问。

"那它自己开。"吉格说,"不等人。"

他把那张热乎的纸折了两折,塞进文件夹。文件夹合上,夹子咔哒一声。桌上打印机还亮着绿灯,提示纸快没了,他没管。

测试那套自救逻辑,是在一间小屋里做的。一台电脑连着飞船的测试台,测试台上摆着开伞机构的模型,模型不大,巴掌长,外壳是半透明的,能看见里头一根细细的作动杆。工程师在电脑上点"模拟箭体解体",屏幕上的遥测曲线猛地一断,紧接着,模型的作动杆"嗒"一声弹出来——上电、解锁、开伞,三步连着走,没有等地面。

"成了。"盯着模型的人说。

"再跑一遍。"旁边的人说,"跑十遍,十遍都成,才算。"

他们跑了十遍。作动杆十次都弹出来,第十次的时候,有人把椅背往后靠了靠,长出一口气。

会后,走廊里两个人边走边说,脚步声在空走廊里回声很重。

"我们一直以为飞船最大的敌人是天上。"一个人说,"碎片、再入、烧。天上的事,我们防了一层又一层。"

"这一次是在我们自己手里。"另一个人说,"是我们那张表,漏了几行。不是天上的问题,是我们桌上的问题。"

他们走到茶水间,一个人去接水,水龙头开得急,水砸在杯底,溅出来几滴,落在他鞋面上。他没擦,端着杯子往回走,水面上漂着一片不知从哪飘来的茶叶。

"改完就好。"接水的人说。

"改完,等箭。"另一个人说,"箭还得飞。"

改完了。

那套自救的代码,写进了下一趟龙的软件,测试过几轮,没问题。流程表重新排过,最前面多了一条红笔写的"上电",谁看都先看见,再不会像那天一样被跳过。

全箭第三方零件的质量审计,也在同一周启动。审计组借了厂房角落一间小办公室,桌上堆着几只塑料箱,箱里全是供应商寄来的材料证书——一沓沓纸,每张印着一个零件的名字、一个能承受的力、一个日期。证书摞得很高,最上面那张滑出来,掉在桌沿,被人捡回去,塞进缝里。

"这根杆让我们学了乖。"审计组的人说,"证书说行,不等于飞行上行。"

他们把证书一张一张翻,翻到哪张觉得悬,就打个问号,打问号的那叠单独放一边。一边的人身旁放着一叠抽检报告,报告上印着实际拉断的数字,和证书上的数一对,差得远的,用红笔圈出来。

"这根差五倍。"一个人念,"证书一万,实测两千。跟那根杆一个毛病。"

"先记下来。"另一个人说,"回去一家一家问。"

问的过程不轻松。有的供应商回得快,有的拖,有的反问"你们之前不是一直信证书吗"。审计组的人把这类回复也存进文件夹,文件夹名字叫"差点出事的地方"——这是从马斯克那句话里摘的,专收那些证书和实测对不上的零件。

小办公室的灯每天亮到很晚。最后一个走的人关灯之前,会顺手把那几只塑料箱盖上盖,怕证书被夜里的风吹乱。盖盖子的声音闷闷的,像合上一只鞋盒。

可火箭还在停飞。

厂房里那枚准备复飞的箭,还靠墙放着,等二级液氧箱的杆换完,等全箭第三方零件的质量审计走完。改好的东西,没有船可以坐——龙在,软件在,可载它上天的那枚箭,还没被允许离地。

一个管集成的工程师下班前路过总装区,看了一眼那枚箭。箭体竖在支架上,外头裹着一层防尘布,布上落了一层薄灰。他伸手碰了下布角,灰沾在指尖,他甩了甩手,把灰甩到地上,走了。

火箭什么时候能再飞,谁也说不准。

Nilai karya ini

Bab berikutnya