那是一个复杂的模拟算法,基于大量输入数据进行模式识别和预测。王洋看到了一些熟悉的数学公式,马尔可夫链,贝叶斯推理,还有一些他不认识的算法结构。代码写得很精致,注释详细,变量命名规范,能看出作者水平很高。
“这里,”张伟移动鼠标,光标停在一行代码上,“就是这个循环,迭代1024次后,buffer就溢出了。”
王洋凑近了些,看那行代码。是一个动态内存分配,没问题。循环体内对这块内存进行读写,逻辑看起来也没问题。
“你调试过吗?”王洋问,“设置断点,看看到第1024次时发生了什么。”
“调试不了。”张伟说,声音里有一丝无奈,“程序一进调试模式就崩溃。只能看日志,日志显示到1024次时就报内存错误。”
王洋皱眉。这种情况一般有两种可能:一是真的有内存泄漏或越界访问,二是有外部因素干扰。但看这段代码,写得这么严谨,不像是会有低级错误。
除非……
“你的数据源是什么?”王洋问,“这个算法处理的数据,从哪里来?”
“校园一卡通。”张伟说,“刷卡记录,消费记录,门禁记录。李老师给了我们权限,能访问过去三年的所有数据。”
王洋心里一动。2009年,校园一卡通系统应该还是早期版本,数据量不会太大。但如果是过去三年的所有数据,加上一些实时数据,也许……
“数据量有多大?”他问。
“原始数据大概500G,清洗后剩下200G左右。”张伟说,“我们做了抽样和压缩,最终载入内存的是1G左右的特征矩阵。”
2009年,1G内存对个人电脑来说已经很大了。王洋看向屏幕,突然注意到一个细节——屏幕右下角,系统托盘那里,有一个很小的图标在闪烁,是网络连接状态。但图标显示的是断开状态,和那台电脑一样。
可是,如果网络断开,张伟怎么访问校园一卡通的数据?那些数据应该存储在服务器上,需要网络连接才能获取。
“你现在能访问数据库吗?”王洋问。
“不能。”张伟说,“网络断了,从昨晚就断了。我只能用本地缓存的数据跑测试。”
“那你现在在写什么?如果没有新数据,算法应该跑不起来才对。”
张伟突然沉默了。他放在键盘上的手指微微颤抖,然后握成了拳。
“我在重写数据接口。”他低声说,“李老师说,如果实时数据不行,就用历史数据生成模拟数据。只要算法逻辑正确,演示时用模拟数据也能过关。”
“但这样是造假。”王洋脱口而出。
“我知道。”张伟的声音突然激动起来,“我当然知道!可是明天就要演示了,校领导、公司的人都会来。如果我们拿不出东西,李老师就完了,我们也完了。保研资格,工作机会,全都没了。陈峰想说实话,我骂了他一顿。李想……就是写日记那个,他犹豫,但他最后也同意了。”
李想。王洋想起来,日记的主人叫李想,是三个人中的一个。张伟、陈峰、李想。
“那陈峰呢?”王洋问,“他现在在哪儿?”
张伟又不说话了。这次沉默了很久,久到王洋以为他不会回答了。
“他走了。”张伟最后说,声音很轻,“昨晚走的。他说他受不了了,要去坦白。我和李想拦他,没拦住。他跑出去了,就再没回来。”
“然后呢?”
“然后李老师来了,很生气。他说陈峰背叛了我们,背叛了项目。他说如果我们还想有机会,就继续做,做出来,明天按时演示。”张伟的语气变得空洞,“李想吓坏了,他说他也不行了,要退出。我和他吵了一架,他摔门走了。就剩下我一个人。”
王洋听着,手心里全是汗。他看了一眼门的方向,那扇他打不开的门。
“后来呢?”他问,“你一个人……写完了吗?”
“没有。”张伟说,他突然转过头,第一次正脸看向王洋。
王洋倒抽一口冷气。
张伟的脸比从侧面看更可怕。整张脸都是半透明的,皮肤下的血管清晰可见,但不是红色的,是暗蓝色的,像电路板上的走线。他的眼睛是浑浊的灰白色,没有瞳孔,但王洋能感觉到他在“看”自己。
“我没有写完。”张伟说,他的嘴唇几乎没动,声音却清晰地传出来,“因为就在那天晚上,出事了。”
“什么事?”
“机房着火了。”张伟说,他的声音突然变得很遥远,像是在回忆很久以前的事,“我不知道怎么起的火,可能是电路老化,可能是设备过热。等我闻到烟味时,火已经很大了。我想跑,但门打不开,和现在一样。窗户是封死的,李老师说为了保密,把这间机房的窗户都封了。我喊救命,但没有人听见。烟越来越浓,我趴在地上,爬到门口,用尽最后力气砸门,但没用……”
他停了下来,那双灰白色的眼睛盯着王洋。
“然后呢?”王洋听见自己问,声音在颤抖。
“然后我死了。”张伟平静地说,“2009年6月16日凌晨,我在机房621被烧死。三天后他们才找到我的尸体,烧得几乎认不出来了。李老师压下了这件事,说是意外,赔了我家一笔钱。项目终止了,所有数据封存,这间机房从此关闭,再没有人用过。”
王洋腿一软,扶住桌子才没摔倒。他的大脑在疯狂运转,试图消化这些话。2009年,火灾,一个学生死在机房。机房关闭,被封存。但为什么十四年后,他还能进来?为什么这间机房还在?为什么……
“那台电脑。”王洋突然明白了,他看向门口那台他用过的电脑,“那台电脑,是你用的?”
“是我死前用的最后一台。”张伟说,“我的意识,或者说我的灵魂,被困在了里面。和这个算法,和这些代码,困在了一起。这些年,我一直在调试,试图找出那个bug,完成这个项目。但我出不去,我只能在每天晚上,当有人打开这台电脑时,我才能……显形,就像现在。”
王洋感到一阵眩晕。这一切太荒谬了,超出了他的理解范围。但眼前这个半透明的人,这间诡异的机房,那台能用的电脑,还有电脑里2009年的日记,所有这些拼在一起,指向一个不可能但不得不信的解释。
“那我为什么会在这里?”王洋问,“我只是来找个地方写作业,我根本不知道这间机房的事,我……”
“因为你在用那台电脑。”张伟打断他,“当你按下开机键,连接就建立了。你的意识,你的思维,和这台电脑,和这个算法,和我,产生了连接。你以为你在写你的作业,其实你也在帮我调试。”
“帮你调试?”
“对。”张伟的嘴角似乎牵动了一下,像是一个苦涩的笑,“你写的那些代码,那些逻辑,无意中触及了这个算法的核心。你在解决一个我十四年都没解决的问题。所以我把你留下了,我需要你帮我。”
王洋终于明白了。为什么他的编程作业能在这台老旧的XP电脑上编译运行,为什么他写得那么顺利,为什么一抬头就过了午夜十二点——他写的根本不是自己的作业,至少不完全是。他的思维被引导了,被干扰了,他在不知不觉中,在为这个2009年的幽灵项目写代码。
“你要我帮你完成这个算法?”王洋问。
“是的。”张伟说,“完成后,我就能解脱了。这个执念就能放下,我就能……离开。”
“那如果我帮你完成了,我能离开吗?”
张伟沉默了片刻。这个沉默让王洋的心沉了下去。
“我不知道。”张伟最后说,“这些年,你是第一个进来的人。以前也有人误入,但他们看到灯坏了,电脑开不了,就都走了。只有你,你留下来了,你还打开了那台电脑。所以我不知道,你如果帮我完成了,你会怎么样。也许能离开,也许……会和我一样。”
王洋感到一阵恶寒。和他一样?困在这间机房十四年?不,他不要。
“那我拒绝。”王洋说,他往后退,朝门的方向移动,“我不帮你,我要离开,现在就要离开。”
“你走不了的。”张伟说,他的声音突然变得冰冷,“门从你进来的那一刻就锁死了。除非我完成算法,否则谁也出不去,你也一样。”
“那就毁掉电脑!”王洋转身冲向门口那台电脑,他想拔掉电源,想砸了它,想用任何方式切断这个连接。
但他还没跑到,机房里的灯又闪了一下。
这次不是暗红色的光,而是刺眼的白光,从天花板,从墙壁,从每一台电脑的屏幕里迸发出来。王洋被强光刺得睁不开眼,他用手臂挡住眼睛,听到周围响起无数个声音——
键盘敲击声,鼠标点击声,风扇转动声,还有低语声,很多人的低语声,混在一起,听不清在说什么。
光芒持续了几秒,然后骤然消失。
王洋放下手臂,睁开眼睛。机房又恢复了黑暗,只有他的手电筒还亮着,光束在灰尘中划出一道轨迹。
张伟还坐在那里,背对着他,双手放在键盘上。
但这一次,不止张伟一个人。
在每一台电脑前,都坐着一个人。三十台电脑,三十个人。他们都穿着深色衣服,背对着王洋,身体半透明,在屏幕光的映照下发出幽暗的光。所有人都保持着同样的姿势:双手放在键盘上,眼睛盯着屏幕,屏幕上是滚动的代码。
键盘敲击声从四面八方响起,咔、咔咔、咔……此起彼伏,像一场诡异的交响乐。