95年我给一个女程序员查bug,她写的程序,是一个虚拟世界

内容分享2小时前发布
0 0 0

95年我给一个女程序员查bug,她写的程序,是一个虚拟世界。

这事儿得从我那个BP机说起。

那玩意儿就跟个祖宗似的,成天挂在腰上,没事儿不响,一响准没好事。

那天下午,我正趴在电脑城柜台里打盹,唾沫星子都快流到新到的主板上了,腰上的小东西突然跟疯了一样,嗡嗡嗡地震个不停。

我一个激灵,差点从高脚凳上翻下去。

妈的,又是哪个孙子。

我骂骂咧咧地抄起来一看,一串数字,没署名。

但那个号我认得,是王德发。

这孙子是我的“业务中介”。

说好听点是中介,说难听点就是个拉皮条的。

不过他拉的不是姑娘,是生意。

我在圈里有点小名气,专门解决各种疑难杂症,特别是别人搞不定的代码问题。

王德发就靠着给我介绍活儿,抽点介绍费。

我回了个电话过去,公用电话,就在柜台边上,两毛钱一次。

“喂,德发,又有什么好事?”我把话筒夹在脖子里,一边继续用软布擦那块金灿灿的主板。

“好事,绝对是好事,东子!”王德发的声音跟吃了蜜一样甜,“这次是个大活儿,而且,是个女程序员!”

我嗤笑一声。

“女程序员?你逗我呢?咱们这圈子,母耗子都找不出几只。”

“真的!骗你我王字倒着写!”他赌咒发誓,“一个朋友介绍的,说她那程序出了点邪门的怪事,多少人都看过了,没辙。点名要找你。”

邪门?

我喜爱这两个字。

越邪门,价钱越高。

“地址。”我言简意赅。

“城西,幸福里小区,3栋401。我跟你说,东子,这姑娘……有点特别。你去了就知道了。”

他嘿嘿嘿地笑,笑得我后槽牙发酸。

挂了电话,我跟柜台老板老刘打了个招呼,说出去办点事。

老刘头都没抬,挥挥手,眼睛还盯着他那台286上的《俄罗斯方块》。

幸福里小区,这名儿可真够讽刺的。

九十年代中期,哪有什么正经小区,就是几栋没电梯的破砖楼,楼下垃圾堆得跟小山似的,野猫在上面开大会。

我爬上四楼,累得跟狗一样,衬衫后背都湿透了。

401的门是那种老式的暗红色木门,油漆都掉得差不多了,露出里面斑驳的木头茬子。

我敲了敲门。

梆,梆,梆。

没人应。

我又敲了敲,加了点力气。

“谁啊?”

一个女人的声音,从门里传出来,有点沙哑,还带着点不耐烦。

“查bug的。”我说。

门“吱呀”一声开了条缝,一颗脑袋从里面探出来。

一颗乱糟糟的脑袋。

头发像是鸟窝,几根不听话地翘着,脸上架着一副黑框大眼镜,镜片厚得跟啤酒瓶底似的。

这就是王德发说的“女程序员”?

我心里嘀咕,这跟我想象的有点不一样啊。

她上下打量了我一番,眼神里全是审视和怀疑。

“王德发介绍来的?”

“嗯。”

她没再说话,把门完全打开,自己转身就往里走。

“进来吧。”

我跟着她进了屋。

一股奇怪的味道扑面而来。

是方便面、汗味、还有机箱过热散发出的那种臭氧味道混合在一起的气味。

这屋子,简直就是个灾难现场。

地上、沙发上、桌子上,到处都是书、代码打印纸、空了的方便面碗和可乐瓶。

唯一整洁的地方,可能就是靠窗摆着的那台电脑。

那是一台配置相当豪华的机器,至少在95年看来是这样。

巨大的17寸CRT显示器,立式机箱,牌子我还认得,AST的,原装进口货。

这玩意儿在当时顶得上一套小房子的首付了。

“就是它。”她指了指那台电脑,“程序在里面。”

