林星晚的拇指落了下去。
第一次点击。屏幕没反应。
第二次。没反应。
第三次。版本号闪了一下,像是什么东西在底层翻了个身。
第四、第五、第六次连续点下去,屏幕表面开始出现极细的裂纹状纹路。不是真的裂了,是界面在变化。那些纹路像是被 heatsink 一样的热量烘烤出来的,从版本号的位置向四周蔓延。
第七次。
屏幕整个暗了。
傅晏在她身后轻声说了句什么,但她没听清。因为下一秒,屏幕重新亮起来
不是APP的界面了。
是代码。
黑底绿字,等宽字体,从头到尾铺满了整个屏幕。林星晚下意识往下滑了一下代码很长,至少有几百行。她扫了一眼开头的注释行:
//情感连接界面 V1.0
//作者:LXW
//创建日期:2018-09-14
LXW。
她的名字缩写。
"这是……"林星晚的声音卡在喉咙里。
她往下翻了几页。代码结构很清晰函数定义、变量声明、主循环逻辑。她一行一行地看,越看越觉得不对劲。
不是看不懂。恰恰相反她太看得懂了。
变量命名习惯、注释的写法、缩进的风格、循环结构的选择甚至那种她在写代码时特有的小癖好都一模一样:她喜欢用"temp_a""temp_b"来命名临时变量,而不是常规的"a""b"。她喜欢在if语句后面加一个空行再写执行体。她喜欢把return语句单独缩进两格。
全对上了。
"傅晏。"她叫了一声,声音有点飘。
"怎么了?"傅晏从她身后探过头来。
"你看这段代码。"
傅晏弯下腰,目光扫过屏幕。他不是程序员,但他看过林星晚写的代码之前调查APP的时候,她给他看过自己的课程项目。
他看了大约十秒,然后直起身。
"这看起来像……你写的。"
林星晚没说话。
"命名风格、注释格式,跟你之前给我看的那个课程项目一模一样。"傅晏说,"你不觉得?"
"我觉不觉得不重要。"林星晚的声音干巴巴的,"事实就是这段代码的作者署名是LXW。我大学时候所有作业都用这个缩写。"
"那你写过这段代码吗?"
"我"林星晚张了张嘴,又闭上了。
她仔细看了下代码的创建日期:2018年9月14日。她大二刚开学那阵子,正好是辅修计算机科学的第一学期。
"我不确定。"她说,"那个学期我写了太多代码了。课程作业、实验报告、期末项目加起来少说有二十几个程序。不是每个我都记得。"
"但这段代码的量不小。"傅晏指着屏幕,"几百行呢。不是随便写个小脚本就能到这个量。"
林星晚没回答他。她在继续往下翻。
代码的中段出现了一个她很眼熟的函数"emotion_classifier"。情感分类器。输入一个情感向量,输出对应的维度标签。这个函数的核心逻辑她在课程项目里用过,但这里的版本更完整,像是她课程项目的"扩展版"。
再往下翻。
代码的底部有一段被注释掉的内容注释符号是手动的"//",不是批量注释。说明是作者主动把这段代码"关掉"了。注释内容是:
//接口预留:当外部信号源频率匹配时,自动激活连接界面
//等待共振核心回调
//LXW,2019-01-03
"接口预留。"林星晚念出声来。
"什么意思?"傅晏问。
"意思是写这段代码的人,在代码里留了一个'接口'。一个跟外部系统对接的接口。"林星晚的手指不自觉地收紧,指甲掐进掌心里,"她预留了跟'共振核心'对接的通道。"
"她?"
"我。"林星晚吞了口唾沫,"2019年1月3日。大三上学期期末。"
傅晏看着她,等她继续说。
林星晚没继续说。她在反复看那段代码翻上翻下,翻上翻下。每看一遍,那种"熟悉感"就更浓一层。不是"好像见过"的那种熟悉,是"这他妈就是我写的"的那种熟悉。就像你听到一段旋律,一开始觉得耳熟,后来突然想起来操,这不是我自己哼过的吗。
"所以APP不是什么神秘系统。"傅晏开口了,"它是"
"共振核心的'用户界面'。"林星晚替他说完,"共振核心是底层引擎。APP是它穿的一层衣服。而这层衣服的'接口代码'"
她指着屏幕上那几行代码。
"是我写的。"
傅晏沉默了几秒。"你大学的时候写的?"
"2018到2019年。大二大三。"林星晚的声音在发抖,她自己都听到了,但控制不住,"我不记得我写过这段代码。但它的编程风格、命名习惯、注释格式全是我。全是我林星晚的。没有第二个人能写成这样。"
她把手机放在桌上,手缩回来。两只手都在抖。
"这是我写的?"她抬头看傅晏,眼眶有点红,"我写的?我怎么不记得?"
傅晏没有立刻回答。他看了一眼屏幕上的代码,又看了一眼林星晚。
"也许你不记得,是因为你写的时候不知道自己在写什么。"他说。
