楔子:未关闭的进程北京,后厂村。深夜十一点四十七分,
林辰眼前的四块显示器还亮着三块。左边是服务器监控曲线,中间是层层叠叠的代码窗口,
右边是永远闪烁的企业微信。会议室玻璃墙外,这座中国互联网心脏地带的灯光永不疲倦。
路灯是晚归者的坐标,写字楼的格子间是梦想的墓志铭——至少林辰的同事甲是这么说的。
“辰哥,真不走啊?你家猫该造反了。”同事甲拎着背包站在门口,
脸上是标准的大厂倦容——眼袋比才华突出,发际线比职级清晰。“马上。”林辰没抬头,
手指在机械键盘上敲出细密的声响,像雨打芭蕉,“还有个边界条件没处理完。
”“又是‘边界条件’。”同事甲摇头,“你这边界条件从去年处理到今年,
从朝阳处理到海淀。知道的你写代码,不知道的以为你在修长城。”林辰终于停手,
转了转僵硬的脖颈,发出轻微的咔哒声。“这次是真的。新接的合作项目,
对方需求文档写得像言情小说——充满了美好的想象和不切实际的比喻。
”“哪家公司这么有诗意?”“幻梦游戏,做独立游戏那家。”林辰顿了顿,
“对接人叫苏晓。”空气安静了两秒。同事甲敏锐地捕捉到了什么:“名字有点熟。
你大学时是不是……”“嗯。”林辰切断了他的话,目光重新落回屏幕,“以前的学姐。
”“噢——”同事甲拖着长音,带着“我懂了”的笑容退出去,
“那您慢慢处理‘边界条件’,不打扰了。”门轻轻关上。林辰向后靠在人体工学椅上,
椅子发出顺从的叹息。他最小化了所有代码窗口,
露出深蓝色的桌面壁纸——那是NASA发布的银河系中心图片,恒星密集如沙。
他双击打开一个从未出现在任务栏的加密文件夹。
密码是他常用的那个:herbirthdayplusprojectno。
文件夹里有三个子目录:代码、文档、日志。他点开“日志”,
里面是几十个以日期命名的文本文件,最早的一个是八年前。
2018.03.14.txt今天项目组开会,新来的学姐苏晓做组长。
她讲技术方案的样子,让我想起《三体》里提到的“思想透亮”。
原来真的有人能把枯燥的流程图讲出诗意。我说“这个模块的耦合度可以再降低”,
她说“不如说让它们保持恰到好处的对话距离”。奇怪的比喻,但我记住了。
林辰快速滚动鼠标滚轮,日期跳跃。2022.11.07.txt听说她去了上海,
做游戏。挺好的。她说过想做有温度的程序,而不是冰冷的功能。我还是留在了北京。
这里的冬天有暖气,夏天有雷阵雨,像某种稳定的运行环境。偶尔会想,
如果当时说了那句话,现在会怎样?但“如果”是最糟糕的语法错误——它编译不通过,
也无法运行。最近的一条记录是三天前。
2026.01.15.txt公司接了幻梦游戏的项目。对接群里有她的微信头像,没换,
还是那只握着手柄的卡通猫。她说:“大家好,我是幻梦游戏的苏晓。”时隔四年,
ation fault (core dumped)也许我该升级一下情感处理模块了,
这个版本太旧,漏洞百出。林辰关掉文件,靠在椅子上,闭上了眼睛。
会议室的白炽灯在眼皮上投下橙红色的光晕。他忽然想起多年前的那个下午,
大学实验室的阳光斜射进来,尘埃在光柱中缓慢旋转。苏晓站在白板前,
马尾辫随着讲解轻轻晃动,手中的马克笔写下一个又一个优雅的算法名称。
“Dijkstra不只能找最短路径,”她转身,眼睛在阳光下亮得出奇,“它是在说,
有时候绕远路,是为了不错过沿途的风景。”那时林辰坐在第三排靠窗的位置,
膝盖上摊开的《算法导论》停在第347页,再没翻动过。手机震动了一下。林辰睁开眼,
解锁屏幕。是企业微信的新消息,来自刚刚组建的项目群。一个他闭着眼都能认出的头像旁,
弹出气泡:@林辰 林工,关于刚才讨论的实时数据同步方案,我这边有些具体想法,
方便的话我们明天可以单独约个时间详聊?发送人:苏晓。
林辰的手指悬在屏幕上方五毫米处,这个距离保持了整整十秒。然后他打字回复:好的。
时间地点你定,我都可以。发送。几乎同时,苏晓回复:明天下班后怎么样?
798那边有个咖啡馆,离你公司和我那都不远。我把地址发你。没问题。
林辰放下手机,重新看向电脑屏幕。加密文件夹还在桌面上摊开着,像一道未愈合的旧伤口。
他移动鼠标,光标在“关闭”按钮上悬停片刻,最终选择了“最小化”。
文件夹缩成任务栏上一个不起眼的图标,
挤在“IDEA”、“Chrome”和“Terminal”之间,像一颗沉默的星星,
在数字宇宙中维持着恒定的微弱光芒。窗外,北京冬夜的天空是浑浊的紫红色,
远处西二旗的楼宇灯带勾勒出几何形状的天际线。一辆晚班的公交车在空旷的路上驶过,
红色尾灯拖出模糊的光轨。林辰开始收拾东西。拔掉手机充电线,合上笔记本电脑,
穿上挂在椅背上的黑色羽绒服。动作机械而熟练,是重复了上千次的日常。关灯前,
他最后看了一眼电脑屏幕。屏保已经启动,
是动态的代码雨——绿色的字符从黑色背景中落下,源源不断,永无止境。
那是他很多年前写的屏保程序,一个没什么实际用途、但莫名让他心安的造物。
)) {myWorld.status = “meaningful”;}林辰笑了笑,
那笑容很短,像流星划过夜空,来不及许愿就消失不见。他关上会议室的门,
脚步声在空旷的走廊里回荡。电梯下行时,失重感如约而至,像每次心跳漏掉的那一拍。
走出写字楼,寒风立刻穿透羽绒服,宣告着北京一月的主权。林辰裹紧衣服,朝地铁站走去。
口袋里的手机又震动了一下,但他没有马上查看。他需要一点时间,
来编译这个突然变得复杂的世界。798艺术区的咖啡馆有个好听的名字,“时光补丁”。
苏晓提前十分钟到了。她选了靠窗的位置,窗外是旧工厂改造的砖墙,
爬山虎枯黄的藤蔓如血管般攀附其上。下午四点的冬日阳光斜斜地切进来,
在木桌上投下清晰的明暗交界。她打开笔记本电脑,又觉得不妥,合上。拿出手机,解锁,
锁屏。重复三次后,她意识到自己在紧张。这很荒唐。苏晓想。二十九岁,独立游戏制作人,
带领过十二人团队,在上海和北京的路演中面对过数百投资人。
她不该因为见一个过去的学弟而紧张。但林辰不是“一个过去的学弟”。
他是那个在项目答辩前夜,
陪她在实验室通宵调试代码的人;是那个在她随口说喜欢某款小众游戏后,
一周后默默做出类似机制demo的人;是那个在毕业散伙饭上,坐在角落一言不发,
却在她离席时悄悄跟出来,递给她一包纸巾说“路上用”的人。也是那个,
在她离开北京去上海时,只发了一条“一路顺风”的人。服务生端来柠檬水,
玻璃杯外壁凝结着细密的水珠。苏晓用手指划过,留下一道清晰的痕迹。门上的风铃响了。
苏晓抬头,看见林辰推门进来。他穿着灰色的羊毛大衣,围巾是深蓝色的,
肩上落着未拍净的雪粒。他环视咖啡馆,目光扫过她时停顿了一下,然后点点头,走过来。
“抱歉,晚了两分钟。”林辰脱下大衣搭在椅背上,“西二旗地铁站出了点状况。
”“北京地铁的日常。”苏晓微笑,“喝点什么?”“美式,热的。”点单的过程简短高效。
林辰坐下时,苏晓注意到他的动作有些僵硬——不是紧张的那种僵硬,
更像是长时间保持固定姿势后的生理反应。“还是每天坐很久?”她问。“程序员职业病。
”林辰调整了一下坐姿,“最近在尝试站立办公,但站久了膝盖疼。
人类的进化显然没考虑到我们这行。”典型的林辰式回答。用技术比喻生活,
用幽默保持距离。苏晓笑了:“你还是老样子。”“你变了。”林辰看着她,语气平静,
“更……锋利了。”这个词用得精准。四年前的她还有些学生的圆润,
现在则像精心打磨过的刀刃,在适当的时机露出适当的锋芒。妆容精致但不浓艳,
西装剪裁得体,耳钉是简洁的几何形状——一切都恰到好处,无可挑剔。“在上海待了三年,
总得学会点什么。”苏晓端起杯子,“至少学会了在咖啡厅谈事时不点拿铁——它凉得最快。
”“物理定律对谁都公平。”林辰说。这时他的咖啡上来了,他接过,没加糖也没加奶,
直接喝了一口。对话在这里出现了短暂的空白。不是尴尬,
更像两个熟练的程序员在对接接口——先确认协议,再传输数据。
苏晓决定直接开始:“那我们聊聊项目?你们提供的实时数据同步方案,在玩家数量激增时,
延迟会明显升高……”她打开平板电脑,调出图表。林辰身体前倾,目光聚焦在屏幕上。
接下来的二十分钟,对话流畅得像排练过的双人舞。技术术语在空中交换,
架构图在纸巾上勾勒,偶尔有争论,但很快能在某个折中方案上达成共识。
这是他们最熟悉的领域。在这里,世界是清晰的,问题有解法,bug可修复。
讨论告一段落时,窗外的雪下大了。雪花不再是零星的试探,而是成片地落下,
在渐暗的天色中显得愈发清晰。“所以我们需要在月底前完成压力测试。”苏晓总结道,
合上平板。“来得及。”林辰看了眼手机日历,“我这边可以协调资源。”又是沉默。
但这次不同,像代码运行到某个分支判断,等待输入。
苏晓转动着手腕上的表:“你这些年……怎么样?”“写代码,修bug,等下班。
”林辰用勺子搅动咖啡,“标准的大厂程序员生命周期。偶尔会想,
如果当年选了别的路……”“比如?”“比如去卖煎饼果子。至少作息规律。
”苏晓笑了:“你会给煎饼果子写个自动摊饼算法,然后因为优化过度而倒闭。”“很可能。
”林辰也笑了,这是今晚他第一个真正的笑容,眼角有细细的纹路,“那你呢?
游戏做成了吗?”“成不成要看你怎么定义。”苏晓望向窗外,
798的红色砖墙在雪中显得柔和,“做了一个上架了,不温不火。第二个做到一半,
团队解散了。现在这是第三个,幻梦。如果这次再不成,我可能真的会考虑去卖煎饼果子。
”“那我们可以在后厂村摆摊,形成竞争。”“或者合作。我负责摊饼,
你负责写支付系统和用户增长策略。”两人对视,都笑了。笑声很轻,
很快被咖啡馆的背景音乐吞没——那是一首老旧的爵士乐,小号声像在叹息。雪下得更紧了。
路灯次第亮起,在窗户上投出暖黄的光斑。“其实,”林辰忽然开口,语气比之前慢了些,
“我玩过你的游戏。《浮岛物语》。”苏晓怔住。那是她第一个独立游戏,上架Steam,
评分不错但销量平平。一个关于记忆与失去的叙事游戏,她投入了两年时间。
“你……怎么知道是我做的?”她问。发布时用的工作室名字,不是本名。“美术风格。
”林辰说,“第三关那个迷宫,墙上的涂鸦,和当年你笔记本上的贴纸一模一样。
还有雨中行走的音效,是你以前分享过的那个素材包里的。”苏晓感到喉咙发紧。
她端起水杯喝了一口,水是凉的。“玩得怎么样?”她尽量让声音平静。“通关了。
三个结局都打出来了。”林辰看向她,“最喜欢‘留在岛上’的那个结局。
虽然评分网站说那是‘坏结局’。”那是苏晓自己最偏爱的结局。
主角放弃回到现实世界的机会,选择永远留在记忆构筑的浮岛上。大多数玩家认为这太消极,
游戏社区的攻略都标着“不推荐”。“为什么喜欢?”她听见自己问。“因为真实。
”林辰说,“有时候留下不是因为勇敢,而是因为诚实。诚实地承认,
有些东西就是无法修复,有些人就是无法再见。那不如好好道别,然后在那里建一座花园。
”苏晓看着他,看了很久。咖啡馆的光线在他脸上投下柔和的阴影,
让那张本就偏于安静的脸更添了几分难以读懂的深沉。“你变了,林辰。”她最终说。
“哪里?”“会说人话了。”这次林辰笑出了声,一个短促的、真实的声音。“四年时间,
足够一个人学会把二进制翻译成普通话。”“还学会了什么?
”林辰想了想:“学会了失眠的时候不看代码,看星星。学会了煎蛋可以不糊。
学会了有些bug不用修复,共存就好。”他停顿,“也学会了……有些话如果不说,
可能就真的没机会了。”空气突然变得稀薄。背景音乐换成了钢琴曲,音符一个个落下,
清晰可闻。苏晓的手机就在这时响了。铃声刺耳,打破了一切。她看了眼屏幕,表情微变。
“抱歉,我接个电话。”她起身走向洗手间方向。林辰的视线跟随着她的背影,
看着她停在走廊尽头,背对着这边接起电话。通话很短,不到一分钟。但苏晓回来时,
脸上的某种东西消失了——那种短暂的、放松的、近乎柔软的东西,被重新收拾起来,
放回了它该在的位置。“我得走了。”她说,开始收拾东西,“突然有点急事。
”“需要帮忙吗?”“不用,工作上的。”苏晓已经穿上大衣,围好围巾,
“今天聊得很愉快,林工。技术方案就这么定了,具体细节我们线上沟通。
”“林工”这个称呼,像一扇缓缓关上的门。林辰站起来:“我送你出去。”“不用,
我叫的车已经到了。”苏晓笑了笑,那个笑容完美、得体,也遥远,“账单我结过了。
下次见。”她推门出去,走进纷飞的雪中。一辆白色轿车停在路边,她拉开车门,坐进去。
车子启动,尾灯在雪幕中晕开两团红色的光,然后转弯,消失不见。林辰还站在原地,
透过咖啡馆的玻璃窗,看着雪落下。服务生走过来:“先生,需要续杯吗?”“不用了。
”林辰说,“结账吧。”“刚才那位女士已经结过了。”“我知道。”林辰说,
“我只是想再坐一会儿。”他重新坐下,看着对面空了的座位。苏晓的咖啡杯还在,
杯口有浅红色的唇印。柠檬水喝了一半,杯壁上她的指纹正在慢慢蒸发。林辰拿出手机,
打开加密文件夹,新建一个文档。2026.01.16.txt今天见到了苏晓。
在798的咖啡馆,窗外下雪。她更漂亮了,也更远了,像优化过的算法——效率更高,
可读性更差。我们聊了工作,聊了过去,差点聊到现在。然后一个电话打断了一切。
她走得很快,像逃避一个即将抛出的异常。也许我该更新一下数据库:她可能有了新的生活,
而我只是一个需要兼容的旧版本。但问题是,我从未成功升级过。
我的心还停留在2018年的春天,那个有阳光的实验室。系统提示:版本过旧,建议升级。
但我拒绝。他保存文档,关掉手机。窗外的雪还在下,越下越大,像是要把整个北京覆盖。
林辰想起很多年前,也是这样一个雪天,他和苏晓在图书馆赶项目。暖气太足,她睡着了,
头枕在摊开的《游戏设计模式》上。窗外的雪静静落下,
(this.moment.lastForever());}那是他写过最贪心的循环。
永远不要醒来,永远不要结束。但所有的循环都有终止条件。她毕业,离开,
去往另一座城市。他留在北京,留在这座巨大、嘈杂、永远在建设的城市里,写代码,
修bug,等一个或许不存在的更新。服务生开始收拾邻桌的杯子,碰撞声清脆。
咖啡馆要打烊了。林辰穿上大衣,推门走入雪中。寒风立刻包裹了他,雪花落在脸上,冰凉,
然后融化。他朝地铁站走去,脚步在积雪上留下深深的印迹。但很快,新的雪会落下,
覆盖这些痕迹,像什么也没发生过。就像时间对待我们所有人那样。只是林辰知道,
有些痕迹是覆盖不了的。它们刻在代码里,刻在习惯里,刻在每次心跳的间隙里。
那是他无法修复,也不想修复的bug。是他人生的核心漏洞。而他早已学会与之共存。
第二章:注释里的诗2.1 异步请求与等待响应项目进入开发第三周,
林辰养成了一个新习惯。每天上午十点,他会在IDE中打开“幻梦游戏-数据接口”项目,
先检查昨晚的自动构建结果,然后点开苏晓的微信对话框。
输入:“昨日进度同步:缓存模块已联调通过,性能达标。
”通常半小时内会收到回复:“收到。美术资源管线出了点问题,下午同步解决方案。
”简洁、专业、无可指摘。像两个精密啮合的齿轮,在各自的轴上旋转,
只在必要的时刻传递扭矩。午休时,林辰会去公司楼下的便利店。他买三明治、咖啡,
偶尔加个饭团。结账时,目光会扫过柜台旁的货架——那里有她以前爱吃的某种薄荷糖,
蓝白包装,像缩小的冰山。他从未买过。只是看着,像确认一个常量是否还存在。
今天下午有视频会议。林辰提前五分钟进入腾讯会议,调试摄像头和麦克风。
他选了虚拟背景:一张深空星云图。苏晓准时加入,她的背景是简约的白色书架,
书脊排列整齐,像编译无误的代码。“可以听到吗?”她的声音从耳机传来,清晰,
略微有些远。“可以。”林辰说,“你那边有点回声。”“稍等。”屏幕上的她低头操作,
几秒后回声消失,“现在呢?”“好了。”会议开始。讨论技术方案,评审接口文档,
敲定排期。苏晓分享屏幕时,林辰看到了她的桌面壁纸——不是游戏原画,也不是家人照片,
而是一张像素风的企鹅图案,蠢萌地抱着一条鱼。“这个壁纸……”林辰脱口而出。
苏晓停顿了一下:“嗯,很多年前的了,懒得换。”林辰记得。大二那年冬天,
他写过一个小程序,随机生成像素动物。苏晓当时说最喜欢那只企鹅,还让他发了图片文件。
那是2017年,微信还不支持原图发送,图片经过压缩后满是马赛克,她却用了好久。
“挺怀旧。”林辰说。“算是吧。”苏晓的语气听不出情绪,“我们继续?
”会议进行了四十分钟。结束时,苏晓说:“对了,
你上次提交的同步逻辑里有个地方我不太明白。第312行,
那个延时设置为什么是1875毫秒?”林辰心跳漏了一拍。那是他故意留下的。“经验值。
”他让自己的声音听起来平静,“我们测试过,
这个值在移动网络波动时能提供最佳用户体验。不是理论最优,但是实践最优。”“明白了。
”苏晓在那边记着什么,“那就按这个来。还有别的问题吗?”“暂时没有。”“好,
那今天先这样。辛苦。”“辛苦。”会议结束,屏幕黑掉。林辰摘下耳机,
办公室的嘈杂声瞬间涌入——键盘声、讨论声、远处传来的笑声。他靠在椅背上,
看着天花板。第312行。注释是:“// 等待一次心跳的时间”。她问的是数值,
不是注释。也许她根本没看注释。也许看了,但没多想。林辰打开那个文件,
滚动到第312行。光标在注释末尾闪烁,像在等待什么。他按了几下退格键,
删掉那行注释,又停下。然后他重新输入:“// 等待一次心跳的时间 (如果你还记得,
2018年3月21日下午2点,实验室,你的静息心率是75)”保存,提交。
这是一个测试。他想。如果她看到,如果她记得,如果她愿意回应。如果都没有,
那这只是代码海洋里一行无关紧要的注释,随时可能在下个版本中被重构掉。
2.2 隐藏关卡三天后的深夜,林辰收到一封邮件。
题:关于接口文档的一个问题时间:凌晨1点47分内容只有一行:“1875毫秒的来源,
我重新计算了。2018年3月21日,下午2点,实验室温度24度,
我刚刚喝完一杯冰美式。静息心率应该是76,不是75。”林辰盯着屏幕,
感觉血液在耳中轰鸣。他缓慢地打字回复:“你是对的。我记错了温度变量。
那天实验室空调坏了,实际温度是26度。冰美式是中杯,去冰,
你喝了三分之一后放在桌上,凝结的水珠弄湿了我的电路图。”点击发送。等待。两分钟后,
新邮件:“电路图上是Dijkstra算法的改进方案。你说我的方案‘浪漫但低效’,
我反驳说‘效率是手段,不是目的’。
”林辰的嘴角上扬:“你当时在纸上画了一条迂回路径,说‘你看,
这条路会经过开花的玉兰树’。但实际上,从实验室到食堂的最短路,根本不经过玉兰树。
”回复很快:“但那条路经过流浪猫喂食点。你后来每天去喂的那只三花猫,
就是在那条路上遇到的。”林辰靠向椅背,闭上眼睛。
记忆如潮水般涌来——那个春天的午后,阳光把实验室照得通透。苏晓的白板笔用完了,
他把自己的递过去。她接过时,指尖短暂相触,像静电。她画的路径确实绕远。但她说,
Dijkstra的精髓不是找最短路径,而是在所有可能中找出不后悔的那条。
“你怎么证明那条路更好?”他当时问。苏晓转身,眼睛在阳光下半眯着:“证明?林辰,
不是所有东西都需要证明。有些路的价值在于沿途的风景,不在于终点。
”后来他们真的走了那条路。她指给他看玉兰树——虽然还没开花,只有毛茸茸的花苞。
在喂猫点,一只瘦小的三花猫怯生生地靠近,他蹲下,从包里拿出中午没吃完的面包,
撕碎了放在地上。“它不会吃的。”苏晓说。“试试。”猫真的吃了,小口小口,很谨慎。
“你看,”林辰站起来,拍了拍手上的碎屑,“有时候不按最优解走,也会有收获。
”苏晓看着他,然后笑了。那是他记忆中她笑得最开的一次,眼睛弯成月牙,
露出不太整齐的虎牙。“林辰同学,”她说,“你刚刚完成了一次人类行为上的贪心算法。
”“贪心?”“对。局部最优,但可能全局也最优。”她转身继续走,“走吧,
食堂要没饭了。”他们并排走着,影子在身后拖得很长。那时玉兰树还没开花,
但风已经软了,带着北方春天特有的、尘土与生机混合的味道。邮件提示音把林辰拉回现实。
新邮件,仍然是苏晓:“那只三花猫,后来怎么样了?”林辰打字:“我喂了它一个学期。
毕业前它生了小猫,我把它们送到动物保护组织。现在应该都被人领养了,过得比我们好。
”发送。这次等待的时间很长。长到林辰以为对话结束了,准备关掉邮箱时,新邮件来了。
“林辰,为什么是现在?”简单的问题。复杂的答案。林辰的手指悬在键盘上方。
办公室只剩下他一个人,显示器散发出的冷光照亮他面前一小片区域。窗外,
北京的后半夜依旧有零星灯火,像永不睡眠的数字世界在呼吸。
他最终写道:“因为有些bug不会随时间自动修复。因为有些进程看似挂起,
其实还在后台运行。因为我试过升级系统、更换硬件、重装软件,但核心故障依旧存在。
因为——”他停在这里,删掉“因为”后面所有字,重新输入:“因为我优化了四年,
还是没找到比你更优雅的解决方案。”发送。这次没有回复。林辰等到凌晨三点,
邮箱依然寂静。他关掉电脑,走到窗边。凌晨的北京呈现出另一副面孔——不再拥挤,
不再喧嚣,像一个运行完毕的程序,终于释放了所有内存。他拿出手机,
打开那个加密文件夹,新建日志。2026.02.03.txt凌晨1点47分,
她发来邮件。关于心跳,关于温度,关于一只猫。我们进行了一场跨越四年的调试会话。
我问为什么是现在。她没有回答。也许有些问题不需要答案,就像有些循环不需要终止条件。
系统状态:运行中,有内存泄漏风险。建议操作:无。锁屏,手机揣回口袋。
林辰离开办公室,走进电梯。镜面墙壁映出他的脸——眼下有淡青色的阴影,胡茬冒了点头,
衬衫领口微微敞开。一个标准的、过度工作的程序员形象。但只有他知道,就在今晚,
就在那几封邮件里,有什么东西被重启了。不是爱情——那太宏大,太沉重。
是某种更细微、更精确的东西。像时钟的秒针跳过一格,像二进制的最低位从0变成1,
像沉寂多年的监听端口,终于等到了一个连接请求。微小,但足以改变一切。
2.3 压力测试项目进入压力测试阶段。这是最残酷的环节——模拟数万玩家同时在线,
检测系统在极限状态下的表现。崩溃、卡顿、数据丢失,所有隐藏的缺陷都会在此刻暴露。
就像感情。林辰连续三天睡在公司。行军床支在会议室,洗漱包扔在椅子上,
咖啡杯沿积了深褐色的垢。同事甲经过时摇头:“辰哥,你这是把公司当家啊。
”“家没这么高的网络带宽。”林辰盯着监控屏幕,眼白布满血丝。“那倒是。
”同事甲凑近看数据,“哇,QPS每秒查询率都快到上限了。
幻梦那边这次野心不小啊。”“他们值得。”“嗯?”同事甲敏锐地捕捉到语气中的异常,
“有情况?”“什么情况?”林辰不接招。“你和那个对接人,苏晓。
”同事甲拉过椅子坐下,“上次开会我就觉得不对劲。你看她的眼神,
像在看一个没处理的异常。”“你代码写多了,看什么都像异常。”“不不不,我谈过恋爱,
虽然失败了,但雷达还在。”同事甲压低声音,“说真的,你们以前就认识?”“大学同学。
”“不止吧?普通大学同学会让你连续加班72小时,就为了把响应时间优化3毫秒?
”同事甲指着屏幕,“这已经不是职业素养,这是执念。”林辰沉默。监控屏幕上,
曲线平稳运行,所有指标都在绿色区域。这是一个健壮的系统,经过精心设计和反复打磨,
能够承受预期的压力。但他知道,真正的压力测试不在预期内。手机震动。
苏晓的消息:“我们这边场景加载有卡顿,怀疑是资源包分发的问题。能帮忙看看日志吗?
”林辰回复:“发我。”日志文件传来,他快速浏览。确实,在玩家密集区域,
资源加载延迟明显升高。
问题出在CDN内容分发网络的节点选择策略上——当前策略是基于地理距离,
但没考虑实时负载。“需要优化调度算法。”林辰打字,“给我两小时。”“现在凌晨两点。
”“问题不等人。”那边显示“正在输入中”很久,最后发来:“好。需要我同步做什么?
”“保持在线,我可能需要实时数据。”“我一直在线。”这句话让林辰停顿了一下。
然后他开始工作,手指在键盘上飞舞,像钢琴家演奏高难度乐章。他重写调度逻辑,
引入实时负载均衡,增加失败重试机制。代码一行行流淌,
如同他压抑多年的、从未说出口的话。凌晨三点四十七分,新算法部署完成。
监控曲线上的尖刺开始平复,延迟稳定在可接受范围。林辰发消息:“试试。”五分钟后,
苏晓回复:“流畅了。怎么做到的?”“改写了选择策略。不再只选最近的节点,
而是综合距离、负载、历史成功率。就像……”他停顿,“就像选路,不只看最短,
还要看沿途是否拥堵,天气如何,有没有修路。”“Dijkstra的改进版。”“是。
”那边又显示“正在输入中”,但这次很久。久到林辰以为她睡着了,或者去忙别的了。
然后消息来了,很长的一段:“林辰,我一直在想那个问题。为什么是现在。
我想我有个不成熟的答案。因为这些年来,我走了很多路。有些路很顺,有些路很绕。
我见过凌晨三点的陆家嘴,也见过纽约时代广场的跨年人群。我和很棒的人共事过,
也经历过团队解散时的痛哭。我恋爱过,也分手了——就在上个月,和平的,没有争吵,
只是我们都承认,这不是我们要的终点。然后我回到北京,接手这个项目,看到对接人是你。
那一刻我忽然明白,我走了这么远,绕了这么多路,
其实一直在试图接近同一个问题:什么是我真正想要的?什么能让我在凌晨三点的办公室里,
依然觉得这一切值得?你的代码给了我一部分答案。不是因为它多优雅,多高效。
而是因为它透露出一种态度:你尊重每一个细节,你关心那些看不见的东西,
比如3毫秒的延迟,比如一只猫会不会饿。在这个追求速成、追逐风口的时代,
这种态度近乎奢侈。所以为什么是现在?因为现在的我,终于能识别这种奢侈的价值。
而现在的你,是否还愿意为一个不完美的系统,写下充满耐心的注释?”林辰读完这段话,
读了三遍。办公室的空调发出低沉的嗡鸣,服务器机柜的指示灯规律闪烁,
像数字世界的心跳。窗外的天空开始泛白,又一个北京的不眠夜即将过去。他打字,删除,
再打字,再删除。最后他发过去的,
bestPath || paths[0];}苏晓的回复几乎立刻到达:“这是什么?
”“新的节点选择算法。优先选择有猫或有玉兰树的路径。如果都没有,就选第一条。
”那边发来一个笑脸表情,然后是文字:“幼稚。”“有效。
”“你怎么知道现在那条路上有没有猫?”“我不知道。”林辰回复,“但我们可以去看看。
如果你愿意,也看看玉兰树开花了没。”这一次,
他加上了具体的时间地点:“周六下午三点,老地方。如果下雨,就改在图书馆。如果下雪,
就改在咖啡馆。如果你不想来——”他还没打完,苏晓的消息已经弹出:“我会来。
”“不问为什么?”“有些路的价值在于沿途的风景,不在于终点。
”她引用他很多年前的话,“但这次,我想知道终点是什么。”林辰看着屏幕,
感觉有什么东西在胸腔里缓慢地融化。像冰封的河面在春天裂开第一道缝隙,
下面涌动着等待了整个冬天的水流。他回复:“周六见。”“周六见。”对话结束。
林辰靠在椅子上,仰头看着天花板。连续熬夜的疲惫终于涌上来,但他不觉得困,
只觉得清醒,一种奇异的、近乎疼痛的清醒。他打开日志文件,新建一条记录,
日期设为本周六。然后他只打了两个字:“测试中。”保存,关闭。窗外的天色更亮了,
晨光从东边的楼群后浮现,给这座巨大的城市镀上淡淡的金色。林辰关掉显示器,收拾东西,
准备回家睡几个小时。走出办公楼时,保安朝他点头:“林工,又通宵?”“嗯,
解决了点问题。”“辛苦了。今天天气不错。”林辰推开玻璃门,走到室外。
清晨的空气清冽,带着北方春天特有的干燥气息。他深吸一口气,感觉肺叶舒展开来。是的,
天气不错。适合一次没有明确终点的散步。适合看看路上有没有猫,玉兰树开花了没。
适合开始一场迟到了四年的、不追求效率的、充满冗余和容错的——压力测试。
第三章:递归调用3.1 玉兰还未开周六下午两点五十五分,林辰站在学校西门。
北京航空航天大学,他们共同的母校。毕业五年,校门翻新过,加装了人脸识别闸机。
他刷身份证进去,机器发出冰冷的“验证通过”。校园变了,也没变。新的实验楼拔地而起,
旧的教学楼粉刷一新。但路的走向没变,梧桐树还在,图书馆的尖顶依然刺向天空。
春天刚来,枝条上冒出嫩芽,是那种怯生生的绿。林辰沿着记忆中的路走。
经过三食堂——现在改名叫“航空航天主题餐厅”,招牌上画着火箭。
经过他住过的12号宿舍楼,阳台上晾着衣服,随风飘荡像彩旗。经过计算机学院大楼,
门口摆着“人工智能前沿论坛”的易拉宝。然后他看见了那排玉兰树。还没开花。
毛茸茸的花苞紧闭着,像攥着秘密的小拳头。树干上挂着牌子,写着品种“二乔玉兰”,
花期“三月下旬至四月上旬”。还差一点时间。林辰想。就像他们,毕业,工作,分开,
各自走了一圈,现在回到这里——距离花期,还差一点时间。他在树下的长椅坐下。
这是他们当年常坐的位置,春天看花,夏天乘凉,秋天落叶,冬天积雪。长椅换了新的,
木条上的油漆还很亮。他用手摸了摸,没有刻字——以前上面刻满了情侣的名字缩写,
现在都被抹平了。两点五十八分。林辰打开手机,又关上。打开,又关上。重复三次后,
他意识到自己在紧张。这很荒谬,二十九岁,经历过项目上线、服务器宕机、投资人质问,
却因为一次同学见面而紧张。但他控制不了。手心在出汗,胃部轻微痉挛。他深呼吸,
像调试程序前的准备——检查环境,确认输入,预设输出,然后按下运行。三点整。
苏晓从路的另一头走来。她穿着米白色大衣,围巾是浅灰色的,头发扎成低马尾。
走路的样子没变,步幅适中,肩膀放松,手臂自然摆动。
但有些细节变了——她不再背双肩包,
而是一个棕色的皮质托特包;不再戴学生气的框架眼镜,可能是换了隐形,或者做了手术。
她在长椅前停下,微微喘气:“抱歉,停车花了点时间。学校现在对外来车辆收钱,
一小时十块。”“通货膨胀。”林辰站起来,发现自己比她高半个头——这个身高差他记得,
精确到厘米。“是啊,什么都涨,除了工资。”苏晓笑了笑,在长椅另一端坐下,
和他保持一个人的距离。沉默。不是尴尬,更像两个久别重逢的老系统,
在重新建立握手协议。“玉兰还没开。”苏晓抬头看树。“还得一两周。
”“我记得以前开的时候,整条路都是香的。”“对,香的有点腻。”林辰说,
“你总说像劣质香水。”“我说过吗?”“说过。大二那年春天,你说‘这么香,
蜜蜂都要醉驾了’。”苏晓笑出声:“我真这么说?完全不记得了。”“我记得。”林辰说。
然后他意识到这话太直白,补充道:“我记性比较好,尤其对奇怪的话。”苏晓看了他一眼,
目光里有探究,有笑意,还有别的什么。然后她转开视线,看树,看路,
看远处打篮球的学生。“学校变化真大。”她说。“嗯。那边新建了体育馆,地下三层,
据说有游泳池。”“你会游泳了?”“不会。但理论上懂流体力学。”苏晓又笑。
这次笑声轻松了些:“你还是老样子,用科学解释一切。”“科学解释不了的事,
我就保持沉默。”“比如?”“比如玉兰为什么这么香。比如为什么有些事记得特别清楚。
比如为什么今天会在这里。”苏晓不说话了。她从包里拿出一个保温杯,拧开,热气冒出来,
是红枣枸杞的味道。“养生了?”林辰问。“年纪大了。”她喝了一口,“你要吗?
我带了两个杯子。”她真的从包里拿出另一个保温杯,递给林辰。深蓝色的,
和他大学时用的那个很像。林辰接过,打开,是咖啡,还烫着。“你怎么知道我爱喝美式?
”“猜的。”苏晓说,“程序员不都靠咖啡续命?”“有道理。”林辰喝了一口,味道刚好,
不加糖,不加奶,纯粹的苦。又一阵沉默。这次是苏晓先开口:“那只猫,后来再见过吗?
”“三花猫?毕业后再没见过了。但喂猫点还在,有别的猫。”“去看看?”“好。
”他们起身,沿着那条绕远的路走。春天下午的阳光很温和,透过还没长全的叶子,
在地上投出斑驳的影子。有学生骑车经过,车铃叮当作响。远处操场上传来哨声和呼喊,
是足球队在训练。一切都和记忆中很像,但细节处都不同。喂猫点从墙角移到了专门的木屋,
里面有垫子、食盆、水盆。一只橘猫正在晒太阳,见人来,懒洋洋地抬头看了一眼,
又趴回去。“不是以前那只。”林辰说。“肯定不是,都多少年了。”苏晓蹲下,
试探性地伸手。橘猫闻了闻,蹭了蹭她的手指。“但它不怕人,应该是有人喂的。
”“现在有动保社团,定时来喂。”“挺好的。”苏晓站起来,拍掉手上的灰,
“至少流浪猫不用担惊受怕了。”他们继续走。路过玉兰树——还是没开。路过篮球场,
有男生在打三对三,球鞋摩擦地面发出尖锐的声响。路过小卖部,门口冰柜上贴着二维码,
扫一扫就能支付。“你后来回过学校吗?”苏晓问。“偶尔,校庆之类的。你呢?
”“第一次。”苏晓说,“毕业后直接去了上海,后来回来也忙,没时间。
”“为什么今天有时间?”苏晓停下脚步,转身看他。阳光从侧面照过来,
她的脸一半明亮一半在阴影里。“因为你想出这个算法。优先选择有猫或有玉兰树的路径。
”她微微歪头,“我想看看,这个算法在实际环境中的表现。”“然后呢?用户体验如何?
”“还在测试中。”苏晓转身继续走,马尾辫轻轻摆动,“不过初步反馈是,
比最短路径有趣。”林辰跟上去,和她并排。他们的影子在地上重叠,又分开,
随着走路节奏不断变化。“你邮件里说,你和男朋友分手了。”他说得尽量随意,
像在问今天天气。“嗯,上个月。谈了两年,最后发现我们想要的东西不一样。
”苏晓的语气平静,像在说别人的事,“他想结婚生子,定居上海。我想继续做游戏,
而且……不一定在上海。”“现在游戏行业,北京机会更多。”“是啊,所以回来了。
”苏晓侧头看他,“你呢?这四年,没遇到想一起走最短路径的人?
”林辰摇头:“遇到过几个,但都停留在‘打招呼、吃饭、看电影、再见’的流程。
像执行一个写好的脚本,没有bug,但也没有惊喜。”“你想要惊喜?
”“我想要……”林辰斟酌用词,“想要那种,明知不是最短路径,但还是想一起走的感觉。
”他们走到了食堂门口。现在是下午,还没开饭,里面空荡荡的。玻璃门上贴着菜单,
价格比当年贵了一倍。“还吃食堂吗?”林辰问。“不了吧,怕破坏记忆。”苏晓看着里面,
“我记得你最讨厌番茄炒蛋里的姜。”“你还记得?”“记得。有一次你挑姜挑了半天,
我说‘你不吃给我’,你就把盘子推过来。那是我第一次吃别人挑剩的菜。
”林辰笑了:“我也记得。后来我再没点过番茄炒蛋。”“你该点。我不介意吃你的姜。
”对话在这里停住。有风从他们之间吹过,带来远处玉兰树若有若无的香气——也许是错觉,
花还没开呢。“去图书馆吧。”苏晓说,“外面有点冷了。”“好。
”3.2 旧书与折痕图书馆也变了。门口加装了闸机,刷校园卡才能进。
林辰和苏晓都不是学生了,进不去。“我有办法。”林辰说,带着苏晓绕到侧面,
那里有个小门,通常是给工作人员用的。他试了试,门没锁。“你怎么知道这个门?
”“以前在这勤工俭学,整理过旧书库。”他们溜进去。里面是楼梯间,堆着杂物,
有灰尘的味道。上楼,二楼是阅览室,玻璃门里坐满了埋头学习的学生。“像不像时光倒流?
”苏晓轻声说。“如果时光倒流,”林辰也压低声音,“我会在毕业那天,做点不一样的事。
”“比如?”“比如不说‘一路顺风’,说点别的。”苏晓看着他。
阅览室的灯光透过玻璃照出来,在她脸上投下柔和的光晕。她张了张嘴,想说什么,
但被一阵脚步声打断。是保安,手电筒的光柱扫过来:“谁在那儿?”“快走。
”林辰拉住苏晓的手腕,从另一边楼梯下楼。她的手很凉,手腕纤细,
他能感觉到脉搏在皮肤下跳动。他们跑出图书馆,一直跑到教学楼后面才停下。
两人都喘着气,对视一眼,忽然笑起来。“像做贼。”苏晓说,还在笑。
“本来就是非法入侵。”林辰松开手,她的手腕上留下浅浅的红印,很快褪去。
“那现在怎么办?图书馆进不去了。”“还有一个地方。”林辰说,“跟我来。
”他带她来到实验楼,坐电梯到顶楼,然后走消防通道上到天台。门通常锁着,
但林辰从消防栓后面摸出一把钥匙——锈迹斑斑,但还能用。“你怎么会有钥匙?
”“以前在这做项目,经常来天台抽烟。”林辰打开门,“后来戒了,但钥匙没还。
”“你抽烟?”苏晓很惊讶。“很短一段时间,毕业前。压力大。”林辰推开门,
天台的景象展开在眼前。这里没什么变化。水泥地面,矮围墙,角落里堆着废弃的课桌椅。
视野很好,能看到大半个校园,远处的操场、宿舍楼、还有更远处的城市天际线。
天是灰蓝色的,有几缕云,夕阳开始西斜,给云层镶上金边。“我从来没来过这儿。
”苏晓走到围墙边,手搭在上面。“以前这是我一个人的秘密基地。”林辰站在她旁边,
和她隔着一拳的距离,“心情不好的时候,就上来看看。”“看什么?”“看下面的人,
像蚂蚁一样忙忙碌碌。看远处的高楼,像积木。看天空,看云。”他顿了顿,“然后想,
我的问题,其实也没多大。”苏晓沉默了一会儿,说:“你现在还这样吗?”“偶尔。
但公司天台不让上,有安全隐患。我就在消防通道的窗户那里看。”“看什么?
”“看后厂村的车流,看西二旗的晚高峰,看那些灯火通明的写字楼。想,
有多少人和我一样,在写代码,在改bug,在等一个不知道会不会来的结果。”风吹过来,
把苏晓的头发吹乱。她用手拢了拢,别到耳后。“林辰,”她忽然说,“你记不记得,
大四那年,我拿到上海那家公司的offer?”“记得。你很兴奋,在实验室里跳起来,
头撞到了柜子。”“对,撞了个包。”苏晓摸摸后脑,仿佛那里还有个包,
“你当时在做什么?”“我在调一个死锁问题,看了三天代码没找出来。你说你要去上海,
我说恭喜,然后继续看代码。”“其实我撞到头之后,你过来看我的伤,离我很近。
我闻到你身上有洗衣液的味道,是柠檬味的。”林辰怔住:“这你都记得?”“记得。
而且我记得我当时想,如果你说‘别去上海’,或者‘我也去’,我会怎么回答。
”苏晓转过身,背靠着围墙,面向他,“但我等到的,只有‘恭喜’,
和一瓶从你包里拿出来的红花油。”“我包里为什么会有红花油?”“你说你打球崴脚,
校医开的,没用完。”林辰笑了,苦涩的:“所以你就带着那瓶红花油去了上海?”“没有,
放在宿舍了,毕业时忘了拿。”苏晓也笑,“但我一直记得,你递给我红花油时,手指在抖。
”“我紧张的时候手会抖。”“为什么紧张?”“因为……”林辰深吸一口气,又缓缓吐出,
“因为你要走了。因为我知道上海很远,远到一张火车票要12个小时。
因为我觉得我没资格说‘别走’,因为我的未来还在迷雾里,你的已经清晰可见。
”夕阳又下沉了一些,金色变成橙红,把他们的影子拉得很长,在水泥地上融为一体。
“如果当时你说了,”苏晓轻声问,“我会留下来吗?”“我不知道。”林辰诚实地说,
“也许不会。你有你的路要走,我不能用我的不确定,绊住你的脚步。
”“那你现在确定了吗?”“确定什么?”“确定你想走的路,和想一起走的人。
”林辰看着苏晓。她的眼睛在夕阳光下是琥珀色的,清澈,坦荡,没有躲闪。
风吹起她的发丝,她没去管,就那样看着他,等一个答案。“我确定的是,”林辰慢慢说,
“这四年,我试过走别的路。我加班,我升职,我买房,我相亲,我做所有‘该做’的事。
但每到深夜,当我关掉电脑,看着窗外的城市,我总觉得少了什么。”“少了什么?
”“少了一个可以说‘今天我看到一只猫,很像我们以前喂的那只’的人。
少了一个听得懂我的代码笑话的人。少了一个,能让我愿意走绕远路的人。”苏晓没有说话。
她转回去,面对远方。夕阳已经完全沉入楼群,天空从橙红变成深紫,
第一颗星星在东方亮起。“我在上海的第一年,”她忽然开口,声音很轻,像在对自己说,
“很不适应。食物太甜,天气太湿,同事说话太快我听不懂。每天晚上回到出租屋,
我都会打开电脑,看我们以前做的那些项目。”“那些不成熟的项目。”“对,不成熟,
充满bug,但很有意思。”苏晓笑了,“我们做的那个校园导航应用,
你说要加入AR功能,让虚拟的猫在真实的路面上走来走去,引导用户。”“最后没做出来,
技术不够。”“但想法很好。我在上海做的第一个游戏,
就用到了这个思路——虚拟和现实的结合。”她停顿,“我总在想,如果当时我们一起做,
会做成什么样。”“可能会失败。”“可能会成功。”“也可能,”林辰说,
“既不成功也不失败,只是做了一件我们想做的事,然后继续做下一件。”苏晓转头看他,
眼睛在暮色中亮晶晶的:“你知道我为什么回来吗?不只是因为工作。”“为什么?
”“因为有一天,我在调试一个特别棘手的bug,搞到凌晨三点。我崩溃了,
把脸埋在键盘里。然后我抬起头,看到屏幕上是我自己写的代码,忽然觉得特别孤独。
”她顿了顿,声音有些哽咽,但很快控制住:“那一刻我意识到,
这四年我一直在做同一件事——把我脑海里的世界,变成屏幕上的世界。
但我找不到人可以分享这个世界。他们看到的是画面、情节、销量,
但我看到的是逻辑、结构、那些我注入其中的情感和记忆。
”“你需要一个能看懂源代码的人。”林辰说。“对。一个能看懂注释的人。
”苏晓擦了下眼睛,笑了,“抱歉,突然感性了。”“不用抱歉。”林辰说,
“我也经常感性。每次看到优美的代码结构,我都想找人分享,但最后只是截图,
存在硬盘里,一个人看。”“以后可以发给我。”苏晓说。“你会看吗?”“会。
而且我会写很长的评论,从设计到实现,从变量命名到架构选择,把你批评得体无完肤。
”“那正是我需要的。”他们对视,然后都笑了。这次笑得很放松,
像终于解决了某个困扰已久的问题。天完全黑了,校园里的路灯亮起来,一盏一盏,
像夜空中落下的星星。远处传来晚自习的铃声,悠长,回荡在楼群之间。“该走了。
”苏晓说。“嗯。”他们离开天台,林辰仔细锁好门,把钥匙放回原处。下楼,走出实验楼,
走在路灯下。影子在他们身前拉长,缩短,随着步伐晃动。走到校门口时,
苏晓问:“你怎么回去?”“地铁。你呢?”“开车。”她指指停车场的方向,
“要不要送你?”“不用,不顺路。”“好吧。”苏晓在包里翻找车钥匙,
金属碰撞发出清脆声响。她找到钥匙,握在手里,却没有按解锁。“林辰,”她说,
“今天……谢谢你。”“谢什么?”“谢谢你的算法。谢谢你的咖啡。谢谢你带我去天台。
”她顿了顿,“谢谢你还记得那些。”“我记得的比你想象的多。”“比如?
”“比如你写代码时喜欢咬笔。比如你紧张时会转头发。比如你开心时右嘴角会先上扬。
比如你思考时会眯左眼。”苏晓怔住,然后摇摇头:“这太可怕了。”“可怕?”“嗯。
感觉自己被‘人肉’了。”但她笑了,不是害怕的笑,是带着暖意的笑。“这不叫人肉,
这叫观察。”林辰说,“而且,你也记得很多。记得我讨厌姜,记得我手会抖,
记得我用的洗衣液味道。”“因为……”苏晓的声音低下去,“因为我也会观察。
”有车灯扫过,照亮她的脸。林辰看见她的睫毛在颤动,像蝴蝶的翅膀。“苏晓,”他说,
“我能问你一个问题吗?”“问。”“你邮件里说,你想知道终点是什么。
那你现在有答案了吗?”苏晓没有立刻回答。她抬头看天空,看那几颗稀疏的星星,
看远处写字楼闪烁的灯光。然后她看回林辰,眼睛里有复杂的东西在流动。“我觉得,
”她慢慢说,“重要的不是终点,而是这条路本身。重要的不是我们最终去哪里,
而是我们是否还愿意一起走,哪怕会绕远,哪怕有bug,哪怕玉兰花还没开。
”她按了车钥匙,不远处一辆白色SUV闪烁了两下。“我该走了。”她说。“路上小心。
”“你也是。”她转身走向车子,走了几步,又停下,回头:“林辰。”“嗯?
”“下周项目有阶段评审,你会来吧?”“会。”“那……”她抿了抿嘴唇,
“评审后一起吃饭?我知道公司附近新开了家云南菜,据说不错。”“好。
”“具体时间地点我发你。”“好。”苏晓又看了他两秒,然后真的走了。她拉开车门,
坐进去,发动,驶出停车位。经过林辰身边时,她减速,降下车窗。“对了,”她说,
“你的代码注释,我看到了。第312行。”林辰的心跳停了一拍。“然后呢?”他问。
“然后我查了当年的实验记录。”苏晓的眼睛在车内灯光下显得格外亮,
“那天的室温是25.2度,不是26度。我的心率是75.6,四舍五入是76。
所以你我都记错了,但你的错得更离谱。”她说完,升起车窗,开走了。
车尾灯在夜色中渐行渐远,最后消失在拐角。林辰站在原地,久久没动。然后他笑了,
笑得肩膀都在抖。他从口袋里拿出手机,打开加密日志,
新建一条记录:2026.03.12.txt今天和她回了学校。玉兰还没开,
但我们看到了一只橘猫。我给了她一杯咖啡,她给了我一个问题的答案。
她说重要的不是终点,而是是否愿意一起走。我说我记得她的所有细节,她说她也记得我的。
最后她指出我的数据错误,精确到小数点后一位。她是对的,我错了。
这是我人生中最美好的一次错误。系统状态:核心进程正在重启。进度:35%。
预计完成时间:未知。但这一次,我不介意等待。他保存日志,锁屏,把手机放回口袋。
晚风很凉,但林辰不觉得冷。他朝地铁站走去,脚步轻快,
像刚解决了一个困扰多年的算法难题。事实上,他确实解决了。爱情不是最短路径问题,
也不是旅行商问题。它甚至不是一个可计算问题。它只是一个选择。选择绕远路,
选择看风景,选择在玉兰还没开的时候就等待,选择相信花会开,选择在花开时,
身边站着你想一起看花的人。林辰走进地铁站,刷卡,过闸机,下楼梯。列车进站,门开,
他走进去,找到位置坐下。车厢里人不多,玻璃窗映出他的脸。他看见自己在笑,
那种发自内心的、不需要理由的笑。他想,苏晓现在到哪了?是不是也在想同样的事?
她的嘴角是不是也先扬起右边?他不知道。但他知道,下周六,他们会一起吃云南菜。
他会提前查好那家店的招牌菜,会想好穿什么衣服,会提前十分钟到,会点她可能爱吃的菜。
他还会继续写代码,继续调bug,继续在那个项目里,留下只有她能看懂的注释。
因为有些事,不需要最优解。只需要一个开始。而他们的开始,在四年前的春天,
在那个有阳光的实验室,就已经写下了第一行。现在,是时候写第二行了。列车启动,
驶入隧道。窗外的黑暗飞速后退,像倒流的时光。林辰闭上眼睛,
在脑海中勾勒下一行代码的模样。他会写得尽量优雅,尽量简洁,
尽量让它在多年以后回头看时,依然值得微笑。就像所有美好的程序那样。
第四章:云南菜与边界条件4.1 酸木瓜炖鱼周五晚上七点,
林辰坐在云南菜馆的角落位置。店名叫“云滇一瓢”,开在后厂村边缘的创意园区里。
装修是改良的民族风,扎染布作帘,竹编灯罩,墙上挂着东巴文的木刻。
每张桌子上都摆着一个小铜锅,里面烧着炭,温着一壶普洱茶。林辰提前十五分钟到,
选了靠窗的座位。窗外是园区的内院,有棵老槐树,枝桠间挂着小彩灯,
在天色将暗未暗时闪烁着暖黄的光。他打开手机,第五次查看那家店的点评。
招牌菜是酸木瓜炖鱼、汽锅鸡、烤建水豆腐。他记下推荐搭配,又搜索“云南菜口味偏好”,
得知苏晓在上海生活三年,应该能吃辣,但可能更喜欢酸甜口的。“先生,现在点菜吗?
”服务员拿着平板过来。“再等等,人还没到。”“好的,先给您上茶水。
”林辰给自己倒了杯茶。普洱的陈香在舌尖化开,带点苦涩的回甘。他望向门口,
每有人进来,心跳就快半拍。七点零五分,苏晓推门进来。
她今天穿得不一样——不是工作时的西装,也不是校园里的休闲装。是一件浅蓝色的针织衫,
外面套着米色风衣,头发散下来,在肩头微卷。她站在门口张望,林辰举手示意。“抱歉,
停车位太难找了。”苏晓坐下,脱掉风衣搭在椅背上,“等了很久?”“刚到。”林辰说谎,
“喝茶吗?普洱。”“好。”倒茶时,林辰注意到她的手指。指甲剪得很短,干净,
没做美甲。左手手腕戴着一块黑色的智能手表,表盘是默认的数字界面。程序员的手,他想。
长期敲键盘,关节有轻微的茧。“项目评审顺利吗?”他问,这是个安全的话题。“还行。
你们提供的接口很稳定,美术资源的问题也解决了。”苏晓喝了口茶,皱眉,“有点烫。
”“小心。”林辰下意识地说,又觉得多余,补充道:“云南菜偏酸辣,能接受吗?
”“我在上海学会吃辣了。”苏晓笑,“虽然上海的辣和云南的辣不是一回事。
”“那点个中辣?”“微辣吧,给你留点退路。”点菜过程很顺利。酸木瓜炖鱼,汽锅鸡,
烤建水豆腐,炒水性杨花,米饭两碗。服务员确认菜单时,苏晓说:“再加个黑糖豆花,
当甜点。”“你以前不爱吃甜的。”林辰说。“人都是会变的。”苏晓看着他,
“你不也学会喝普洱了?以前你只喝冰美式,说热饮是bug滋生的温床。
”“因为胃不好了,医生让少喝冰的。”“程序员职业病?”“生活病。”菜上得很快。
酸木瓜炖鱼用土陶锅端上来,汤色奶白,飘着红色的油花和绿色的香菜。鱼肉嫩,
酸木瓜的酸很特别,带着果香。汽锅鸡的汤清澈,鸡肉软烂脱骨。建水豆腐烤得外焦里嫩,
蘸着辣椒面吃。“怎么样?”林辰问。“好吃。”苏晓夹了块豆腐,
“比上海那家云南菜好吃。”“你去过很多家?”“刚去上海时,想家,就找云南菜馆。
但总不对味,要么不够酸,要么不够辣。后来明白了,不是菜的问题,是人的问题。
”“想家?”“想北京。”苏晓用勺子搅着鱼汤,“想这里的干燥,想春天的沙尘暴,
想冬天暖气太足要开窗睡觉。很奇怪,在上海时想北京,在北京时又想上海。
”“人总想要没有的东西。”“你呢?想过去其他地方吗?”林辰想了想:“想过。
深圳、杭州、成都,都有机会。但最后都没去。”“为什么?”“因为……”他夹了块鸡肉,
在碗里戳了戳,“因为北京有我的生活。虽然这生活不完美,上班挤地铁,房租贵,空气差,
但它是我的。就像你写代码,写得再烂,也是自己写的,舍不得重写。
”苏晓笑了:“这个比喻好。不过有时候,重写是必要的。架构过时了,技术栈落后了,
就得重构。”“你重构过吗?”“重构过。”苏晓放下筷子,认真起来,“在游戏行业,
不重构就等于死亡。我做的第一个游戏,用的是Unity 5,现在都出到202X了。
第二个游戏,我推倒重来了三次,最后团队撑不住,散了。”“第三个呢?幻梦。
”“幻梦是全新的引擎,全新的架构。”苏晓眼睛亮起来,那是说起热爱之物时的光,
“我们自研了渲染管线,写了物理引擎的扩展,甚至为叙事系统设计了一套领域特定语言。
它可能不成功,但它是我做过最好的东西。”“所以你不会放弃。”“不会。
就像你不会放弃写优雅的代码,哪怕别人说‘能用就行’。”他们碰了下茶杯,以茶代酒。
普洱的温度刚好,暖意从喉咙一路到胃。菜吃得七七八八,黑糖豆花上来了。细腻的豆花,
浇上琥珀色的黑糖浆,撒了花生碎和葡萄干。苏晓舀了一勺,送进嘴里,满足地眯起眼睛。
“这个好吃。”她说。“你以前不爱吃豆制品。”“以前是以前。”苏晓又舀一勺,
“人在不同阶段,会喜欢不同的东西。就像以前我觉得奶茶太甜,现在偶尔会喝。
以前我觉得熬夜没问题,现在十二点前必须睡。以前我觉得……”她停住了。
重启·心动信号苏晓林辰全文免费阅读无弹窗大结局_苏晓林辰(重启·心动信号)小说免费阅读大结局
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 87868862@qq.com 举报,一经查实,本站将立刻删除。