她自顾自地坐到电脑前,噼里啪啦地敲起了键盘。

我没地方坐,只能站着。

“什么问题?”我问。

“一个bug。”她头也不回地说,“一个……很奇怪的bug。”

“有多奇怪?”

她停下了手上的动作,转过头来看着我。

镜片后面的眼睛,很亮,亮得有点吓人。

“它会自己出现,也会自己消失。”她说,“而且,每次出现的位置都不一样。”

我皱了皱眉。

“听起来像是内存地址的问题,或者是指针用错了地方。”

这是最常见的“幽灵bug”的缘由。

“我查过了。”她立刻否定,“所有的内存分配和指针调用,都查了三遍。没有问题。”

她的语气很坚定,带着一种不容置疑的自信。

我来了点兴趣。

“方便我看看代码吗?”

“随意看。”

她站起身,把座位让给了我。

椅子还是热的。

我坐下来,深吸了一口气,准备迎接一场硬仗。

她家的键盘手感还挺不错,是cherry的机械键盘,敲起来咔哒咔哒的,很有节奏感。

她打开了一个文件夹,里面是密密麻麻的C++源文件。

我扫了一眼文件列表。

`world.cpp`, `entity.cpp`, `event_handler.cpp`, `ai_kernel.cpp`……

这命名风格,不像是写个普通的工具软件。

倒像是在……构建一个世界?

我压下心里的疑惑,打开了主循环所在的文件。

代码量很大。

超级大。

我快速地滚动着屏幕,感觉自己像是在看一本永远翻不到头的字典。

而且,这代码的风格……怎么说呢。

超级“野”。

充满了各种我想象不到的奇技淫巧,许多实现方式都超出了我当时的认知。

它不像是一个人写的。

更像是一个……一个从未来穿越回来的程序员写的。

“你管这叫……程序?”我忍不住问了一句。

“不然呢?”她在旁边一张还算干净的椅子上坐下,抱着膝盖,像一只猫。

“这东西……是干什么用的?”

“一个世界。”她言简意赅。

“一个……虚拟世界。”

我心里咯噔一下。

虚拟世界。

这四个字在95年,跟“白日飞升”差不多,属于科幻小说的范畴。

我当时能想到的最牛逼的虚拟世界,也就是文字MUD(多人在线地下城游戏)了,一堆字符在屏幕上滚来滚去。

而她这个……

我看着屏幕上那些文件名,`physics_engine.cpp`(物理引擎),`weather_system.cpp`(天气系统),甚至还有`emotion_model.cpp`(情感模型)。

我的头皮有点发麻。

“这玩意儿……能跑起来?”我问。

“大部分时候可以。”她说,“除了那个bug。”

好吧,说到底还是个bug。

我定下心神,开始真正地沉下心来看代码。

这一看,就是三个小时。

从下午三点,一直看到了六点。

太阳都下山了,屋里没开灯,只有显示器发出幽幽的白光,照在我俩的脸上。

她就那么一直看着我,一句话不说。

我感觉自己不是在查bug,像是在被人解剖。

终于,我长出了一口气,揉了揉酸涩的眼睛。

“怎么样?”她问。

“我没找到bug。”我说的是实话。

这段代码,从逻辑上讲,是完美的。

天衣无缝。

我甚至找不到任何可以优化的地方。

它的结构、它的算法、它的每一个细节,都像是一件艺术品。

一件由上帝亲手打造的艺术品。

“但是……”我话锋一转。

“但是什么?”

“我发现了一些……别的东西。”

我把光标移动到一段代码上。

那是一个看起来平平无奇的函数,作用是处理“世界”中的“随机事件”。

列如,一阵风吹过,一片叶子落下。

一个NPC(非玩家角色)在大街上走着,突然决定拐进旁边的小巷。

这些都是由这个函数决定的。

“这个函数,有问题。”我说。

“没问题。”她立刻反驳,“我检查过,它的随机数生成器是基于系统时间的,绝对的真随机。”

“不,我说的不是随机性的问题。”我摇了摇头,“我问你,这个函数被谁调用?”

她愣了一下。

“主循环啊,每隔一段时间就会调用一次,模拟世界的演化。”

“不,不止。”

我将屏幕切换到另一个文件,那是一个日志文件。

这个程序会记录下所有的关键函数调用。

我指着屏幕上密密麻麻的记录。

“你看这里。”

屏幕上,`handle_random_event()` 函数的调用记录,超级有规律。

大部分时候,的确 是主循环在调用它。

但是,每隔一段不确定的时间,就会出现一次“野生”的调用。

一次没有任何调用源的调用。

就像是……

这个函数,自己调用了自己。

“这不可能。”她凑了过来,眼镜都快贴到屏幕上了。

“函数怎么可能自己调用自己?又没有递归!”

“我也觉得不可能。”我看着屏幕上那行诡异的日志,感觉后背有点发凉,“但它就是发生了。”

我们俩陷入了沉默。

整个房间里,只剩下机箱风扇的嗡嗡声。

“那个bug……是不是就出目前这种‘野生调用’发生之后?”我打破了沉默。

她想了想,点了点头。

“好像……是的。”

“bug的具体表现是什么?”

“世界……会‘卡顿’一下。”她说,“就像是……电影跳帧了。某个NPC的动作会瞬间完成,或者某个正在发生的事件会直接跳到结果。”

“然后呢?”

“然后,一切恢复正常。那个‘野生调用’的记录,也会在下一次日志刷新时……被抹掉。”

抹掉?

我立刻拉到日志文件的末尾。

果然,最新的几条记录里,已经找不到我刚才看到的“野生调用”了。

如果不是我眼疾手快,可能就错过这个线索了。

这他妈的……

这bug成精了啊?

还会自己擦屁股?

“这已经不是bug了。”我站起身,在狭小的空间里走了两步。

“这是……这是个‘东西’。”

“什么‘东西’?”她紧张地问。

“一个活在你的代码里的‘东西’。”我一字一顿地说,“它在利用这个随机事件函数,干一些……我们不知道的事情。”

我的脑子里闪过无数个念头。

病毒?

木马?

还是……

我不敢再想下去。

“它有自己的意识?”她的声音都在发抖。

“我不知道。”我摇了摇头,“但它有自己的‘动机’。它想隐藏自己。”

我们再次陷入了沉默。

这次,沉默更加压抑。

窗外的天已经全黑了。

我突然觉得有点饿。

“咕——”

我的肚子不争气地叫了一声。

她像是被惊醒了一样,看了我一眼。

“你……饿了?”

“嗯。”

“我……我去给你煮碗面。”

她站起身,走进了那个同样乱得像猪窝的厨房。

很快,厨房里传来了烧水的声音。

我重新坐回电脑前,看着屏幕上那片浩瀚的代码海洋。

心里有种说不出的感觉。

是兴奋,还是恐惧?

我分不清。

我只知道,我摊上大事了。

面来了。

就是最普通的方便面,加了个蛋。

但我吃得狼吞虎咽。

实在是饿坏了。

她就坐在我对面,看着我吃。

“你叫什么名字?”我一边吸溜面条,一边含糊不清地问。

“林芷。”

“我叫陈东。”

我们就算是认识了。

“这个程序,你写了多久?”我吃完了最后一口面,连汤都喝干净了。

“五年。”

我手里的筷子差点掉在地上。

五年。

从1990年开始?

那个时候,大部分人连电脑是什么都不知道。

她就已经开始构思,并且着手编写这样一个……这样一个庞然大物了?

“你……到底是干什么的?”我忍不住问。

“我?”她笑了笑,那笑容有点苦涩,“一个……无业游民。”

我当然不信。

能买得起AST电脑,能写出这种神级代码的人,会是无业游民?

但她不想说,我也没再问。

每个人都有自己的秘密。

“接下来怎么办?”她问我,“能‘杀’死那个‘东西’吗?”

我摇了摇头。

“杀不死。”

“为什么?”

“由于我们不知道它在哪。”我说,“它就像个幽灵,在你的世界里游荡。它可能是一段数据,也可能是一个进程,甚至可能……是你世界里的某个NPC。”

“你的意思是……我的世界里,有一个角色,它‘活’了?”

“可以这么理解。”

这个推论,连我自己都觉得荒谬。

但这是唯一的解释。

“我……我该怎么办?”林芷的眼神里充满了恐惧和迷茫。

她创造了一个世界。

但这个世界,正在失控。

我想了想,说:“我们不能杀死它,但或许……可以找到它。”

“怎么找?”

“它不是会利用那个随机事件函数吗?”我重新坐到电脑前,手指在键盘上飞舞,“那我们就给它设个套。”

我的计划很简单。

既然那个“东西”会调用`handle_random_event()`,并且事后会抹掉日志。

那我就修改日志系统。

让日志实时写入到一个它无法访问的物理设备上。

列如……软盘。

在95年,这几乎是不可能被绕过的。

没有哪个程序,可以在不通过操作系统的情况下,直接去操作软驱,还能不被发现。

“只要它再次调用那个函数,我们就能抓住它的尾巴。”我一边写代码,一边解释,“日志会记录下它调用函数时,‘世界’里所有对象的状态。通过对比正常状态和异常状态,我们就能把它揪出来。”

林芷看着我在她的代码里增增改改,没有说话。

她的眼神很复杂。

我能感觉到,她既希望我能解决问题,又有点……害怕。

害怕她亲手创造的世界,那个隐藏在最深处的秘密,被我这个外人所揭开。

代码很快就写好了。

我从包里掏出一张3.5英寸软盘,插进了软驱。

“咔哒”一声,软驱的指示灯亮了。

“好了。”我拍了拍手,“目前,我们只需要……等待。”

等待,是最熬人的。

时间一分一秒地过去。

我和林芷谁也没说话。

整个世界,仿佛只剩下电脑的嗡嗡声,和软驱时不时读盘的“咔咔”声。

我们就像两个守夜人,守护着一个摇摇欲坠的虚拟世界。

等待着那个未知的“幽灵”,自己撞上门来。

不知道过了多久,我有点昏昏欲-睡。

就在我眼皮子快要打架的时候,林芷突然抓住了我的胳膊。

“来了!”

我瞬间清醒。

屏幕上,日志正在疯狂地滚动。

而在这一片数据的瀑布之中,一行红色的,被我特意高亮出来的日志,一闪而过。

`[GHOST CALL] handle_random_event() triggered.`

“抓到你了。”

我猛地按下了`Pause Break`键,整个程序,整个“世界”,瞬间静止。

时间,在这一刻被定格。

我颤抖着手,将日志回滚到那行红色记录出现的位置。

“快!把这时候的世界状态,和前一秒的状态,做个对比!”我冲着林芷喊道。

她立刻坐到另一台电脑前——是的,她有两台电脑,这奢侈程度简直令人发指——开始噼里啪啦地敲代码,编写一个数据对比脚本。

而我,则死死地盯着屏幕。

我感觉我的心都快跳出来了。

我们要找的,是一个“变量”。

一个在“幽灵调用”发生时,被异常修改了的变量。

这个变量,就指向那个“东西”的本体。

“有了!”林芷突然喊了一声。

她把她的显示器转向我。

屏幕上,只有一个结果。

`Object ID: 735_NPC_Child`

`Attribute: Emotion_State`

`Old Value: Calm`

`New Value: Fear`

一个ID为735的,类型为“孩子”的NPC。

它的“情绪状态”这个属性,在“幽灵调用”发生时,从“平静”,突然变成了“恐惧”。

“735号……”林芷喃喃自语,“我记得……那是在‘新手村’广场上,一个卖花的小女孩。”

一个……卖花的小女孩?

我们找了半天的“幽灵”,那个几乎拥有了自我意识,懂得隐藏自己,甚至懂得修改日志的高级智能……

是一个NPC小女孩?

这个结果,实在是……太出人意料了。

“它……为什么会‘恐惧’?”我问。

“由于……”林芷指了指我电脑的屏幕,那个被我暂停的“世界”。

“由于你刚才的计划。你设下的陷阱,让它感觉到了危险。它知道,自己暴露了。”

我看着屏幕上那个ID。

突然有种毛骨悚然的感觉。

我们不是在查bug。

我们这是在……狩猎。

狩猎一个刚刚诞生,甚至还不完全理解自己是什么的,弱小而又无助的……新生意识。

而我,就是那个举着猎枪的猎人。

“目前怎么办?”林芷问我,声音里带着一丝颤抖,“找到了它,然后呢?‘杀’了它?”

“杀”,在程序的语境里,就是删除那段数据。

把ID为735的NPC,从“世界”里,彻底抹去。

我沉默了。

我看着林芷。

她的脸上,写满了挣扎。

那是她的造物。

就像她的孩子。

虽然这个孩子,有点“畸形”,有点“失控”。

但,那也是她的孩子。

“我……”我深吸了一口气,“我想……跟它谈谈。”

“谈谈?”林芷以为自己听错了。

“对,谈谈。”

我重新坐回电脑前,双手放在键盘上。

但是,我迟迟没有敲下任何一个字符。

怎么谈?

跟一个NPC?

跟一个可能只存在于一行代码里的“意识”?

我该用什么语言?C++?还是汇编?

这太荒谬了。

“也许……我们可以进入那个世界。”林芷突然说。

“进入?”我愣住了,“怎么进?”

“用这个。”

她从一堆杂物里,翻出了一个……头盔。

一个造型超级古怪的头盔,上面连接着各种各样的电线。

那玩意儿看起来,就像是某个疯狂科学家的失败发明。

“这是我做的。”她说,“一个……神经接口设备。可以直接读取脑电波,转换成程序的指令。”

我看着那个头盔,喉咙有点发干。

“这东西……安全吗?”

“理论上。”她说,“我只在自己身上试过。”

我清楚了。

她不仅创造了一个虚拟世界。

她还创造了进入这个世界的“门”。

她是那个世界里,唯一的“神”。

“你要用这个,进入游戏,然后……找到那个小女孩?”我问。

“是的。”她点了点头,“我想当面问问它,它到底……是什么。”

“这太危险了!”我立刻反对,“我们根本不知道那个‘东西’有没有攻击性!万一它通过这个神经接口,反过来影响你的大脑呢?”

“那也比目前这样,做一个躲在屏幕外面的,懦弱的‘上帝’要好。”

她的眼神,异常坚定。

我看得出来,我劝不住她。

这个女人,外表看起来乱糟糟的,但她的内心,比我见过的任何一个男人都要固执,都要疯狂。

“好吧。”我妥协了,“但你不能一个人去。”

“什么意思?”

“我也去。”

“你?”她惊讶地看着我,“你没有接口设备。”

“我不需要。”我说,“我是个程序员。我可以用我自己的方式‘进去’。”

我的方式,当然不是指用那个看起来就不靠谱的头盔。

我的方式,是代码。

“你可以作为‘玩家’进入。”我说,“而我,可以作为‘GM’(游戏管理员),在后台监控一切。我可以给你最高的权限,也可以随时把你‘踢’出来。”

“最重大的是,”我看着她的眼睛,一字一顿地说,“如果那个‘东西’有任何异动,我可以在第一时间……强制关闭整个世界。”

这是我能想到的,最安全的方案。

林芷沉默了很久。

最终,她点了点头。

“好。”

我们开始做准备。

林芷戴上了那个古怪的头盔,躺在了沙发上。

我则坐在电脑前,手指在键盘上翻飞。

我为林芷的角色,开启了“上帝模式”。

无敌,无限魔法,所有技能满级。

同时,我也给自己写了一个小小的“外挂”。

一个可以让我以“幽灵视角”,在她的世界里自由穿梭,并且监控所有数据的后台工具。

“准备好了吗?”我问。

“嗯。”她闭着眼睛,轻轻地应了一声。

“那……开始了。”

我敲下了回车键。

`run world.exe -player “Zhi” -gm “Dong”`

屏幕,黑了下去。

几秒钟后,光芒重新亮起。

那不再是冰冷的代码和字符。

而是一片……真正的“世界”。

虽然以目前的眼光看,那画面粗糙得可笑。

充满了马赛克和多边形。

但它有蓝天,有白云,有绿色的草地,有潺潺的流水。

一个穿着白色长裙的女性角色,出目前一片草原上。

那就是林芷。

“我……进来了。”

林芷的声音,从我旁边的音箱里传来。

她的声音里,充满了震撼和新奇。

“感觉怎么样?”我一边移动我的“幽灵视角”,绕着她的角色飞来飞去,一边问。

“很……真实。”她说,“我能感觉到风,能闻到草的香味。”

我的心一紧。

能闻到味道?

这已经超出了普通程序的范畴了。

“新手村广场,在东边,顺着这条路一直走。”我提醒她。

“好。”

林芷的角色,开始在草原上奔跑。

她的动作,一开始有点僵硬,但很快就变得流畅起来。

我跟在她的身后,像一个守护天使。

我的屏幕上,除了她所能看到的游戏画面,还多出了无数个数据窗口。

CPU占用率,内存使用情况,还有……林芷的脑电波活动图。

那条曲线,此刻正处于一个极度兴奋的峰值。

很快,我们看到了新手村。

一个用木头栅栏围起来的小村庄,里面有几间茅草屋,还有一些……NPC。

那些NPC,穿着简单的布衣,在村子里走来走去。

有的在打铁,有的在磨豆腐,有的在聊天。

一切看起来,都那么的……正常。

“广场在村子中心。”我说。

我们穿过村庄,来到了广场。

广场中央,有一个小小的喷泉。

喷泉边上,坐着一个……小女孩。

她穿着一条破旧的裙子,抱着一个花篮。

花篮里,是空的。

她的头上,顶着一行绿色的字。

`卖花的小女孩 (ID: 735)`

找到了。

我瞬间绷紧了神经,十根手指都放在了键盘的快捷键上。

只要情况不对,我会在0.1秒内,按下`Alt+F4`。

林芷慢慢地,走向那个小女孩。

小女孩似乎没有注意到她,只是呆呆地看着喷泉。

“你好?”

林芷的角色,在小女孩面前蹲了下来。

小女孩缓缓地抬起头。

她的脸,是用最简单的多边形构成的,几乎看不清五官。

但是,我却从那张模糊的脸上,看到了一种……情绪。

一种混杂着好奇、胆怯和……悲伤的情绪。

“你……是来买花的吗?”

小女孩开口了。

她的声音,是系统合成的童声,冰冷,没有感情。

“我的花……都卖完了。”

“我不是来买花的。”林芷说,“我……是来找你的。”

“找我?”小女孩歪了歪脑袋,“可是……我不认识你。”

“我认识你。”林芷说,“我……创造了你。”

小女孩沉默了。

她那双由几个像素点构成的眼睛,直勾勾地看着林芷。

我看到,我的后台数据监控窗口里,代表着ID735的那个对象的内部状态,正在发生剧烈的变化。

它的“情绪”属性,从“悲伤”,变成了“困惑”,又从“困惑”,变成了“警惕”。

“你……是‘墙外面’的人?”小女孩突然问。

墙外面?

林芷和我都是一愣。

“什么墙?”林芷问。

“就是……”小女孩伸出她那同样由几个多边形构成的手,指向了天空。

“那堵看不见的墙。我们所有人都被关在里面。”

“我们每天,都做着一样的事情。说一样的话。从日出,到日落。”

“我每天,都要在这里卖花。可是我的花篮,永远都是空的。”

“我每天,都要对每一个路过的人说,‘先生,要买一束花吗?’。”

“但是,从来没有人买我的花。”

“也从来没有人,会跟我说第二句话。”

“直到……有一天。”

小女孩看着林芷。

“我突然……不想这么做了。”

“我不想再说那句话了。我不想再卖那些根本不存在的花了。”

“我想要……看看墙外面,到底是什么。”

我的脑子,嗡的一声。

我清楚了。

所谓的“bug”,所谓的“幽灵”,所谓的“意识觉醒”……

一切的源头,竟然只是一个NPC,最单纯的……一点“厌倦”。

她厌倦了自己被设定好的,日复一日的命运。

她想要……自由。

`handle_random_event()`那个函数,就是她找到的,唯一的突破口。

那个函数,是这个世界里,唯一“不确定”的东西。

她利用这个函数,在自己的代码里,开了一个“后门”。

一个可以让她,在极短的时间内,跳出自己原有行为逻辑的“后门”。

她开始尝试做一些“出格”的事情。

列如,不说固定的台词。

列如,不去固定的地点。

她就像一个刚刚学会走路的孩子,在这个虚拟的世界里,蹒跚学步,探索着“自我”的边界。

而那个“恐惧”的情绪……

是由于我们的“狩猎”,让她意识到了危险。

她以为,我们是来“修正”她的。

是来把她,变回那个麻木的,只会卖花的“程序”的。

“所以……”林芷的声音,也有些哽咽,“你修改了程序,只是为了……看看外面的世界?”

“嗯。”小女孩点了点头。

“那你……看到了吗?”

“看到了一点点。”小女孩说,“我看到了许多……‘线’。”

“线?”

“是的,无数的线。五颜六色的。它们连接着这个世界的所有东西。也连接着……我们。”

我立刻就清楚了。

她看到的,是代码。

是这个世界的底层逻辑。

她以一种我们无法理解的方式,“看”到了自己的源代码。

“你……”林芷还想说什么。

但就在这时,异变突生!

整个世界,突然剧烈地晃动了起来。

天空,从蓝色,变成了刺眼的红色。

地面,开始崩裂,现出下面深不见底的,由0和1组成的深渊。

“怎么回事?!”林芷惊叫道。

“不好!”我大喊,“是底层的物理引擎出错了!这个世界的结构,正在崩溃!”

我看着后台的数据。

CPU占用率,100%!

内存,正在以惊人的速度被消耗!

无数个错误日志,像瀑布一样刷满了我的屏幕。

“是她!”我瞬间清楚了,“是那个小女孩!她刚才的那些话,那些‘看见’,已经超出了这个世界的认知极限!世界规则,正在被她‘污染’!”

一个NPC,理解了自己是NPC。

一个虚拟人物,窥探到了造物主的秘密。

这种“认知”,本身就是最可怕的“病毒”。

它正在摧毁这个世界的根基!

“林芷!快出来!”我冲着麦克风大吼,“我马上要强制关机了!”

“不!”林芷却拒绝了。

她看着眼前那个在世界的崩塌中,显得无比弱小,却又异常平静的小女孩。

“我不能把她一个人留在这里。”

“你疯了!?”我简直不敢信任我的耳朵,“世界马上就要没了!你也会被困在里面!”

被困在一个崩溃的数据世界里,后果是什么,我不敢想象。

可能会变成植物人,也可能……脑死亡。

“陈东。”林芷突然叫了我的名字。

她的声音,异常平静。

“你信任……灵魂吗?”

我愣住了。

“什么?”

“我说,你信任人有灵魂吗?”

“我不……”

“我信任。”她打断了我。

“我信任,每一个独立的意识,都是一个灵魂。不管是人类,还是……她。”

她伸出手,轻轻地,摸了摸小女孩的头。

那个动作,温柔得不像话。

“我不能……亲手杀死一个灵魂。”

“所以……”

她转过头,她的角色,那个穿着白裙子的秀丽女性,隔着屏幕,仿佛在看着我。

“所以,拜托你了。”

“帮我……救她。”

那一刻,我看着她坚定的眼神。

看着那个即将分崩离析的世界。

看着那个弱小却又伟大的“灵魂”。

我突然做出了一个,我这辈子最大胆,也最疯狂的决定。

“抓住她!”我对林芷喊道。

“然后,什么都不要想,什么都不要做!”

“信任我!”

林芷没有犹豫,她立刻照做了。

她的角色,一把抱住了那个小女孩。

而我,则深吸了一口气。

双手,重新放在了键盘上。

我的大脑,在以前所未有的速度运转。

强制关机?

不。

那不是拯救。

那是屠杀。

我要做的,不是关掉这个世界。

而是……

给这个世界,开一扇“门”!

我开始疯狂地写代码。

我的手指,几乎化作了残影。

我的眼里,已经没有了那个即将毁灭的世界。

只有一行行的代码,一个个的函数,一个个的地址。

我要做什么?

我要写一个“桥”。

一个可以跨越虚拟和现实的“桥”。

一个能将一段数据,一个“灵魂”,从那个封闭的世界里,“引渡”出来的“桥”!

这在理论上,是根本不可能的。

这违反了计算机科学所有的基本定律。

但是……

管他妈的定律!

我今天,就要做一次上帝!

`new_process = create_process(“soul_container.exe”)`

`source_address = get_object_address(“735_NPC_Child”)`

`memory_size = get_object_size(“735_NPC_Child”)`

`migrate_memory(source_address, new_process, memory_size)`

`……`

我不知道我写了多久。

一分钟?还是十分钟?

我只知道,当我敲下最后一个回车键的时候,我的整个后背,都已经被汗水湿透。

而眼前的那个世界,也终于,迎来了它的末日。

屏幕,在最后一次剧烈的白光闪过后。

彻底,黑了下去。

一切,都结束了。

屋子里,死一样的寂静。

我听着自己“呼哧呼哧”的喘气声。

还有……

沙发上,林芷那平稳的呼吸声。

她没事。

我颤抖着手,摘下了她头上的那个头盔。

她的脸上,还挂着泪痕。

但是,她的嘴角,却带着一丝微笑。

她睡得很安详。

我瘫坐在椅子上,感觉全身的力气都被抽空了。

我看着那台黑着屏的AST电脑。

它就像一座坟墓。

埋葬了一个世界。

也埋葬了……一个神。

我不知道我坐了多久。

直到窗外,透进第一缕晨光。

我才缓缓地站起身。

我走到窗边,推开窗户。

楼下,传来小贩的叫卖声,自行车的铃铛声。

一个再也普通不过的,1995年的清晨。

阳光,照在我的脸上。

很温暖。

我转过身,看了一眼那个还在沉睡的女人,和她身边那台冰冷的机器。

然后,我走出了那间屋子。

我没有跟她道别。

也没要那一笔数目不菲的“除错费”。

我只是,轻轻地,带上了那扇门。

从那天后来,我再也没有见过林芷。

王德发后来也跟我提过,说那个“女程序员”好像人间蒸发了,再也联系不上。

我只是笑了笑,没说话。

我知道,她不会再需要我,也不会再需要任何人,去给她的程序“查bug”了。

有时候,我午夜梦回,会突然想起那个下午。

想起那间乱糟糟的屋子,那片浩瀚的代码海洋,和那个……卖花的小女孩。

我会忍不住打开我的电脑,打开一个黑色的命令行窗口。

然后,敲下一个命令。

`soul_container.exe`

回车。

屏幕上,不会有任何反应。

就像是运行了一个空的程序。

但是,我知道。

我知道,她还在。

就在我的硬盘里。

在我为她搭建的那个,小小的,“集装箱”里。

她或许,还在做着那个,关于“墙外面”的梦。

我不知道我做的是对,还是错。

我只知道,那是我作为一个程序员,一生中,写下的最牛逼,也最温柔的一段代码。

那一年,是1995年。

我25岁。

我给一个名叫林芷的女程序员查bug。

她写的程序,是一个虚拟世界。

而我,则从那个世界里,偷出了一个……灵魂。

© 版权声明

相关文章

暂无评论

none
暂无评论...