夜夜流光相皎洁
春风渡我过OI山八部曲:(以下是以时间顺序排序)
- 轻舟已过万重山【@EastSnowLotus】
- 塔与少女【@EastSnowLotus】
- 落霞与孤鹜齐飞 【原创】【补充时间线版本】
- 春风又绿江南岸【@EastSnowLotus】
- 明月何时照我还【原创】
- 夜夜流光相皎洁【原创】
- 柳暗花明又一村【原创番外】
第一章:回声
婚后第三年,杭州的梅雨季似乎比往年都要长。
空气里总是湿漉漉的,像拧不干的毛巾。方糖坐在工位上,听着窗外淅淅沥沥的雨声,心绪有些不宁。刚刚接到通知,部门接了一个大型项目,时间紧,任务重,作为核心组的一员,她接下来一个月大概都要泡在代码堆里了。
林霜在隔壁栋楼做架构,最近也在忙一个分布式存储的升级。两人虽然在一个园区,但经常是一周只能在饭点上碰见一次。
“妈咪!”
软糯的声音打断了她的思绪。方糖转过头,看见视频窗口里,两岁半的霜糖正抓着喵爱的手机,脸蛋贴得离屏幕很近,像个刚出炉的白馒头。
“怎么还没睡?”方糖柔声问。
“要听‘原点’。”霜糖奶声奶气地要求。
这是林霜发明的一个睡前故事。不是小红帽,也不是奥特曼,而是关于一只小蚂蚁如何寻找回家路的故事。故事的内核只有一句话:如果你迷路了,就回到最初出发的地方,从那里再找路。
“爸爸呢?”方糖看了一眼背景,没看到林霜。
“爸爸在洗澡。”霜糖眨巴着眼睛,“妈妈你什么时候回家?我想让你看积木。”
“妈妈把这只大虫子抓完就回。”方糖做了个抓虫子的动作,逗得霜糖咯咯直笑。
挂断电话,方糖深吸了一口气,重新将注意力投向屏幕上的代码。然而,就在她准备敲下回车键时,邮箱的提示音突兀地响了。
是一封来自“NOI科学委员会”的邮件。
方糖的心脏猛地收缩了一下。这种邮件通常只有两种情况:要么是当年的赛事通知,要么是……退役选手的召回函。
她点开邮件,屏幕上的黑字像是一排排排列整齐的士兵:
方糖选手:
见信如晤。
恭喜您在IOI 20xx年赛事中获得金牌。鉴于您在信息学奥林匹克领域的杰出贡献,以及目前在工业界的技术影响力,组委会诚挚邀请您担任今年NOI全国青少年信息学奥林匹克竞赛的特邀命题人与技术顾问。
赛事将于八月在杭州举行。我们需要您这样的“过来人”,为下一代攀登OI山的少年们,把一道关。
附件是邀请函与保密协议。
期待您的回复。
方糖盯着屏幕,手指悬在键盘上,久久没有落下。
“把一道关。”这四个字在她的脑海里反复回荡。
曾经,她是那个拼命想要过关的人。她在机房里熬过无数个通宵,盯着绿色的评测界面,看到“Accepted”时欢呼雀跃,看到“Wrong Answer”时把头埋进臂弯。而现在,她要站在出题人的位置上,去设计那些可能让另一个“方糖”崩溃的迷宫。
她站起身,走到办公室的落地窗前。雨水在玻璃上划出一道道蜿蜒的水痕,模糊了窗外的城市轮廓。
远处的西湖被雨雾笼罩,看不见断桥,也看不见雷峰塔。
“喂,林霜。”她拨通了电话。
“怎么了?”那头传来林霜略带沙哑的声音,背景音是键盘的敲击声,听起来他也还在工位上。
“组委会邀请我出今年的NOI题。”
电话那头沉默了两秒。
“你想去吗?”林霜问。没有劝阻,也没有怂恿,只是像在询问一段代码是否需要重构。
“我想去。”方糖说,“感觉像是某种……轮回。我也想去看看,现在的孩子们,是不是还跟我们当年一样疯。”
“那就去。”林霜笑了笑,“那家里这周的家务活归我,不过要是碰上我也加班,咱们就只能点外卖了。”
“好。”
挂了电话,方糖感觉胸口那团湿漉漉的雾气散了一些。她回到座位上,下载了附件,签下了那个熟悉又陌生的名字:方糖。
第二章:命题人
七月中旬,杭州。NOI命题组封闭酒店。
这是一家位于萧山机场附近的度假酒店,位置偏僻,四周除了农田就是正在施工的工地,非常适合把一群聪明的大脑关起来与世隔绝。
方糖推开会议室的门,冷气扑面而来,驱散了盛夏的暑热。
长条形的会议桌旁坐满了人。大多是她眼熟的面孔——有当年还在打比赛时就听闻过的“大神”,也有已经在高校任教的教授,还有几个看起来年纪很小,却已经是顶尖高校博士生的新生代命题人。
“方糖!来了!”
坐在最左边的那个戴着厚底眼镜、头发乱糟糟的男人站了起来,兴奋地挥手。方糖愣了一下,随即认出了他。
“郭天依?”
当年的IOI金牌得主,后来去了MIT读博,没想到现在也在这里。
“是我,是我。”郭天依笑着走过来,给了她一个不轻不重的拥抱,“听说你在做高并发,手速肯定没慢吧?这次的数据结构题可是要靠你了。”
“还在敲,不过没以前那么快了。”方糖笑着回应。
“来来来,给你介绍几个新朋友。”郭天依拉着她走到会议桌旁,“这位是裴嘉明,你应该记得,当年他是数竞和信竞双修的怪物。”
裴嘉明笑着点了点头,手里还转着一支笔:“好久不见,方糖。听说你结婚了?”
“嗯,刚有个孩子,两岁半。”
“真好。”裴嘉明眼里闪过一丝不易察觉的羡慕,“我还单着呢,整天跟数据打交道。”
“这位是……”郭天依指了指坐在角落里一个穿着灰色卫衣、一直低头看笔记本电脑的男生,“小陈,陈墨。这届保送清华的,数学思维极好,这次主要负责一道构造题。”
方糖顺着他的视线看过去。
那个男生并没有抬头,只是微微点了点头,算是打过招呼。他的手指在键盘上飞快地跳动,屏幕上是一行行方糖没看过的符号。
“别理他,他在想那个‘不可达状态’的证明。”郭天依耸耸肩,“天才嘛,多少都有点怪癖。”
方糖笑了笑,在那个空着的位子上坐下来。
桌面上已经摆好了一叠厚厚的保密协议和草稿纸。
“好了,人到齐了。”坐在主位上的一位白发苍苍的老教授敲了敲桌子,“今年的任务很重。我们要在两周内,出一套既能选拔出顶尖人才,又不能出现‘全场爆零’或者‘全场AK’的题目。难度梯度要合理,背景故事要严谨。”
“教授,”方糖举手,“我有一个想法。”
“你说。”
“我想出一道题,关于‘记忆’的。”方糖看向众人,“不是传统的算法题,而是一道需要模拟人脑遗忘曲线的题目。输入是一系列的事件,每个事件有一个情感权重,输出是经过时间衰减后,仍然被记住的事件序列。”
会议室里安静了几秒。
“有意思。”裴嘉明停下了转笔的动作,“这涉及到一个非线性的衰减函数,如果加上多个事件之间的相互干扰,复杂度会很高。”
“而且容易写挂。”角落里的陈墨忽然开口了。这是他第一次说话,声音很冷,像冰块撞击玻璃杯,“如果精度控制不好,很容易因为浮点数误差导致全盘皆输。”
方糖转头看他。陈墨终于抬起头,露出一双极为平静的眼睛。那眼神方糖很熟悉——那是看到了题目的本质,正在构建解题路径的眼神。
“所以,我打算把精度要求放宽,或者强制使用高精度库。”方糖迎着他的目光说,“但这会增加常数,迫使选手在算法复杂度和常数之间做权衡。”
陈墨盯着她看了两秒,嘴角微微勾起一个极淡的弧度:“有点意思。那这个‘情感权重’,怎么定义?”
“主观定义。”方糖说,“就像我们的人生。”
陈墨的手指轻轻敲了一下键盘:“行。我想试试能不能把这个模型构出来。”
“那就这么定了。”老教授拍板,“方糖负责这道题的核心逻辑,裴嘉明负责数据生成,陈墨负责特殊性质和Hack数据。郭天依,你负责那道传统的图论题。”
封闭的生活开始了。
每天早上八点起床,吃早饭,然后进入会议室讨论。中午趴在桌上睡二十分钟,继续干活。晚上没有固定的下班时间,有时甚至是通宵。
这种生活让方糖产生了一种时空错乱的错觉。仿佛她不是坐在五星级酒店的会议室里,而是回到了奶龙训练营那个充满了泡面味和键盘声的机房。
唯一的区别是,以前她是解题的人,现在她是造题的人。
她开始明白当年的那些命题人为什么总是那么“变态”。
出题是一件极其孤独且需要极度克制的事情。你既要像一个精明的猎人,布下天罗地网;又要像一个仁慈的神,在陷阱里留下一线生机。
“这个数据范围太大了,如果是
“把这个条件改成链式结构吧,这样就可以用单调栈。”
“这个Hack case太刁钻了,如果是正常思维根本想不到,会不会引起舆论争议?”
争论声此起彼伏。
方糖在草稿纸上画着复杂的函数曲线,试图模拟出最完美的遗忘模型。陈墨坐在她对面,偶尔把写好的代码推过来让她Check。
两人的配合意外地默契。
方糖擅长宏观的构思,能把抽象的概念具象化;陈墨擅长微观的把控,能把那些看起来天衣无缝的逻辑漏洞一个个找出来。
有一天晚上,大概凌晨两点。
会议室里只剩下他们两个人。郭天依和裴嘉明已经回房间睡了,只有墙上的投影仪还在嗡嗡作响,屏幕上是一张密密麻麻的思维导图。
“你为什么叫陈墨?”方糖忽然问。
陈墨的手指顿了一下,随后继续在键盘上敲击:“因为我讨厌光。”
方糖愣了一下:“什么意思?”
“以前,我喜欢站在聚光灯下。喜欢别人看着我解题,喜欢赢。”陈墨的声音很轻,在空荡的会议室里回荡,“后来我发现,光太亮的地方,影子也最深。当你站在光里,你看不清别人,别人也看不清你。”
他停下手中的动作,抬起头看着方糖:“所以我选了墨。黑色的,没有反光的,最安静的颜色。”
方糖看着他,想起了当年的自己。
她也曾那样渴望过那个光。她为了那一块金牌,为了别人的认可,为了证明自己给爸爸看,为了……给某个人看。
“其实,没有光,墨也是看不见的。”方糖轻声说,“只有光照在纸上,墨的痕迹才会显露出来。它们是共生的。”
陈墨沉默了许久。
窗外的雨声大了起来,噼里啪啦地打在落地窗上。
“也许吧。”陈墨合上了电脑,“但我不想再站在光里了。我只想做那个留下痕迹的人。”
那一晚,他们聊了很多。不是关于算法,也不是关于题目。聊了各自看过的一本书,聊了杭州的雨季,聊了为什么选择计算机。
方糖发现,这个看似冷漠的少年,内心其实藏着一片海。只是那海太深了,平时风平浪静,只有潜下去的人才能看到底下的暗流。
“你的这道题,如果我是选手,我会怎么做?”方糖问。
陈墨想都没想:“我会放弃一部分精度,用模拟退火去逼近最优解。因为在赛场上,完美是不存在的,你只能要在有限的时间内,拿到最多的分。”
“就像人生?”
“对,就像人生。”陈墨点了点头,“你不能既要又要,你必须取舍。”
这句话像是一道闪电,击中了方糖。
她忽然想起了程雪。
当年的程雪,放弃了IOI的名额,放弃了站在光里的机会,是不是也是一种取舍?
为了那个她认为更重要的东西,为了……她。
方糖的心脏猛地抽痛了一下。
“怎么了?”陈墨敏锐地察觉到了她的情绪变化。
“没什么。”方糖深吸了一口气,把那份隐隐作痛的记忆压回去,“只是忽然明白了一个道理。”
“什么道理?”
“原来,不管是出题还是解题,不管是站在光里还是留在影子里,我们都在做同一件事。”方糖看着窗外的雨幕,“我们在寻找那个最优解。”
陈墨看着她,若有所思。
“方糖姐。”
“嗯?”
“这道题的名字,叫什么?”
方糖看着屏幕上那条优美的衰减曲线,那个随着时间推移逐渐趋于平缓的函数。
“叫‘回声’吧。”
“回声?”
“嗯。声音会消失,但回声会在空谷里荡很久。它是最初的声音的影子,也是最真实的证明。”
第三章:赛场
八月,NOI赛场。
杭州国际博览中心,巨大的场馆像是一只张开翅膀的巨鸟。数千名考生、家长、教练汇聚在这里,空气中弥漫着紧张和兴奋的味道。
方糖穿着红色的命题人志愿者马甲,站在监控室的大屏幕前。
屏幕上切分成了几十个小画面,对应着赛场上的每一个角落。她能看到那些稚嫩的脸庞,看到他们咬着笔帽思考的样子,看到他们疯狂敲击键盘的侧影,也能看到他们因为编译错误而抱头懊恼的瞬间。
“这届的孩子,状态看起来不错。”郭天依端着保温杯走过来,感慨道,“你看那个13号机位的女生,第一题只用了二十分钟就切了,代码风格跟你当年有点像。”
方糖顺着他的视线看过去。
那个女生扎着高马尾,眼神专注而凶狠,手速极快。
“那是谁的学生?”方糖问。
“好像是林霜他们赞助的那个训练营出来的,叫……苏小小。”郭天依翻了翻名单。
方糖的心跳漏了一拍。林霜的训练营。
“这一届,还有几个熟人面孔吗?”方糖强装镇定地问。
“有啊。”郭天依指了指另一个角落,“看到那个坐在窗边、一直发呆的男生了吗?那是陈墨带出来的徒弟,叫刘尘。据说这孩子性格孤僻,跟陈墨当年一模一样,但是在构造题上有惊人的直觉。”
方糖看过去。
那个男生低着头,手指在桌面上无意识地画着圈。他的神情落寞,像是一个被世界遗弃的孤岛。
那一瞬间,方糖仿佛看到了当年的铝の。那个站在灰色头像背后,独自舔舐伤口的天才。
“比赛开始还有五分钟。”广播里传来了倒计时的声音。
方糖深吸了一口气,握紧了手中的对讲机。
“各点位注意,准备下发题目。”
大屏幕上,随着一声令下,几百个小画面同时发生了变化。原本还在发呆的孩子们瞬间进入了战斗状态,机房里响起了密集的键盘声。
方糖的目光紧紧锁住了那两道题——“遗忘曲线”和“迷宫寻路”。
这是她和陈墨出的题。
“遗忘曲线”是那道关于记忆的题目,作为第二天的压轴题,难度极高。“迷宫寻路”是陈墨负责的构造题,作为第一天的陷阱题。
“看来‘迷宫寻路’的陷阱生效了。”裴嘉明指着屏幕上的数据看板,“提交率只有30%,而且通过率极低。”
方糖看了一眼。那个叫刘尘的男生,正眉头紧锁地盯着屏幕,手下的代码删了又写,写了又删。
“他卡住了。”
“嗯。”陈墨不知何时也走进了监控室,依然穿着那件灰色的卫衣,站在方糖身后,“他陷入了思维定势。他在试图用常规的BFS去解这道题,但这道题的核心在于‘打破墙壁’。”
“你会帮他吗?”方糖问。
“不会。”陈墨的声音很冷,“赛场如战场。没有人能帮你,除了你自己。”
方糖沉默了。
她想起了当年的奶龙训练营。想起了林霜教她的那句:“回到原点,从最基础的地方开始想。”
也许,这孩子也需要一个契机。
比赛进行到第二天下午。
方糖的“遗忘曲线”题目下发。全场一片哀嚎。这道题不仅考查算法,还考查选手的数学建模能力和代码实现能力。
那个叫苏小小的女生,在面对这道题时,眼睛里却闪烁着兴奋的光芒。她迅速在草稿纸上画出了函数图像,然后开始编写代码。
方糖看着她的操作,心里涌起一股莫名的欣慰。
这就是传承吗?
一代人有一代人的OI山,一代人有一代人的春风。
比赛结束的那一刻,大屏幕上的排名定格。
苏小小,金牌第一名。
刘尘,银牌。
颁奖典礼在晚上举行。
方糖站在幕布后面,看着那些孩子走上领奖台。灯光打在他们的脸上,那是属于青春的光芒,热烈、耀眼,没有任何杂质。
她看到苏小小举起金牌,笑得灿烂如花;也看到刘尘拿到银牌后,虽然脸上没有笑容,但眼里闪烁着不甘的光芒。
这两种光芒,她都曾拥有过。
“方糖。”
身后传来一个熟悉的声音。
方糖回过头。
林霜穿着正装,手里捧着一束花,站在那里。
“你怎么来了?”方糖惊讶地问。
“来看看你出的题,顺便来接我老婆回家。”林霜笑着走上前,把花递给她,“还有,那个苏小小,是我们训练营的重点培养对象。她跟我说,你的题出得‘很有灵魂’。”
“很有灵魂?”方糖笑了,“这评价倒是新鲜。”
“因为她读懂了那个衰减函数。”林霜说,“她在赛后总结里写,那个函数像极了她和奶奶的关系。随着时间的流逝,奶奶的记忆在衰退,但某些刻骨铭心的东西,永远不会消失。”
方糖愣住了。
她没想到,自己随手构出的模型,真的触碰到了某个人的灵魂深处。
“陈墨也来了。”林霜指了指不远处的人群。
方糖看过去。陈墨正靠在墙边,低头看着手机,似乎在处理工作消息。那个叫刘尘的男生站在他旁边,正低着头挨训。
“他在骂那孩子吗?”方糖问。
“不。”林霜笑了笑,“他在教他怎么打破墙壁。”
方糖释然了。
她转过身,掀开幕布的一角,走了出去。
“方糖姐!”苏小小一眼就看到了她,兴奋地跑了过来,“是你出的那道题吗?那个关于记忆的?”
“是。”方糖蹲下身,看着这个满眼星光的女孩,“做得很好。”
“谢谢!”苏小小红着脸,“我觉得那个题目……很温柔。虽然很难,但是它让我想起了一些很重要的事。”
“温柔吗……”方糖喃喃自语。
原来,这道题的回声,也传到了这里。
第四章:变数
生活总是充满了变数,就像代码里永远无法完全预测的Runtime Error。
NOI结束后,方糖以为自己会重新回到平静的轨道上。上班、带娃、写代码。然而,一封来自北京的信,再次打破了她生活的平静。
那天是周末。林霜带霜糖去上乐高课了,方糖一个人在家整理旧物。
她从书架的最底层翻出了一个落满灰尘的铁皮盒子。那是她在北大时期的“百宝箱”,里面装满了各种杂物:旧的学生证、看过的电影票根、还有……那个灰色头像的U盘。
她的手在U盘上停留了许久,最终还是插进了电脑。
U盘里只有一个文件夹,名为“陈年旧事”。
她点开,里面是数百份当年的训练数据、草稿代码,还有……一封从未发送的邮件。
发件人是铝の。
收件人是方铨铎。
方糖的心跳骤然加速。她颤抖着点开了那封邮件。
老方:
这封信写了删,删了写,最后还是决定存起来,不发了。
今天我看了方糖的比赛。她拿了金牌。她在台上笑的样子,跟你年轻时一模一样。那种倔强,那种不服输,那种一定要证明给谁看的劲头。
我知道你一直恨我。恨我当年没拦着你,恨我引你走上了这条路,恨我最后那个转身。
但老方啊,人生哪有什么如果。如果当年我没有带你去看那个演示,如果你没有爱上那些0和1,如果你没有拼命逼自己……你也就不是你了,方糖也就不是方糖了。
我们都是被时代推着走的人。那时候的OI山,对我们来说就是世界的尽头。我们以为翻过去了就能看到天堂,其实翻过去之后,发现只是另一座山。
方糖这孩子,心思重。她太在乎你的看法了。她为了让你开心,为了让你点头,把自己逼得太紧了。她需要一点光,不需要太亮,只需要能照亮脚下的路就行。
我快走了。去一个没人认识我的地方,把那些陈年的烂账都烂在土里。
别怪她,也别怪我。
祝好。
铝の
方糖读着读着,眼泪止不住地流了下来。
原来,那个在她记忆中总是冷漠、疏离的“陈叔叔”,那个被父亲恨了半辈子的男人,早在那时候就选择了放手和成全。
他选择了做影子里的人,让她的父亲和她,都能在光里好好活着。
信件的最后,附着一个地址。
那是杭州西郊的一座墓园。
方糖关上电脑,抓起车钥匙,冲出了家门。
她开着车,一路向西。
雨还在下,雨刮器疯狂地摆动,却刮不净眼前的模糊。
墓园建在半山腰,苍松翠柏,寂静无声。方糖沿着湿滑的石阶一级一级往上走,雨水打湿了她的裙摆和头发。
终于,她在角落里找到了那块墓碑。
墓碑很简单,只有一张黑白照片和一个名字。
照片上的男人还很年轻,穿着那件灰色大衣,眼神里带着一丝戏谑和不羁。那是年轻时的铝の。
方糖伸出手,指尖触碰着冰冷的墓碑照片。
“你真狠啊。”她轻声说,“连个告别都没有。”
雨声淅沥,仿佛是他在回应。
“你知道吗?我现在过得很幸福。”方糖蹲下身,双手抱着膝盖,“我结婚了,老公是个很温柔的人,虽然不会说话,但他会帮我剥虾,会跟我一起写代码。我还有个儿子,叫霜糖,很可爱,就是有点调皮。”
“爸他……他也挺好的。虽然还是不爱说话,但去年过年,他主动提起了你。”
风吹过树梢,发出沙沙的声响。
“陈叔叔……”方糖的声音哽咽了,“谢谢你。谢谢你当年放手,谢谢你……渡了我。”
她从包里拿出那瓶随身带的水,拧开盖子,绕着墓碑洒了一圈。
“这瓶水,算是我给你敬的酒。”
方糖在墓碑前坐了很久。直到雨渐渐停了,天边露出了一抹微弱的夕阳。
她站起身,拍了拍裙子上的泥土。
“我要回去了。霜糖还在等我给他讲故事。”
她最后看了一眼墓碑,转身离去。
下山的路上,手机响了。
是林霜打来的。
“喂,你在哪?霜糖吵着要妈妈了。”
“我在……”方糖看了一眼四周,雨水冲刷过的山林显得格外青翠,“我在看一个老朋友。”
“老朋友?”
“嗯。”方糖深吸了一口气,空气里带着泥土和青草的味道,“一个很重要的老朋友。”
“那早点回来。我做了糖醋小排。”
“好。”
挂了电话,方糖感觉脚步轻盈了许多。
那些压在她心头多年的石头,终于在这一刻,化作了山间的尘埃。
第五章:重逢
北京的秋天,是方糖记忆里最金黄的季节。
两个月后,方糖因为一个技术峰会,再次来到了北京。
行程很满,白天开会,晚上还要准备分享的PPT。直到峰会结束的最后一天晚上,她才有了一点空闲。
她坐在酒店房间的落地窗前,看着窗外长安街的车水马龙。
手机震动了一下。
是一条微信好友申请。
头像是一片空白的黑色,名字叫“Cheng”。
方糖的心脏猛地跳动了一下。
她犹豫了片刻,点下了“通过”。
对话框里弹出了第一条消息。
“听说你来北京了。”
方糖的手指悬在屏幕上方,不知道该打什么字。
“嗯,来开会。”
“我有两张今晚人艺话剧的票,就在你酒店附近。《茶馆》。去吗?”
方糖盯着那行字。
程雪。
那个消失在人海里的程雪。那个在开罗天台上说“那你来”的程雪。那个寄来那盆多肉的程雪。
那个……她曾经深爱的程雪。
方糖站起身,走到衣架前,取下一件风衣穿上。
“好。”
……
人艺小剧场,灯光昏黄。
方糖坐在第三排,身边的座位一直空着。
直到大幕拉开的前一分钟,一个身影匆匆忙忙地坐了下来。
是程雪。
她剪了短发,显得干练而利落。穿着一件深蓝色的风衣,身上带着淡淡的香水味——不是以前的那种木质香,而是更成熟的花香。
“抱歉,堵车。”程雪压低声音说,“路上车太疯了。”
“没事。”方糖目视前方,假装在看舞台上的布景,“我也刚到。”
其实她早到了半小时,一直在心里演练开场白。
话剧开始。老舍先生笔下的北京城在舞台上活了过来。裕泰茶馆里人来人往,各色人等粉墨登场。
方糖却看不进去。
她的全部注意力都在身边的那个人身上。
她能听到程雪的呼吸声,能闻到她身上的香水味,甚至能感觉到她手臂散发出来的微温。
那种熟悉的感觉,像潮水一样涌上来,淹没了他。
“这几年,过得好吗?”程雪忽然开口,依然目视前方。
“挺好的。”方糖说,“结婚了,有个孩子,两岁半。”
“我知道。”程雪点了点头,“看了你的朋友圈。”
“你呢?”
“也挺好的。”程雪笑了笑,“升了职,带了个团队,每天忙着跟产品经理吵架。”
“还在打比赛吗?”
“不打了。”程雪摇了摇头,“那是年轻人的游戏。我现在……更喜欢看比赛。”
两人再次陷入了沉默。
舞台上,王利发正在感叹:“大清国要完!”
方糖的眼眶忽然有些湿润。
“方糖。”程雪转过头,第一次认真地看着她的眼睛。
方糖也转过头。
两人的目光在昏暗的剧场里交汇。
“我后悔过。”程雪轻声说,“后悔当初放你去埃及,后悔跟你提分手,后悔……当初没有再坚持一下。”
方糖的呼吸一滞。
“但是,看到你现在这样,我觉得那个后悔也没那么重要了。”程雪伸出手,轻轻帮方糖理了一下耳边的碎发,“你找到了适合你的土壤,长出了新的叶子。这挺好的。”
“程雪……”
“不用解释什么。”程雪打断了她,“每个人都有自己的路要走。我的路在北京,你的路在杭州。我们的路曾经重叠过一段,那已经足够了。”
她从包里拿出一个信封,塞进方糖的手里。
“这是我要去支教的地方的地址。在云南的一个深山里。那边缺计算机老师,如果你有空,或者如果林霜有空,欢迎寄点教材或者过去看看。”
方糖捏着那个信封,感觉沉甸甸的。
“你要去支教?”
“嗯。”程雪转过头,看向舞台,“换个活法吧。一直在写字楼里写代码,人也快生锈了。我想去看看山外面的风,是不是跟城里的一样。”
大幕落下。全场掌声雷动。
程雪站起身。
“我该走了。”
方糖也站起来,拉住了她的袖子。
“程雪。”
程雪回过头。
方糖看着她,千言万语堵在喉咙口,最后只化作一句:
“照顾好自己。”
程雪笑了。那是方糖见过的最释然的笑容。
“你也是。”
她转身走进散场的人流中,深蓝色的风衣很快就消失不见。
方糖站在原地,捏着那个信封。
信封上没有贴邮票,只写了一行字:
“春风渡我过群山,我渡春风过深涧。”
方糖走出剧场。
北京的秋风很凉,吹得她脸颊生疼。
她拿出手机,给林霜发了条消息。
“我想你了。”
林霜秒回:“明天一早的飞机,回家我给你煮面,不放葱。”
方糖看着屏幕,笑了。
她把那个信封小心翼翼地放进包里最安全的夹层。
那里面的地址,也许她会去,也许不会。
但至少,她知道那扇门并没有关上。
春风还在,路还在。
只要走,总会到的。
第六章:深渊
时间如流水,悄无声息地带走了两年。
霜糖四岁了,上了幼儿园。方糖和林霜的事业也都进入了瓶颈期——或者说,进入了深水区。
方糖每天都要面对无数的汇报、复盘、OKR,敲代码的时间越来越少,开会的时间越来越多。
林霜那边也不轻松。他开始失眠,掉头发,脾气也变得有些暴躁。
那个曾经温润如玉、会帮她剥虾、会在桥上说“好”的男人,偶尔会在深夜里对着电脑屏幕发呆,或者因为霜糖的一点小调皮而大声呵斥。
方糖察觉到了他的变化。
但她不知道该怎么帮他。因为她自己也在漩涡里挣扎。
“方糖,你有没有想过,我们是不是被困住了?”
这是某个周末的晚上,林霜突然问的一句话。
当时他们正坐在客厅的两张书桌前加班。窗外下着暴雨,雷声滚滚。
“被困住?”方糖停下手中的动作,“困在哪里?”
“困在这个系统里。”林霜指了指屏幕,“我们在为别人构建庞大的数字帝国,但我们自己的生活却越来越碎片化。我们不停地奔跑,却不知道终点在哪里。”
他摘下眼镜,揉了揉眉心。
“有时候,我会想起当年在技术沙龙见到你的时候。那时候你说,你喜欢写代码,因为纯粹。现在呢?还有纯粹吗?”
方糖沉默了。
纯粹吗?
她看着屏幕上那些复杂的业务逻辑,那些为了KPI而堆砌的功能,那些不得不做的妥协。
已经没有了。
“你想怎么做?”方糖问。
“我想辞职。”林霜看着她,眼神里带着一丝决绝,“我想回杭州老家,开一个木工坊。或者去程雪说的那个地方支教。反正,我不想再敲这些代码了。”
方糖的心里咯噔一下。
辞职。
在这个上有老下有小的年纪,背着房贷车贷,辞职意味着什么,他们都很清楚。
“那你考虑过霜糖吗?考虑过房贷吗?”方糖的声音有些颤抖。
“考虑过。”林霜低下头,“所以我在犹豫。我在问我自己,我是不是真的有勇气去打破这堵墙。”
那晚,他们没有再说话。
雨一直下到天亮。
第二天早上,方糖起床时,林霜已经走了。
桌上留着一张纸条:“我去一趟,有些事情要处理。晚饭不一定回来吃。”
方糖看着那张纸条,心里涌起一股强烈的不安。
她给林霜发消息,没回。打电话,无人接听。
直到晚上十点,林霜才回家。
他浑身酒气,脸色苍白,手里提着一个空酒瓶。
“你去哪了?”方糖扶住他。
“老宁那。”林霜大着舌头说,“我去找宁嘎狗了。我问他,你是怎么平衡生活和工作的。他说,平衡个屁,就是熬。”
他瘫坐在沙发上,指了指窗外。
“方糖,我不想熬了。我想回家。”
方糖看着醉倒的丈夫,心里五味杂陈。
她知道林霜到了极限。那个曾经因为一道算法题兴奋不已的少年,终于被生活的重担压弯了脊梁。
那一晚,方糖失眠了。
她看着窗外的月光,想起了很多年前,程雪对她说的那句话:“方糖,你明年还可以再来。”
那时候的她,以为那是安慰。现在她明白了,那是选择。
人总是有选择的。
哪怕是在深渊里,你也可以选择仰望星空,或者……闭眼沉睡。
第二天,方糖做了一个决定。
她向部门请了长假。
“我想去云南一趟。”她对林霜说。
林霜愣了一下,随即点了点头:“好。去吧。家里我会处理好的。”
“不是一个人。”方糖说,“带着霜糖。”
“为什么?”
“因为我想让他看看,山外面的风。”
方糖带着霜糖,踏上了前往云南的旅程。
那是程雪在信里写的地址。
大理,洱源,一个叫“凤羽”的小镇。
经过长途跋涉,母子俩终于站在了那所小学的门口。
操场是土做的,篮球架只有一边有篮筐。教室是老旧的瓦房,窗户玻璃裂了好几块。
但那里书声琅琅,充满了生机。
“妈妈,这就是阿姨教书的学校吗?”霜糖好奇地问。
“嗯。”
就在这时,一个熟悉的身影走了出来。
她穿着朴素的棉麻衬衫,裤腿卷着,沾着泥土。手里拿着一把锄头,似乎刚从菜地里回来。
是程雪。
看到方糖,她愣住了。锄头“咣当”一声掉在地上。
“方糖?”
“嗯。”方糖笑了笑,“我来看看你。”
程雪快步走过来,一把抱住了方糖。又抱住了霜糖,亲了亲他的脸蛋。
“长得真像你。”程雪笑着说。
那天晚上,她们坐在程雪宿舍的门口,看着满天繁星。
风从山坳里吹过来,带着泥土和野花的香气。
“林霜怎么了?”程雪问。她总是那么敏锐。
方糖把事情告诉了她。
程雪听完,沉默了许久。
“方糖,你知道吗?”程雪指了指远处的群山,“这里的山,比OI山高多了,也比OI山难爬多了。但是,只要一步一步走,总能走过去的。”
“而且,这里的风景,是写字楼里看不到的。”
她转过头看着方糖。
“如果林霜想通了,让他来吧。这里缺木工,正好可以把那几个破课桌修一修。”
方糖看着程雪被紫外线晒黑的皮肤,看着她眼里那种久违的光彩。
她忽然明白,程雪并没有走。她只是换了一座山,换了一种方式,继续攀登。
而她和林霜,也该换一条路了。
第七章:重启
从云南回来后,林霜递交了辞职信。
没有争吵,没有挽留,平静得像是一次普通的代码提交。
交接工作花了一个月。这一个月里,林霜脸上的笑容越来越多,失眠症也不治而愈。
他们卖掉了城西那套房子,还清了贷款,手里还剩下一笔钱。
“我们去哪里?”霜糖坐在搬家的卡车上,兴奋地问。
“去一个有大窗户、有两张桌子、有风的地方。”方糖摸了摸他的头。
他们最终在离大理不远的沙溪古镇,买下了一座带院子的老房子。
院子很大,有一棵百年的梨树。春天开花,秋天结果。
房子一共有四间。主卧他们住,次卧给霜糖,一间做了书房,最后一间……留给了客。
改造花了一年。
林霜亲自动手,打磨木地板,制作家具。他的手艺越来越好,做出来的桌椅既结实又美观,逐渐在古镇上有了名气,甚至有游客专门来定制。
方糖则在家里接一些远程的外包项目,或者写一些开源代码。她的节奏慢了下来,但代码质量却越来越高。
霜糖在镇上的小学读书,每天放学回来就在院子里疯跑,或者缠着程雪(她偶尔会过来住一阵子)教他认星星。
日子慢了下来,像古镇那条缓缓流淌的黑惠江。
这里没有KPI,没有996,没有PPT。
只有清晨的鸟鸣,午后的蝉噪,夜晚的月光。
“后悔吗?”
某个秋日的黄昏,方糖和林霜坐在院子里的梨树下喝茶。林霜正在给方糖做一把木梳,木屑纷纷扬扬地落下来。
“后悔什么?”方糖问。
“后悔放弃了杭州的一切,跑到这山沟沟里来。”林霜吹掉木梳上的浮灰。
方糖看着远处被夕阳染红的群山,看着霜糖在院子里的背影,看着正在厨房里忙碌的程雪(她今天又过来了)。
“不后悔。”方糖摇了摇头,“以前我觉得,只有站在山顶上才算赢。现在我知道了,只要能在半山腰找到一块舒服的石头坐下,看会儿云,喝会儿茶,也是赢。”
林霜停下手中的动作,看着她。
“方糖。”
“嗯?”
“谢谢你。”
“谢什么?”
“谢谢你在深渊里,没有松开我的手。”
方糖笑了。她伸出手,握住了林霜的手。那只手因为长期做木工,变得粗糙了许多,布满了老茧和细小的伤口。
但它是温暖的,有力的。
就像那座Oi山脚下,最坚实的岩石。
第八章:答案
霜糖十岁那年,第一次参加了NOI。
不是作为选手,而是作为体验营的一员。
方糖和林霜带着他回到了杭州。
比赛场地依然是那个国际博览中心。依然是那个巨大的场馆,依然是那些紧张的孩子们。
只是这一次,方糖不再是那个心跳加速的选手,也不再是那个审视赛场的命题人。
她只是一个普通的家长,站在场外等待。
林霜站在她身边,手里拿着两瓶水。
“紧张吗?”林霜问。
“有点。”方糖笑了笑,“不知道这小子遗传了谁的基因。”
“遗传了我的冷静,和你的倔强。”林霜把水递给她。
“喂,我哪里倔强了?”
“不倔强当年能为了一个IOI名额拼了命?”
两人相视一笑。
考场大门打开了。
孩子们涌了出来。霜糖走在最后,脸上带着一丝疲惫,但眼睛亮晶晶的。
“妈咪!爸爸!”他跑过来,一头扑进方糖怀里,“我过了!三道题我全过了!”
“厉害!”方糖摸了摸他的头。
“那个构造题……”霜糖有些兴奋地比划,“卡了我好久。但是我想起了爸爸说的那句话,‘回到原点,从最基础的地方开始想’。然后我灵光一闪,就把那面墙拆了!”
林霜笑着揉乱了他的头发:“臭小子,学会拆墙了是吧?”
“那是妈妈教我的!”霜糖理直气壮。
方糖愣了一下。她什么时候教过他拆墙?
哦,她想起来了。
那是很久以前,在监控室里,陈墨对刘尘说的那句话。
“赛场如战场。没有人能帮你,除了你自己。你需要打破墙壁。”
原来,那些话并没有消失。它们像回声一样,在时空中震荡,最终传到了下一代的耳朵里。
晚上,他们去了一趟当年的奶龙训练营旧址。
那里已经变成了一所创新学校。但那栋楼还在,那个303房间还在。
方糖站在走廊里,看着那扇熟悉的门。
“这里是哪里?”霜糖问。
“是爸爸妈妈相遇的地方。”方糖轻声说,“也是爸爸当年觉得自己是个‘笨蛋’的地方。”
“我不信。”霜糖嘟囔着,“爸爸才不是笨蛋。”
“那时候他确实是。”方糖看向林霜,“是不是?”
林霜笑了,有些不好意思:“那时候是有点自闭。”
“那后来呢?”
“后来啊……”方糖看着林霜的眼睛,“后来他遇到了一个人。那个人告诉他,代码是用来解决问题的,不是用来制造问题的。只要回到原点,总能找到路。”
林霜握住了她的手。
“那个人是谁?”霜糖好奇地问。
“是你妈妈。”林霜说,“也是程雪阿姨,是陈墨叔叔,是很多很多人。”
霜糖似懂非懂地点了点头。
“那我以后也要遇到这样的人。”
“你会遇到的。”方糖摸了摸他的头,“只要你还在路上,总会遇到的。”
第九章:终章·回声
又是玉兰花盛开的季节。
杭州,太子湾公园。
方糖推着轮椅,轮椅上坐着满头白发的方铨铎。
喵爱走在旁边,手里拿着保温杯。
“这花开得真好啊。”喵爱感叹道,“一年比一年好。”
“是啊。”方铨铎看着满树的白花,声音有些苍老,“没想到我还能看到这么好的风景。”
“爸,你想吃那个糖炒栗子吗?我前面看到有卖的。”方糖蹲下身问。
方铨铎摇了摇头:“不吃了,牙口不好了。你吃吧。”
方糖笑着站起来,去买了一袋回来。
她剥了一颗,吹凉了喂到方铨铎嘴里。
“甜吗?”
“甜。”方铨铎笑了,脸上的皱纹舒展开来。
这时候,林霜带着霜糖走了过来。霜糖已经长成了一个高高瘦瘦的少年,穿着校服,背着书包。
“妈咪,阿婆,阿爷。”霜糖打了个招呼。
“作业写完了吗?”方铨铎问。
“写完了。”霜糖说,“今天学了归并排序,有点意思。”
“哦?那你给阿爷讲讲?”方铨铎来了兴致。
霜糖也不怯场,就在公园的长椅上,给阿爷讲起了分治法的原理。方铨铎听得认真,时不时点头。
方糖和林霜站在一旁,看着这一幕。
阳光透过玉兰花瓣洒下来,斑驳地落在他们身上。
“你说,我们当年那么拼命,是为了什么?”方糖忽然问。
林霜想了想:“为了不后悔。”
“那你现在后悔吗?”
“不后悔。”林霜摇了摇头,“因为我知道,无论怎么选,只要是和你一起,都是最优解。”
一阵风吹过,几片玉兰花瓣飘落下来,落在霜糖的肩膀上,落在方铨铎的膝盖上,也落在方糖和林霜的发间。
方糖伸出手,接住一片花瓣。
她想起了很多年前的那个春天,那个在北大南门口拖着行李箱、迷茫又倔强的女孩。
那个女孩,终于被春风渡过了OI山。
她不仅翻过了那座山,还在山脚下种了一棵树,盖了一座房子,生了一个孩子。
她把那些汗水、泪水、遗憾、欢喜,都化作了养料,滋养着这棵树,让它开花,结果,落叶,归根。
“妈咪,你在想什么?”霜糖讲完课,转过头问。
方糖把那片花瓣放在手心,轻轻吹了一口气。
花瓣随风飞起,越飞越高,越飞越远,最后消失在湛蓝的天空中。
“我在想,春天真好。”
方糖笑着说。
“是啊,春天真好。”林霜握紧了她的手。
春天年年如约而至。
而风,终于把所有人,都送到了属于自己的归处。
第十章:回响与种子
时间像是一条平静流淌的河,在沙溪古镇的梨树下无声滑过,又在钱塘江的潮声中激起浪花。
霜糖十岁那年,林霜和方糖做了一个决定:带着霜糖回到杭州。
并不是为了重回之前的生活,而是因为这里有着全中国最肥沃的OI土壤。方糖看得出来,霜糖骨子里流着他们的血——那种对逻辑着迷、对解谜狂热的因子,在写完第一行“Hello World”并让屏幕闪烁时,就已经觉醒了。
“妈,我想去那个叫‘奶龙’的地方。”
霜糖把一张打印出来的招生简章放在方糖的餐桌上。那是一张略显简陋的A4纸,上面印着“第xx届奶龙信息学奥林匹克集训营招生”,下面还有一行不起眼的小字:“主办方:浙江某大学信奥协会”。
方糖盯着那个熟悉的Logo,手里的筷子顿了一下。
那是她和宁嘎狗、吃饭他们当年待过的地方。那个充满了泡面味、红牛味和键盘声的“难民营”。
“你想好了?那可没什么好玩的。”方糖抬眼看他,“每天早上八点到晚上十点,除了做题就是讲课。没有乐高,没有动画片,只有一堆让你掉头发的算法。”
“我知道。”霜糖坐在椅子上,两条长腿有些局促地伸着,“爸爸说,那是他当年觉得自己是笨蛋,后来又觉得自己变聪明的地方。”
方糖转头看向正在厨房洗碗的林霜。林霜擦了擦手走出来,倚在门框上,眼神温和:“路是他自己选的。如果不去试试,他心里总会有个疙瘩。就像当年那个未解出的‘迷宫寻路’。”
“行。”方糖叹了口气,拿起了那张简章,“那就去报个名。不过丑话说在前头,要是跟不上,别哭着鼻子回来。”
“我才不会。”霜糖挺直了腰杆,“我是你的儿子,也是程雪阿姨带过的徒弟,怎么可能跟不上。”
第十一章:初入奶龙
八月,杭州酷热难耐。
奶龙集训营的地点藏在一所老校区的实验楼里。红砖墙,爬山虎,还有那台常年嗡嗡作响、仿佛随时会罢工的老式中央空调。
方糖把霜糖送到宿舍楼下。303室。
历史总是惊人的相似。
霜糖背着那个印着企鹅图案的书包,站在门口,有些犹豫地回头看了看方糖。
“进去吧。”方糖笑着说,“推开门,也许里面有个像你爸一样的人在发呆。”
霜糖深吸一口气,推开了门。
屋里已经到了两个人。
靠窗的床上坐着一个黑瘦的男生,正盘着腿敲代码,屏幕上密密麻麻全是字符。听到门响,他连头都没回,只是冷冷地吐出一个字:“坐。”
另一个男生坐在下铺,正在往墙上贴海报——不是动漫,而是ACM-ICPC World Final的现场图。他转过身,露出一口白牙:“你好!我叫Nulloip。这是WartenAK。”
霜糖愣了一下。
“WartenAK?Nulloip?这是真名?”
“网名。”那个坐在下铺的男生——Nulloip,爽朗地笑了,“在这个圈子里,谁还在乎真名啊。你叫什么?”
“方……林霜糖。”霜糖差点报出自己的真名,“你们叫我霜糖就行。”
“好名字,听着就甜。”Nulloip拍了拍身边的空位,“过来坐,刚到的吗?哪个学校的?”
霜糖放下行李,走了过去。他看了一眼那个依然背对着他们的WartenAK,心里涌起一种奇怪的感觉。这个人的背影,怎么让他想起了照片里年轻时的陈墨?冷漠,专注,仿佛整个世界只剩下他和那台电脑。
“你们来得早吗?”霜糖问。
“我昨天就到了。”Nulloip指了指对面,“WartenAK是这儿的常客,据说他从小学三年级就开始来奶龙了,是这里的‘活化石’。”
WartenAK的手指突然停了下来。
他转过身,那双深陷的眼睛隔着厚厚的镜片盯着霜糖:“活化石?听说今年有个金牌教练的女儿要来,是你?”
霜糖没想到自己这么快就“社死”了。他脸一红,点了点头:“是我。”
“哦。”WartenAK转过身去,继续敲代码,“那你最好能跟上。别以为你是谁谁谁的儿子就能有特权,这里只看代码。”
霜糖被噎了一下,还没来得及反驳,Nulloip就在旁边解围:“哎呀,老W就是这脾气,别理他。对了,你C++学得怎么样?STL熟练吗?”
“还行吧……”
“那就好。听说这次的教练是‘魔鬼’赵,要是第一轮模拟赛打不好,可是要被劝退的。”
第十二章:魔鬼与入门
赵教是个五十多岁的秃顶老头,头发稀疏得能数得清根数,戴着金丝眼镜,手里常年拿着一个保温杯。
第一堂课,他没有讲算法,也没有讲数据结构。
他在黑板上写了一行字:
OI不是竞技,是修行。
“在接下来的一个月里,你们要学会的第一件事,不是如何拿分,而是如何面对失败。”赵教扫视了一圈底下的几十个孩子,“这里没有省一,没有金牌,只有AC和WA。你们的对手不是坐在你旁边的人,是那该死的评测机。”
“现在,发卷子。”
第一轮模拟赛,题目很简单,只有三道题。全是基础模拟和枚举。
一小时后,评测结果出来了。
大屏幕上红色的“Wrong Answer”和绿色的“Accepted”交替闪烁。
霜糖看着自己的名字:第35名。
三道题,只做出来一道半。
他有些沮丧地低下头。
“别灰心。”旁边的Nulloip拍了拍他的肩膀,他得了第15名,“我第一次来的时候,只做出来一道题,还爆零了一次。”
霜糖转头看WartenAK。
第1名。三道题全过,而且用时最短。
WartenAK面无表情地合上电脑,拿出了一本厚厚的《组合数学》,仿佛刚才那场比赛根本不存在。
“他是怪物吗?”霜糖小声问。
“差不多吧。”Nulloip压低声音,“听说他去年NOIP普及组满分,今年目标是提高组满分。他也是个苦命人,家里条件不好,全靠奖学金和奖金读书。”
霜糖的心里微微一动。
他看向那个孤独的背影,忽然觉得那个背影不再那么冷漠了。
那天晚上,霜糖第一次在奶龙的机房里留到了十点。
WartenAK还在那里。
霜糖鼓起勇气,搬着椅子坐到了他旁边。
“这题……能不能教教我?”霜糖指了指屏幕上那道红色的题目。
WartenAK抬起头,看了他一眼,又看了看题目。
“思路错了。”他拿起霜糖的键盘,噼里啪啦敲了几行代码,“这里不用枚举,用前缀和优化一下。还有,你的数组开小了,会RE。”
他敲完,点了提交。
绿色的“Accepted”跳了出来。
“谢……谢谢。”
“不用谢我。”WartenAK拿起水杯喝了一口,“如果你在NOIP上卡住了,我也不会救你。这只是因为我看不惯那么蠢的代码。”
虽然话很难听,但霜糖还是笑了。
第十三章:CSP初体验
秋天,CSP-J/S认证如期而至。
这是OI生涯的第一场正式战役。
考场上,空调开得很足,但霜糖的手心全是汗。
第一题是简单的字符串处理,他很快切了。第二题是模拟,有些繁琐,但也磕磕绊绊写完了。
第三题,动态规划。
霜糖盯着屏幕,脑子里一片浆糊。状态转移方程怎么列?边界条件怎么处理?
时间一分一秒过去。
冷静。回到原点。
爸爸的声音在他耳边响起。
霜糖深吸一口气,在草稿纸上画出了状态图。推演了一遍,两遍,三遍。
有了!
他开始飞快地敲代码。编译,通过。提交,评测。
等待的几十秒仿佛一个世纪那么漫长。
屏幕上跳出了绿色的分数:100分。
最后的大题是一道图论,难度很大。霜糖只写了个暴力分,拿了30分。
走出考场的时候,阳光刺得他眯起了眼睛。
Nulloip一脸兴奋地冲过来:“我第三题想出来了!用最短路!”
“厉害!”霜糖由衷地赞叹。
“你呢?”
“第三题DP,最后那道题只拿了暴力的分。”霜糖耸了耸肩,“不过应该能拿个一等吧。”
“我也是。”Nulloip笑嘻嘻地说,“走吧,去吃顿好的,老赵请客!”
赵教果然请客了。他在学校门口的小饭馆包了两桌,红光满面地举起杯子:“这次大家都考得不错!我们队有八个J组一等,五个S组一等!这是我们奶龙的荣耀!”
孩子们欢呼雀跃。
霜糖坐在角落里,手里拿着杯子,看着这一张张年轻的脸庞。
他忽然明白了方糖说的那句话:“这就是传承。”
这一代的孩子,依然在为了那一抹绿色而燃烧。
第十四章:冬令营的寒风
CSP的喜悦很快被冬令营的残酷冲刷得一干二净。
省选名额的竞争,比想象中还要激烈。
冬令营设在北方的一所大学里。零下二十度的严寒,风吹在脸上像刀割一样。
每天八小时的高强度训练,晚上还要进行讲题和复盘。
霜糖感到了前所未有的压力。
这里的每一个人,都是省里的顶尖高手。WartenAK依然稳坐钓鱼台,永远是第一个交卷,永远是满分。
Nulloip也因为不适应北方的气候和饮食,状态下滑,经常在模拟赛里爆零。
霜糖自己在中间不尴不尬地徘徊着。第十名,第十五名,第十二名。
他陷入了瓶颈期。
树形DP做不深,图论题推不出正解,数论题更是只能打表。
“我是不是不行啊?”
某个深夜,霜糖坐在宿舍的阳台上,看着窗外漫天飞雪,给方糖打电话。
电话那头,方糖正在哄霜糖的妹妹(没错,林霜和方糖在搬回杭州后,又生了一个可爱的女儿,叫初雪)睡觉。
“怎么?想打退堂鼓了?”方糖的声音温柔而坚定。
“我觉得我就像个傻子。”霜糖的声音带着哭腔,“无论我怎么努力,好像都追不上老W他们。他们看一眼题目就知道思路,我要想半天。”
“儿子,”方糖说,“你知道吗?当年你爸爸在集训队的时候,也被一道题卡了整整三天。”
“真的吗?”
“真的。他那时候就在那台电脑前,吃泡面,喝红牛,眼睛都熬红了。但他没有放弃。他说,卡住的时候,就是成长最快的时候。”
“那你呢?妈你当年也是天才吧?”
方糖笑了:“天才?妈当年要是天才,就不会在NOI赛场上手抖了。妈当年也在模拟赛里考过第十七名,差点连省队都没进。”
“真的?”
“真的。所以,你现在经历的,我们都经历过。这没什么好丢人的。重要的是,你现在坐在这个阳台上,看着雪,是想放弃,还是想明天接着干?”
霜糖握紧了手机,看着窗外飞舞的雪花。
“想接着干。”
“那就去睡觉。明天早上八点,老赵还要讲网络流。”
“嗯。妈,晚安。”
“晚安,儿子。”
挂了电话,霜糖回到屋里。WartenAK还在看书,Nulloip已经打起了呼噜。
霜糖爬上床,闭上眼睛。
梦里,他梦见自己变成了一只蚂蚁,在茫茫雪原上爬行。虽然很冷,虽然路很长,但他一直记得,那个温暖的南方,有一盏灯在等他。
第十五章:NOIP前的惊魂
冬令营结束,春天来了。
NOIP(全国青少年信息学奥林匹克联赛)是通往NOI(全国决赛)最重要的一关。只有拿到全省前几名的选手,才有资格进入省队,去争夺那几十张决赛入场券。
这一年的竞争尤为惨烈。因为政策的调整,省选名额缩减了一半。
这意味着,哪怕是全省前十,也有可能被挡在NOI的大门之外。
比赛前一周,奶龙集训队组织了一次最终模拟赛。
这次模拟赛采用了NOIP的真题混合卷,难度极高。
霜糖发挥得极差。
第四题完全没思路,只写了暴力。第三题细节处理不当,只拿了60分。总排名掉到了第二十名。
如果这是正式比赛,他将彻底无缘NOI。
“你太急了。”赵教把他的评测记录拍在桌子上,“第四题其实是一个很明显的网络流模型,但是你因为慌乱,连图都没建对。第三题那个细节,我上课强调过不下三次!”
霜糖低着头,不敢说话。
“还有三天就是NOIP了。”赵教叹了口气,“如果这个状态去比赛,你就别去了,省得丢人。”
那天晚上,霜糖一个人坐在机房里发呆。
屏幕上是他写的代码,红红绿绿的,像是一张嘲笑他的脸。
“还在郁闷?”
WartenAK不知何时走了过来,手里拿着一罐冰可乐。
“老赵骂我是吧?”WartenAK拉开拉环,喝了一口,“他当年骂我骂得更狠。说我‘脑子里装的是浆糊’。”
“那你……”
“所以我把他骂我的话都记在笔记本上,贴在床头。每天早上一睁眼就能看到。”
霜糖愣了一下。
“其实你很有天赋。”WartenAK很少夸人,“你的思维很活跃,只是不够沉稳。你的代码风格很像你妈妈,很飘逸,但是容易翻车。”
“你认识我妈?”
“在这个圈子里,谁不认识‘春风渡我过OI山’的故事?”WartenAK耸了耸肩,“当年的风云人物,退役后还出过那道著名的‘回声’题。”
“那道题……是你做的?”
“我?”WartenAK笑了笑,“我当年只拿了部分分。真正AC的那个人,现在在MIT读博,是我们都望尘莫及的大神。”
霜糖看着WartenAK,忽然觉得这个平日里冷漠的学长,其实也有着一颗滚烫的心。
“学长,你说我能进NOI吗?”
WartenAK看着窗外初升的太阳。
“不知道。但我知道,如果你现在放弃,那就肯定不能。如果你拼了命去写,哪怕是WA,至少没有遗憾。”
第十六章:惊魂时刻
NOIP赛场,省城的一所重点高中。
几千名考生,严密的安保,屏蔽仪,金属探测器。
气氛压抑得让人喘不过气。
霜糖坐在位置上,深吸了一口气。
看题。
第一题,简单的计数。切了。
第二题,最短路变种。切了。
第三题,区间DP。有些棘手,但他想起了冬令营时赵教讲的“断环为链”,磕磕绊绊写完了。
第四题,综合题。
这道题是数据结构+贪心。
霜糖盯着题目,手心开始冒汗。时间只剩下一个半小时了。
如果这道题拿不到分,那就完了。
冷静。回到原点。
他在草稿纸上画出了数据的特征。发现这道题其实可以用平衡树来维护,但是写平衡树太慢了。
有没有更简单的办法?
他忽然想起了爸爸林霜说过的一句话:“有时候,不需要完美的数据结构,只需要一颗想要AC的心。”
暴力!
能不能用线段树套一个暴力修改?
虽然复杂度看起来会炸,但是如果数据的水分比较大……
拼了!
霜糖开始疯狂敲代码。手指在键盘上飞舞,像是在弹奏一首激昂的钢琴曲。
最后一分钟。
他点了提交。
编译通过。提交成功。
走出考场的时候,霜糖感觉自己的腿都在发抖。
Nulloip一脸灰败地走出来:“完了完了,最后一道题我想复杂了,数组开爆了,只拿了30分。”
WartenAK依旧是那副波澜不惊的样子:“还好,都切了。”
“学长,你最后一道题怎么做的?”霜糖问。
“平衡树。”WartenAK淡淡地说。
霜糖心里一凉。
看来自己的暴力大概率要挂了。
第十七章:第十七名的绝望
一周后,成绩公布。
那天下午,霜糖正坐在家里发呆,手机突然炸了。
Nulloip在群里疯狂@他:“霜糖!快看官网!出分了!”
霜糖颤抖着手打开了网站。
查询页面加载得很慢。
终于,那行字跳了出来:
总分:310分。全省排名:第17名。
霜糖感觉天旋地转。
第17名。
而今年的省队名额,只有16个。
这就意味着,他被挤下来了。哪怕只差一分,哪怕只差一个人。
“怎么会这样……”霜糖瘫坐在椅子上,眼泪夺眶而出。
第四题果然挂了。暴力分只拿了10分。
只差这10分,他就能在前十,就能稳进省队。
“啊——!”他抓起桌上的书,狠狠地摔在地上。
方糖闻声跑过来:“怎么了?”
“我没进……我是第17名……”霜糖哭着说,“完了,我的一切都完了。”
方糖看着屏幕上的排名,眉头紧锁。她知道今年的竞争激烈,但她也了解霜糖的实力。
“别哭。”方糖抱住儿子的头,“也许还有转机。”
“什么转机?名额就是16个,我又没超常发挥,怎么可能挤进去?”霜糖绝望地喊道。
“先吃饭,吃完饭再说。”林霜也走了过来,默默地捡起地上的书。
那顿饭吃得很沉闷。
霜糖一口也没吃,把自己关在房间里。
方糖和林霜坐在客厅里,面面相觑。
“要不要……”林霜欲言又止。
“我知道你想说什么。”方糖拿出手机,翻出一个号码,“给老赵打个电话吧。”
第十八章:作弊者与迟到的正义
电话很快接通了。
“老赵,我是方糖。”
“哦,方糖啊。”赵教的声音听起来也很疲惫,“我知道你要问什么。霜糖那孩子确实可惜了。第17名,就卡在那儿了。”
“有没有……什么申诉渠道?”方糖问。
“申诉?”赵教叹了口气,“除非能证明前面的选手有问题,否则申诉也没用。但NOIP的查分系统是自动化的,机器不会撒谎。”
“机器不会撒谎,人会。”林霜在一旁冷冷地说。
方糖看了他一眼,继续对着电话说:“老赵,你还记得当年IOI的那件事吗?那个因为身体原因退赛的选手?”
“记得啊,怎么了?”
“有些事情,表面看着是意外,其实不然。”方糖说,“最近网上有人在传,这次NOIP有几个考场的监控有问题,有人疑似利用设备作弊。”
电话那头沉默了。
“这可是大事啊。”赵教的声音低了下来,“如果真是这样,那就是严重违反考纪了。但是……谁敢去查?如果查出来没事,那就是给自己找麻烦。”
“我去查。”方糖斩钉截铁地说。
“你?你凭什么?”
“凭我是当年的金牌,凭我是命题组的顾问,凭我……”方糖顿了一下,“凭我不能让我儿子的努力,被作弊者窃取。”
挂了电话,方糖立刻打开电脑,开始联系当年的老队友。
郭天依、裴嘉明、陈墨……甚至还有已经在大洋彼岸的bunH2O。
这是一场无声的战役。
他们在技术社区里搜集证据,分析考场监控的异常流量,对比选手代码的相似度。
三天三夜,方糖几乎没有合眼。
终于,他们发现了一个惊人的秘密。
在霜糖所在的那个考场,有几位高分选手的代码风格异常相似。更重要的是,他们在提交代码的时间点上,存在诡异的同步性。
虽然他们使用了不同的变量名和结构,但在核心逻辑上,有着一种无法解释的“同源性”。
更有力证据是,他们通过回放考场日志,发现那几位选手的USB端口,在比赛开始后的十分钟内,都有过异常的大数据读写记录。
这是典型的外部数据注入。
“找到了。”陈墨在深夜发来一条消息,“确凿证据。那个ID叫‘Ghost’的账号,是源头。”
方糖看着屏幕上那个红色的标记,手在颤抖。
这不仅是对霜糖的不公,更是对OI精神的亵渎。
她整理好了所有证据,发给了CCF(中国计算机学会)竞赛委员会和NOI科学委员会。
邮件的标题只有两个字:
申诉。
第十九章:逆风翻盘
接下来的几天,是漫长的等待。
霜糖把自己关在房间里,谁也不见。他已经放弃了希望,开始准备下一年的中考。
方糖每天都会收到几封邮件,有时候是询问细节的,有时候是要求补充材料的。
她都耐心地一一回复。
直到那个周二的下午。
官网再次更新了一则公告。
关于20xx年NOIP联赛违纪行为的处理决定
公告中详细列举了作弊者的手段和证据,并宣布:取消涉事选手的成绩,并禁赛三年。
紧随其后的是一张新的排名表。
霜糖刷新了页面。
总分:310分。全省排名:第11名。
第11名!
那个红色的数字像是一团火,瞬间点燃了霜糖冰冷的心。
他跳了起来,冲出房间,一把抱住正在看手机的方糖。
“妈!我进去了!我进NOI了!”
方糖笑着拍了拍他的后背:“我就说嘛,会有转机的。”
“这到底是怎么回事?”霜糖一脸懵逼。
方糖把公告递给他:“你自己看。有人作弊被抓了,他们的成绩取消了。”
霜糖看着公告,眼神从惊喜转为愤怒,最后变成了坚定。
“他们怎么敢……”霜糖握紧了拳头,“在我的赛场上作弊。”
“这就是现实。”林霜走过来,把手放在他的肩膀上,“有光的地方就有影子。但你要相信,正义也许会迟到,但绝不会缺席。”
“爸,妈。”霜糖看着他们,“我发誓,在NOI的赛场上,我要用实力说话。我要拿金牌,堂堂正正地拿。”
“好!”方糖和林霜异口同声,“我们陪你!”
第二十章:新的起点
NOI的备战号角吹响了。
这次,霜糖不再是那个迷茫的新手。
他有了一起并肩作战的伙伴——WartenAK(省第一名)、Nulloip(运气爆棚挤进省队)、还有一个叫loseIOI_qwq的奇怪学弟。
loseIOI_qwq是个神经兮兮的男生,据说是因为他在洛谷上的ID叫这个,而且签名是“每次打IOI都想lose”。
“学长,你为什么叫这个名字啊?”集训第一天,Nulloip好奇地问。
“因为我想提醒自己,失败是常态。”loseIOI_qwq推了推眼镜,“只有接受了失败,才能赢。”
大家纷纷表示:“学弟悟性真高。”
集训队的教练依然是赵教,但他身边多了一个人。
是陈墨。
当年那个冷漠的少年,如今已经是一位著名的算法工程师,也是国家队的特聘教练。
“好久不见。”陈墨穿着那件万年不变的灰色卫衣,站在讲台上,目光扫过底下的孩子们。
“欢迎来到地狱模式。”陈墨嘴角勾起一抹淡淡的笑意,“在这里,没有人会同情你。如果你想赢,就踩着我们的尸体上去。”
底下一片哀嚎。
“太狠了吧陈教!”
“这真的不是劝退营吗?”
霜糖坐在第一排,看着陈墨,心里涌起一股暖流。
他知道,这个世界上最聪明、最厉害的一群人,正在把他们的经验,毫无保留地传授给下一代。
这就是传承。
这就是OI。
这就是……春风。
第二十一章:代号“地狱周”
陈墨口中的“地狱周”,名副其实。
第一天的任务是:重构。
所有人必须将自己NOIP比赛中通过的代码,完全打乱,用一种完全不同的算法逻辑重写一遍。
“代码只是工具,逻辑才是灵魂。”陈墨站在白板前,手里拿着一只黑色的马克笔,“你们之前的代码,能跑通是因为评测机的数据太水了。到了NOI赛场,数据专治各种花里胡哨。”
霜糖看着自己电脑屏幕上的第四题代码。
那是他用了暴力加线段树混过的题目。现在,他要把它改成正解——一种极其复杂的动态规划优化。
“这……这也太难了吧。”旁边的loseIOI_qwq抓着头发,屏幕上全是红色的波浪线,“我的DP数组开到十维了,内存都要爆了。”
“那就是你的思路错了。”陈墨不知何时幽灵般地出现在他身后,冷冷地说,“为什么一定要存那么多状态?把没用的维度扔掉。”
“可是……”
“没有可是。回到原点。”陈墨丢下这四个字,转身走向下一个受害者。
霜糖深吸了一口气。
回到原点。
他在草稿纸上重新画出了数据流图。这一次,他不再急着写代码,而是试图去理解这个问题的本质。
一天,两天,三天。
机房里除了键盘声,就只剩下沉重的呼吸声。
WartenAK依然是最快的。他不仅重构了自己的代码,还顺手把评测机的一个小bug给修了。
“你这家伙,以后别当选手了,来当评测员吧。”Nulloip羡慕嫉妒恨。
“那样就没奖金拿了。”WartenAK头也不抬。
霜糖在第四天晚上,终于推通了那个DP方程。
当绿色的“Accepted”跳出来的那一刻,他感觉浑身的毛孔都张开了。
“漂亮。”陈墨不知何时站在他身后,难得地赞了一句,“虽然代码风格有点飘,但逻辑没问题。”
霜糖转过头,看到陈墨手里端着一杯咖啡,眼底有着淡淡的青色。
“陈教,你这几天都没睡吗?”
“习惯了。”陈墨喝了一口咖啡,“你们在重构代码,我也在重构教学方案。去年的国集题,今年可能要改。”
“改?”
“嗯。今年的出题组里,有个疯子。”陈墨意味深长地笑了笑,“听说她想出一道关于‘情感’的题。”
霜糖的心跳漏了一拍。
情感?
第二十二章:那个“疯子”
NOI的赛制是两天,每天三道题,共六道题。
这六道题,涵盖了图论、数论、计算几何、动态规划、数据结构等计算机科学的方方面面。
而今年的“疯子”出题人,正是方糖。
此时的方糖,已经身在长沙的封闭命题现场。
她坐在酒店的会议桌前,正在和郭天依争论第三题的数据范围。
“这个
“那就用分块。”方糖平静地说,“或者,让选手自己去发掘那个
“分块?那这道题就变成了考察常数的题了,这不符合NOI的出题风格!”
“风格是人定的。”方糖推了推眼镜,“我要考察的不是他们会不会套模板,而是他们敢不敢打破常规。”
郭天依被噎住了。
坐在角落里的裴嘉明推了推眼镜:“我觉得方糖说得有道理。而且,这道题的背景故事很有意思。”
“什么背景故事?”
“两个AI之间的恋爱。”裴嘉明指了指方糖的屏幕,“输入是一系列的情感交互序列,输出是它们最终能否走到一起。”
郭天依愣了一下,随即笑出了声:“方糖,你这是要把自己的私货夹带进NOI啊?”
“这不是私货。”方糖看着屏幕上那个复杂的网络流模型,“这是我对OI的理解。OI不仅仅是冰冷的0和1,它也是关于选择、关于连接、关于……爱。”
“得得得,别煽情了。”郭天依摆摆手,“那就按你说的办。不过,数据一定要出得狠一点,别让这帮小鬼混过去。”
方糖笑了笑,继续敲代码。
而在千里之外的杭州,霜糖正在机房里和一道模拟题死磕。
“妈是不是去出题了?”Nulloip凑过来问,“听赵教说,今年的题有点‘邪门’。”
“什么叫邪门?”霜糖头也没抬。
“就是……特别感性。”Nulloip抓了抓脑袋,“赵教说,今年的题可能会让很多理性大于感性的男选手崩溃。”
霜糖的手指顿了一下。
感性?
他想起了小时候,方糖给他讲的那道“回声”题。
那个关于记忆衰减的函数。
如果这次的题也和记忆、情感有关……
那该怎么办?
那些复杂的算法,能解得开人心的谜题吗?
第二十三章:集训队的崩溃
距离NOI还有一个月。
集训队的模拟赛成绩开始出现两极分化。
WartenAK一骑绝尘,稳居第一。霜糖和Nulloip在四五名徘徊。而那个叫loseIOI_qwq的学弟,因为心态崩了,排名一路掉到了二十名开外。
那天晚上,loseIOI_qwq在操场上哭了。
霜糖和Nulloip找到他的时候,他正坐在双杠上,抹着眼泪。
“怎么了?大男人哭什么。”Nulloip拍了拍他的肩膀。
“我……我觉得我不适合这个。”loseIOI_qwq抽噎着,“今天那道数论题,我想了三个小时,连暴力的分都拿不到。我的脑子就是不行,比不上你们这些天才。”
霜糖沉默了。
他也曾有过这样的时刻。那种看着题目毫无头绪,觉得自己就是废物的无力感。
“loseIOI_qwq。”霜糖爬上双杠,坐在他旁边,“你知道我为什么叫霜糖吗?”
“因为你叫林霜糖?”
“对,一半是你林霜学长的霜,一半是你方糖学姐的糖。”霜糖看着远处的路灯,“这个名字的意思是,在最冷的冬天,也能尝到最甜的滋味。”
“什么意思?”
“意思就是,OI这条路,本来就是苦的。你要学会在苦里面找糖吃。”霜糖指了指星空,“你看那些星星,它们离我们那么远,光芒也是几万年前发出的。但只要你还看着它们,它们就在陪着你。”
loseIOI_qwq停止了哭泣,抬起头看着星空。
“你说……我还有希望吗?”
“有没有希望,不是看排名,是看你明天早上八点,还会不会坐到那个机房里。”霜糖跳下双杠,“明天见。”
第二天一早,loseIOI_qwq果然出现在了机房里。
虽然眼睛肿得像核桃,但他依然坐在了电脑前,打开了编译器。
WartenAK路过他身边,停顿了一下,丢下一张纸条。
loseIOI_qwq捡起来一看,上面写着一行复杂的公式,正是昨天那道数论题的一个关键引理。
他愣住了,抬头看去,WartenAK已经回到了自己的座位上,仿佛什么都没发生过。
loseIOI_qwq握紧了纸条,眼眶又红了。
但这一次,不是因为绝望,而是因为感动。
第二十四章:NOI前夕
七月,长沙。
火炉城市的热情,让每一个走出机场的人都汗流浃背。
霜糖拖着行李箱,跟着赵教,来到了这次NOI的举办地——中南大学。
报到处人山人海。
来自全国各地的顶尖高手齐聚一堂。有的穿着统一的队服,有的戴着耳机,有的手里拿着厚厚的打印资料。
空气中弥漫着一种名为“野心”的味道。
“看,那是去年的金牌得主,那个叫裴……”
“那是谁啊?长得真帅。”
“不知道,可能是哪个省的大神吧。”
霜糖听到了很多窃窃私语。他感觉自己像是一个闯入巨人国的小矮人。
“别看别人。”林霜帮他提着行李箱,在他耳边说,“盯着自己的路。”
“爸,你来了?”
“嗯,我请了年假。”林霜笑了笑,“你妈在后面,她要等到比赛开始才能过来。”
方糖作为命题人,有着严格的保密协议,比赛结束前不能和任何选手接触。
“妈在哪个宾馆?”霜糖问。
“不能说。”林霜摇了摇头,“这是纪律。不过她让我给你带句话。”
“什么话?”
“无论题目多难,记得回到原点。”
霜糖点了点头。
回到原点。
这四个字,已经成为了他们家的家训。
晚上,领队会议。
赵教回来的时候,脸色凝重。
“怎么了?”霜糖问。
“今年的题……真的有点邪门。”赵教揉了揉太阳穴,“样例给得很友好,但是数据范围……非常极限。而且,第二天的题,背景故事非常……文艺。”
“文艺?”
“对。据说是一个关于‘时间旅行者’的故事。题目要求选手模拟一个时间旅行的过程,处理因果律。”
霜糖的心里咯噔一下。
时间旅行。因果律。
这听起来……就像是在说他和林霜的故事,或者说,是方糖和程雪的故事。
妈,你到底想考我们什么?
第二十五章:第一天战役
NOI考场,中南大学新校区。
安检极其严格。霜糖把自己的水杯、手表、书包都放在了外面的柜子里。只带了一把身份证和一个透明笔袋走了进去。
巨大的机房里,几百台电脑整齐排列。空气里弥漫着一种令人窒息的安静。
坐下。开机。输入准考证号。
屏幕上跳出了第一天的题目。
T1:《握手问题》。
简单的组合数学。霜糖扫了一眼,推了推公式,十分钟切了。
T2:《迷雾森林》。
图论题。在一棵树上进行路径修改和查询。看起来像是个树链剖分,但仔细读题后发现,有一个限制条件非常恶心。
霜糖陷入了沉思。
时间一分一秒过去。
周围的键盘声开始密集起来。
WartenAK已经提交了T2。Nulloip还在抓耳挠腮。loseIOI_qwq的脸已经变成了猪肝色。
冷静。
霜糖在草稿纸上画出了树的形态。
他发现,那个看似恶心的限制条件,其实把树变成了一个“仙人掌”。如果是仙人掌图,那么就可以用圆方树来维护。
有了!
他开始敲代码。因为紧张,手指有些僵硬,敲错好几个字符。
深呼吸。
终于,在距离考试结束还有两小时的时候,他敲完了T2的代码。
提交。
评测。
绿色的AC!
现在的分数是200分。
还剩下最后一道大题。
T3:《最后的一封信》。
题目描述极其冗长。讲述了一个关于写信、寄信、收信的故事。要求选手处理一系列的时序事件,维护一个动态集合,支持撤销操作。
这是一个可持久化数据结构的大杂烩。
可持久化线段树?可持久化平衡树?还是可持久化并查集?
霜糖的大脑飞速运转。
时间只剩下一个半小时了。
如果打暴力,只能拿30分。如果冲正解,可能会写挂,甚至爆零。
拼一把吗?
他想起了WartenAK给他讲的那个关于“拆墙”的故事。
拼了!
霜糖选择了可持久化线段树来维护权值,配合一个BIT来维护集合的和。
这是一个极其大胆的组合。
代码量巨大,细节极多。
就在考试结束前五分钟,霜糖的手指按下了回车键。
编译通过。提交成功。
屏幕上跳出了评测结果:60分。
虽然不是满分,但比暴力分高了一倍。
走出考场的时候,霜糖感觉自己的腿都在发抖。
“怎么样?”林霜在门口等他。
“T1满分,T2满分,T3拿了60。”霜糖虚脱般地说,“不知道排名怎么样。”
“能拿60分就不错了。”林霜拍了拍他的肩膀,“我刚才听别人说,T3很多人都爆零了。”
晚上,成绩公布。
大屏幕上,红色的分数跳动着。
霜糖:260分。排名第23。
WartenAK:300分。满分。排名第1。
loseIOI_qwq:150分。勉强进了银牌线。
Nulloip:240分。排名第45。
“第一天算是稳住了。”赵教松了一口气,“只要明天不崩,金牌有望。”
但霜糖的心里却依然沉甸甸的。
因为T3,只拿了60分。
那道题背后的逻辑,他感觉自己并没有完全吃透。
那是一封“最后的信”,他真的读懂了吗?
第二十六章:最后的信
第二天。
T4:《破晓》。
计算几何。一道极其恶心的题目,需要处理圆的并集面积,以及一系列的动态查询。
霜糖虽然不喜欢几何,但他硬着头皮写了一个自适应辛普森积分,拿了70分。
T5:《回忆的沙漏》。
这是方糖出的那道“邪门”的题。
题目描述:
有一个沙漏,里面装满了记忆的沙子。沙子会随着时间流逝而漏下。每一次翻转沙漏,都会改变沙子的流向。你需要维护这个沙漏的状态,支持翻转、查询剩余沙量、合并两个沙漏。
乍一看,这是一个数据结构题。
但霜糖读着读着,却读出了一种不一样的味道。
翻转沙漏,就像是人生中的每一次选择。
每一次翻转,都会改变未来的流向。
查询剩余沙量,就像是问自己:我还有多少时间?
合并两个沙漏,就像是两个人走到了一起。
这不是一道算法题。
这是一道哲学题。
“感性大于理性。”Nulloip在旁边嘟囔,“这怎么写啊?用爱解题吗?”
霜糖没有说话。
他盯着屏幕,看着那个沙漏的示意图。
回到原点。
沙漏的本质是什么?
是时间。
是流动的沙子。
如果不去维护沙子的每一粒,而是去维护沙子流动的“势”呢?
势能分析。
这是一个在高级数据结构中经常用到的技巧。
霜糖的脑海里闪过一道灵光。
他把沙漏看作一个整体,维护它的“翻转状态”和“剩余时间”。
然后,他用一颗LCT(Link-Cut Tree)来维护沙漏之间的连接关系。
这简直是个疯狂的想法。
用动态树来维护时间?
但霜糖觉得,这可能是正解。
因为只有动态树,才能完美地模拟沙漏的翻转、分离、合并。
他开始疯狂地写代码。
LCT本来就是一种极其复杂的数据结构,再加上这道题的特殊性质,代码的难度成倍增加。
时间一分一秒过去。
霜糖感觉自己像是在走钢丝。每写一行代码,都要反复检查三遍。
WartenAK已经提交了T5,脸上露出了深思的表情,似乎在权衡什么。
loseIOI_qwq已经放弃了,趴在桌子上睡觉。
只有键盘的敲击声,像战鼓一样敲打着霜糖的心脏。
最后十分钟。
霜糖敲下了最后一个分号。
编译。
通过。
提交。
屏幕上转圈。
一秒,两秒,三秒。
绿色的AC跳了出来。
霜糖瘫软在椅子上。
他做到了。
他还剩最后一道题,T6。
但他已经没有时间了。他只能写了个最简单的暴力,拿了10分。
走出考场,阳光刺眼。
“妈!”霜糖一眼就看到了站在远处的方糖。
方糖穿着一身素色的长裙,站在树荫下,微笑着看着他。
霜糖冲过去,一把抱住了她。
“妈!那道沙漏题!我用LCT做的!”
方糖愣了一下,随即笑了。
“好孩子。”她摸着霜糖的头,“我就知道,你能读懂。”
“读懂什么?”
“读懂那封信。”方糖看着他的眼睛,“不管沙子怎么流,不管沙漏怎么翻转,爱是永恒的常数。”
霜糖的眼睛湿润了。
原来,这才是这道题的真谛。
不是算法,是爱。
第二十七章:金银铜的宿命
成绩公布的那天晚上,中南大学的体育馆灯火通明。
大屏幕上的排名像股价一样跳动。
霜糖的心脏提到了嗓子眼。
林霜握着他的手,手心里全是汗。
终于,排名定格了。
第11名。
金牌。
WartenAK毫无悬念地拿下了第一名,入选国家集训队。
Nulloip发挥超常,拿了银牌第3名。
loseIOI_qwq虽然没拿到奖牌,但他的成绩离铜牌线只差了一分,也算是虽败犹荣。
“恭喜!”赵教激动地抱住霜糖,“我就知道你可以的!”
霜糖看着屏幕上的排名,心里却异常平静。
他拿到了金牌。
但他并没有像想象中那样狂喜。
因为只有他自己知道,那道T6,他只拿了10分。那道“最后的信”,虽然AC了,但他是凭借着一种直觉和运气,而不是完全理解了其中的逻辑。
他还不够强。
他看着站在领奖台最中央的WartenAK。
那个少年依然是一副波澜不惊的样子,手里拿着金牌,仿佛那只是一块普通的铁片。
那就是差距。
“别灰心。”林霜似乎看穿了他的心思,“你才高一,还有机会。”
“我知道。”霜糖握紧了拳头,“明年,我会拿回来。”
“拿回什么?”
“拿回第一名。”
第二十八章:离别与启程
NOI结束后,是漫长的暑假。
WartenAK因为入选了国家集训队,将要去北京进行为期一年的魔鬼训练,冲击IOI(国际信息学奥林匹克)国家队。
临行前,奶龙集训队组织了一场散伙饭。
依然是在那家小饭馆,依然是那几道菜。
但人,却变了很多。
Nulloip要回去备战高考了,决定退役。loseIOI_qwq发誓明年要卷土重来。
而WartenAK,即将踏上属于他的征途。
“学长。”霜糖举起杯子,“在北京,加油。”
WartenAK看了他一眼,难得地露出了一丝微笑:“你也加油。别让我明年还没见到你,就先把你超过了。”
“放心吧,明年我会追上你的。”
“那就好。”WartenAK碰了碰杯子,“OI山上见。”
吃完饭,大家在校门口告别。
WartenAK拖着行李箱,背影在路灯下拉得很长。
霜糖看着他,仿佛看到了当年的林霜,当年的陈墨,当年的……铝の。
那些背影,都是孤独的,都是坚定的。
他们都是去攀登那座OI山的人。
而霜糖,也要开始他新的攀登了。
高二,是分水岭。
也是他决定未来的关键一年。
“妈,我想好了。”那天晚上,霜糖对正在整理教案的方糖说,“我要冲IOI。”
方糖停下手中的动作,看着他:“你知道这意味着什么吗?”
“意味着我比别人少睡一半的时间,少玩一半的游戏,少看一半的电视。”霜糖的眼神很亮,“但我能离山顶更近一步。”
“那就去吧。”方糖笑了,“山路虽然陡,但风景独好。”
“还有……”
“还有什么?”
“我想让爸爸教我木工。”霜糖有些不好意思地说,“我觉得,光有代码是不够的。我想亲手做一个能装下我梦想的盒子。”
方糖愣了一下,随即笑出了声。
“好。让你爸爸教你。”
窗外,蝉鸣阵阵。
夏天过去了,秋天来了。
而在南方的一个古镇里,程雪正在给一群山里的孩子讲电脑课。
“看,屏幕上的这只小乌龟。”
孩子们瞪大了眼睛。
“它能听懂我们的话。”
程雪笑着敲了一行代码。
forward(100)
小乌龟向前爬了一百步。
“哇——!”孩子们惊呼。
程雪看着他们,想起了很多年前,那个在北大南门口拖着行李箱的女孩。
那个女孩,现在已经是个母亲,是个优秀的命题人,是个幸福的妻子。
而她,程雪,也在另一个维度上,完成了她的传承。
春风渡我过OI山。
山还在,风还在。
故事,还在继续。
第二十九章:程雪的最后一课
程雪走的那天,沙溪古镇下了一场小雨。
方糖接到电话的时候,正在太子湾公园里看玉兰。电话是霜糖打来的,声音很轻:“妈,程雪阿姨走了。就在今天早上,睡着走的,很安详。”
方糖握着手机的手慢慢垂下来,手机滑落,砸在草地上,屏幕碎了一块。她低头看着那几片碎了的玻璃,觉得有什么东西也在她心里碎了一小块。
她没有哭。她只是蹲下身,把手机捡起来,拂掉草叶和泥土,翻了个面,让碎掉的那一面朝下,然后继续往前走。走了几步,她停下来,抬头看了看那棵玉兰树。花还开着,白色的花瓣在风里轻轻晃着,和很多年前一样。她看了很久,久到路过的行人奇怪地看了她一眼,她才低下头,继续走。
她订了最近的一班飞机去云南。林霜陪她去的,一路上什么也没说,只是在飞机降落的时候轻轻握了一下她的手。方糖看了他一眼,没有抽开。
沙溪古镇还是老样子。青石板路被雨水打湿,泛着黝黑的光。那所小学还在,孩子们还在读书,只是那个教他们写代码的女老师不会再来了。
程雪住在镇外的一间小屋里,是她支教的时候自己租的。屋子不大,收拾得很干净。方糖推门进去的时候,看到床头放着一台老旧的笔记本电脑,屏幕还亮着,上面是一段还没写完的代码。光标在一行注释的末尾闪烁,像是一句话说到一半忽然停住了。方糖走过去看了一眼,那是一段关于"人生博弈论"的教学程序,注释写到一半,停在"如果找不到最优解……"这几个字上。
方糖伸出手指,轻轻碰了一下屏幕上的光标。它还在闪,像是在等她接上那句话。她想了想,在键盘上敲了几个字:"那就接受次优解。"
然后她合上了电脑。
整理遗物的时候,方糖在程雪的枕头底下发现了一封信。信封上写着"给方糖"三个字,字迹有些歪斜,像是写的时候手在发抖。方糖拆开信,里面只有几行字,简短得像一段没有注释的代码:
"方糖,如果我有一天不在了,你别哭。我这一生最好的决定,就是在北大南门口等过你。虽然没有等到结局,但那个等待本身,已经很好了。那盆多肉,还在吗?"
方糖把信折好,放进口袋里。她没有哭,但她站在那间小屋的窗边,看着外面淅淅沥沥的雨,站了很久。雨丝打在玻璃上,往下淌,把窗外那些绿色的树影模糊成一片深深浅浅的水彩,像小时候她们在机房外的走廊上看过的那场雨——那时候她们还年轻,以为人生很长,以为答案永远会来。
那天晚上,方糖坐在程雪那间小屋里,打开那台旧电脑,把那段没写完的代码接上了。她写了一整个晚上,直到清晨第一缕光线从窗户的缝隙里照进来,落在键盘上,把那些字母映成淡金色的。她写完最后一行,按下回车键,屏幕上跳出一行字:"人生博弈论:当最优解不可达时,次优解即最优解。"
她靠在椅背上,看着窗外渐渐亮起来的天,觉得程雪应该会喜欢这个答案。
第三十章:多肉
方糖回到杭州之后,把那盆多肉从窗台上搬了下来。那是程雪很多年前寄给她的那盆,叶子已经从当初的几片长成了满满一盆,绿得厚实而安静。她把那盆多肉换了一个更大的花盆,放在了客厅阳光最好的位置。林霜看到她搬花盆的时候,走过来帮她扶了一下,什么也没问。
霜糖周末回家的时候看到了那盆多肉。他蹲下来看了看,伸出手指碰了碰最外面那片叶子:"妈,这是程雪阿姨的?"
"嗯。"方糖正在厨房里煮面,头也没回,"她留给我的。"
霜糖没再问。他站起来走到厨房门口,看着方糖的背影。她的动作很稳,正在往锅里下面条,和平时没什么两样。但霜糖注意到她今天放了葱花——程雪不喜欢葱花,所以方糖每次和程雪一起吃饭的时候都不会放。今天她放了。霜糖没有说破,他只是走进厨房,拿了两个碗摆在桌面上。
方糖把面盛进碗里,两个人面对面坐着吃。吃到一半,霜糖忽然说:"妈,我想去一趟沙溪。"
方糖的筷子停了一下:"去干什么?"
"去看看程雪阿姨教过的那群孩子。我想替她把这个课接下去。"霜糖低着头,用筷子搅着碗里的面,"我在她电脑里看到那个文件夹了。里面是她的教案,写得特别详细。我能看懂。"
方糖没有说话。她低头吃了一口面,嚼了很久才咽下去,然后她说:"好。那你去吧。什么时候走?"
"下周末。"
"那我给你收拾行李。"
霜糖抬起头看了她一眼,想说"不用",但他看到方糖低头吃面的样子,那个样子让他想起很多年前,程雪坐在他对面喝汤的样子。他点了点头:"好。"
第三十一章:沙溪的讲台
下周末,霜糖背着背包,坐上了去云南的飞机。他带了一台笔记本电脑,一本程雪的教案复印件,还有一张写满了注释的草稿纸——出发前一晚他熬夜整理的那些注释。
沙溪小学的孩子们还记得他。他之前跟方糖来过几次,孩子们叫他"大哥哥"。看到他出现在校门口的时候,几个孩子兴奋地跑过来,围着他转。他蹲下来,挨个摸了摸他们的头,然后说:"你们程老师走了,但她的课还没上完。以后我来给你们上,好不好?"
孩子们安静下来。其中一个扎着羊角辫的小女孩仰着头问他:"程老师不回来了吗?"
霜糖想了一下,说:"程老师去很远的地方了。但她留给你们的那些东西,还在。比如那只小乌龟,你们还记得吗?"
"记得!"孩子们七嘴八舌地喊起来,"forward(100)!""left(90)!""我还会画正方形!"
霜糖笑了。他站起来,走进那间教室,打开电脑,把投影仪连上。屏幕上跳出了那只熟悉的小乌龟。他敲了一行代码,小乌龟在屏幕上缓缓爬动,画出一个圆。孩子们发出惊叹声。霜糖站在讲台上,看着那些亮晶晶的眼睛,仿佛透过他们看到了很多年前程雪站在这里的样子。他也终于开始明白为什么她愿意留在这样一座偏远的深山里,翻过一座又一座更沉默的山,亲手把代码的种子埋进最不可能发芽的土壤里。那不仅仅是在教编程,那是在帮那些孩子看到山外面的光。
那天下午,霜糖给孩子们上了第一节课。课很简单,就是教他们用循环画多边形的组合图形。孩子们学得很快,键盘声在教室里噼里啪啦地响起来。霜糖站在窗边看着他们,阳光从窗外照进来,落在那些孩子的头发和肩膀上。他觉得程雪应该也在看着这里。
第三十二章:糖炒栗子
方糖那天一个人去了老街。林霜问她去哪儿,她说去买糖炒栗子,想吃那家了。林霜知道她每年这个时候都会去,她嘴上不说,心里还记得程雪以前每年冬天都拎着一袋热栗子来家里,进门的时候先剥一颗塞进自己嘴里再开口说话。
那家糖炒栗子店还开着。店主换成了原来那个阿姨的女儿,但味道没变,还是那种焦甜的香气。方糖买了一袋,站在店门口剥了一颗放进嘴里,热乎乎的,又甜又糯。她想起很多年前,也是在这条街上,她跟程雪一起走,程雪走在左边,手里也拎着一袋栗子。那时候程雪说:"甜吧?"方糖说:"甜。"程雪说:"那我就放心了。"方糖当时没问她放心什么,现在也没有答案了。
她把那袋栗子带回家,放在客厅的茶几上。霜糖周末从云南回来,看到那袋栗子,剥了一颗吃了,说:"妈,还是那家的?"方糖点了点头。霜糖没有再问。
第三十三章:霜糖的远行
霜糖在沙溪待了整整一个月。他辞了北京那家科技岗位的Offer,方糖知道的时候没有任何劝阻,她只是问了一句:"你确定吗?"霜糖说:"确定。我想先把程雪阿姨的教案教完,剩下的以后再说。"方糖点了点头,伸手拿起霜糖放在沙发边的那件外套——肩头的针脚松了一线,她没出声,只是自然地叠了叠放在膝盖上,指尖沿着那根松脱的线头慢慢抚了一遍,然后把外套对折放好:"那你去吧。那台旧电脑,我寄给你。"
霜糖走的那天,方糖去机场送他。过安检的时候霜糖回头看了她一眼,挥了挥手。方糖也挥了挥手。她站在到达大厅里,看着霜糖的背影消失在安检口后面,和很多年前她站在北大南门口看着程雪的背影消失时一样。但这一次,她没有觉得空,她只是觉得那条路还在往前走,没有停下来。
她走出机场,阳光很亮。她站在门口眯了眯眼睛,低头看了看自己的手,手里还攥着霜糖吃剩的半袋栗子。她剥了一颗放进嘴里,还是甜的。她笑了笑,把栗子壳扔进路边的垃圾桶,转身往停车场走去。
沙溪的冬天比杭州冷一些,但霜糖渐渐习惯了。他每天早上七点起床,八点上课,下午备课,晚上在程雪的那间小屋里写代码。有时候孩子们放学了还会跑来找他,问他一些和编程无关的问题,他会耐心地一个个回答。他发现自己开始理解程雪为什么能在这里待那么多年。不是因为她伟大,是因为这些孩子真的值得。
那盆多肉方糖养得很好,叶子又厚又绿。她每天早上起来都会看一眼,像是在确认它还在长。程雪留给她的那封信,她折好放在抽屉里,偶尔会拿出来看一眼。信很短,她几乎能背下来了,但她还是会看,像是那些字里还有她还没完全读懂的句子。她现在读到了,那句"那个等待本身,已经很好了"已经不是关于遗憾,而是关于一种更安静的确信——确信那条路曾经存在过,哪怕它没有通向任何终点。
第三十四章:花落花开
第二年春天,霜糖从沙溪回来了。他只待了半年,比计划短一些。方糖问他不教了吗,他说教完了。程雪的教案一共三十六课,他按部就班地教完了最后一课。最后一课讲的是递归,他用的是程雪当年给他讲的那个故事——一只蚂蚁在迷宫里找出口,每一次走到死路就回到上一个岔路口重新选,直到找到那条能走出去的路。孩子们听懂了。有个男孩举手问:"那如果一直找不到呢?"霜糖想了想,说:"那就换一个迷宫。但那只蚂蚁会记住它走过的每一条死路。"
方糖听完这段描述的时候,正在厨房里切菜。她停下手里的刀,看了一眼窗外。窗外的那棵玉兰树已经冒出了花苞,小小的,白色的,在春风里微微颤动。她把刀放下,擦了擦手,走到窗边站了一会儿。她看着那些花苞,想起程雪以前说过的一句话:"玉兰花开的时候,春天就到了。"她当时没觉得这是一句特别的话,现在才明白,那不只是关于花的,那是关于等待的——只要你还愿意等,花总会开。
她把那封信又看了一遍,然后重新折好放回抽屉里。她走到客厅,给那盆多肉浇了水,又伸手轻轻碰了碰它最上面的那片新叶子。那盆多肉又冒出了两片新芽,嫩绿的,薄薄的,像刚睁开的眼睛。她看着那两片新芽,觉得那些死去的人和事,并没有真的消失。他们只是换了一种方式,留在了这片土壤里,等着下一个春天再次醒来。
她又想起霜糖在沙溪时发来的那条消息。他说:"妈,我今天教孩子们写了一个程序,打印了一棵树。每个节点都是一段回忆。程雪阿姨应该会喜欢。"她当时没有回,但她在心里说了一句:"她会的。"
窗外的玉兰花苞正在一点点膨大,再过几天就会裂开。方糖站在窗边,觉得这个春天和以往的春天都不同。不是少了什么,是多了一些她还没完全弄懂的东西——像那些正在酝酿的花苞,像那盆多肉悄悄冒出来的新叶,像远处山野间慢慢亮起来的光线,春天总是按照自己的时刻到来。
她转身走回厨房,打开那袋还没吃完的栗子。栗子已经不热了,但依然很甜。她剥了一颗放进嘴里,慢慢嚼着,看着窗外那些还没有开的花苞。春天会来的,她也还在。
第三十五章:方凝冰的沉默
霜糖从沙溪回来的那天,方凝冰没有去机场接他。
她坐在他们租的那间小公寓里,面前摊着一本翻了一半的数据结构教材,手里握着一杯已经凉透的茶。窗外的天色正在暗下去,路灯一盏一盏地亮起来。她听到钥匙转动门锁的声音,然后是行李箱轮子滚过门槛的声响。她没有站起来,只是把手里那杯凉茶放到桌上,指尖沿着杯沿转了一圈。
霜糖推门进来的时候,看到方凝冰坐在沙发上,侧对着他,手里没拿手机也没拿书,就那么坐着。他把行李箱靠墙放好,换了拖鞋,走到她面前蹲下来,手搭在她的膝盖上:"我回来了。"
方凝冰低头看了他一眼。她的目光停在他脸上很久,像是在确认他有没有瘦,有没有黑,有没有带着她不知道的伤回来。她伸出手碰了碰他的头发,指尖轻轻拨了一下他耳后的碎发:"你胡子没刮干净。"
霜糖笑了一下:"那边没有电动剃须刀,手动的不太习惯。"
"那明天去买一个。"方凝冰收回手,站起来走进厨房,"饿不饿?我煮了面。"
霜糖跟着她走进厨房,靠在门框上看她开火、烧水、把面下进锅里。她的动作很熟练,和他走之前一样,但他注意到她切葱花的时候比平时多切了一些,像是手里的力气没有地方放,只能落在菜板上。他没有说穿,只是走过去,从背后轻轻抱了她一下。方凝冰的身体僵了一瞬,然后慢慢放松下来,继续搅动锅里的面。
"沙溪那边怎么样?"她问。
"挺好的。"霜糖的下巴抵在她的肩上,"孩子们学得很快。程雪阿姨的教案写得很细,我基本上是按着那个教的。"
方凝冰没有接话。她把面盛进碗里,端到餐桌上,两碗面对面放着,面和以前一样多,葱花也洒得一样匀。霜糖坐下来低头吃了几口,抬头看到她正拿着筷子,盯着碗里的面发呆。他放下筷子:"凝冰,你有话想跟我说。"
方凝冰抬起头,目光从碗面移到他脸上,像是在确认他是不是真的准备好要听,然后她开口了,声音很平:"你走了一个月。去之前,你没问我要不要一起去。回来之前,你也没问我是不是想早点见到你。"
霜糖张了张嘴,发现她说的那些话像细细的针,每一根都落在他没注意过的地方:"你打电话的时候跟我说孩子的事、说镇上的变化,说那里的山,说程雪阿姨的教案,但你没跟我说你想我了。"
霜糖沉默了。他低下头看着自己碗里的面,汤面正在一点点变凉,表面凝出一层薄薄的油膜:"我没说,是因为我说出来的话,怕一开口就收不住了。不是不想你,是太想你了,所以反而不敢说。"
方凝冰看着他,像是在看他这句话背后还有没有藏着别的意思。过了一会儿,她低下头,夹了一筷子面放进嘴里,慢慢嚼完咽下去,然后说:"那下次要说。收不住就不收。"
霜糖看着她低头吃面的样子,忽然觉得心里那块悬了很久的石头终于落了下来。他重新拿起筷子,继续吃面。面已经有点凉了,但他觉得这是他在沙溪那个月里吃到的最好的一碗面。他吃完最后一口的时候,抬头看着方凝冰:"凝冰,我以后不会再一个人去了。以后去哪儿都带着你。"
方凝冰正在喝汤,听到这话碗沿停了一下,嘴角微微动了一下,像是想笑又压住了:"那沙溪那边怎么办?"
"那边的课我教完了。教案留给了当地的老师,他们可以接着教。"霜糖放下筷子,"我回来,是因为想清楚了一件事。程雪阿姨是把她的种子种在了那里,但我不能一直在那里浇水。我也有自己的土壤要照看。"
方凝冰放下碗,看了他一会儿,然后说:"那你明天陪我去一趟书店。"
"买什么?"
"买那本你还没看完的算法书。你走的时候夹了书签放在桌上,一个多月了,书签还在那页。"
霜糖愣了一下,然后笑了。他知道,方凝冰没有在等他开口道歉,她只是等他自己走回来,然后替他把那页被风吹皱的书角抚平。
第三十六章:春夜
那天晚上她们没有说太多话。霜糖洗完澡出来的时候,方凝冰已经躺在了床上,背对着门,床头灯还亮着,像是在等他。他掀开被子躺进去,感觉到方凝冰的身体微微动了一下,但没有转过身来。他伸出手,从背后轻轻环住她的腰。她没有挣开,但过了一会儿她轻声说:"霜糖。"
"嗯?"
"你不在的时候,我每天晚上都会把那个书签翻一页。"方凝冰的声音很轻,像是怕惊动什么,"假装你还在看那本书。"
霜糖收紧了手臂,把脸埋在她的后颈。她的头发有淡淡的洗发水味道,和一个月前一样。他忽然觉得这一个月的距离像是一层薄薄的冰,现在正一点一点地融化。他的手指穿过她的指缝,掌心贴着她的掌心。
"凝冰,"他的声音有些闷,"其实我在沙溪的时候,有一天晚上特别想你。那天晚上下雨,我就坐在窗边听着雨声写了一段代码。那是一个很简单的程序,功能只有一个:屏幕上一行一行地显示'想你了'。然后我把它删了,因为我觉得写出来也寄不出去。"
方凝冰没有说话,但她的手指慢慢收拢,轻轻握住了他的手。她的掌心温热而干燥,和这个夜晚的温度一样,不多不少地包裹着他手指的骨节。窗外的风从窗帘缝隙里渗进来,霜糖听到远处偶尔传来的车声,像是整个城市终于安静下来,只留下他们两个人还在低声说话。
又过了很久,久到霜糖以为她已经睡着了,他忽然听到方凝冰轻声说:"那下次写出来。发给我就行。"
霜糖没有回答,但他收紧了手臂。那一晚他睡得比在沙溪的任何一晚都沉。
第三十七章:书架上的书签
第二天早上方凝冰醒来的时候,霜糖已经起了。她听到厨房里传来的水声和锅碗碰撞的声响,坐起来揉了揉眼睛。她走出卧室的时候,看到餐桌上放着两碗粥,旁边还有一小碟酱菜。霜糖正背对着她,把筷子摆好。
"你几点起来的?"方凝冰走过去坐下。
"七点。睡不着了。"霜糖在她对面坐下,"吃完我们去书店。"
方凝冰低头喝了一口粥,温热的,正好。她没说话,但她的耳朵微微红了一点,像春天的枝头刚刚泛起的暖意,没有被风带走。
吃完早饭她们一起去了书店。那家书店在城西的一条小巷里,店面不大,但书很全。霜糖走到二楼计算机区,找到那本算法书,果然还插着那枚他走前随手放进去的书签。他抽出书签看了一眼,是一张淡蓝色的卡片,上面用铅笔写着一行小字,不是他的字迹——是方凝冰写的:"翻到第347页了。"他愣了一下,翻到347页,看到页角有一个小小的折痕,像是被反复翻开过的痕迹。
方凝冰站在旁边,假装在看另一本书。霜糖侧过头看了她一眼,然后把那本书合上,放进了购物篮。他没有说什么,但走出书店的时候,他伸手握住了她的手。方凝冰低头看了一眼,没有挣开。
那天下午她们一起去了公园。春天的阳光很暖,湖边的柳树已经抽出了嫩芽,在风里轻轻晃着。她们在湖边的长椅上坐了一会儿,方凝冰靠着他的肩膀闭着眼,像是快睡着了。霜糖低头看着她垂下来的睫毛,觉得这一个月的空白正在慢慢被填满,像是程雪教案里那棵递归树,每一个节点都在生长出新的枝叶。
他忽然想到一个问题:那些在沙溪的孩子,以后会记得他吗?会记得程雪吗?还是说,他们会长大,然后慢慢忘记那些写在黑板上的代码。但他很快又觉得,忘记也没关系,因为那些种子已经种下了,它们不需要被记住,只需要继续发芽。
他侧过头,在方凝冰的额头上轻轻碰了一下。方凝冰没有睁眼,但她的嘴角弯了一下。她们就那样坐着,看着湖面上碎金般的阳光一点点移动、收拢,直到暮色把整片天空染成淡橘色。
第三十八章:那场没吵完的架
霜糖以为程雪的事情过去之后,生活会慢慢回到正轨。但他忽略了方凝冰心里那些一直没有说出口的东西。
那是他从沙溪回来之后的第三个周末。那天下午霜糖在书房里整理程雪的教案,准备把电子版归档。他一边翻一边回忆在沙溪的那些日子,没有注意到方凝冰已经站在门口看了他很久。
"你还在看那些教案?"方凝冰的声音从门口传来。
霜糖抬起头,看到她靠在门框上,手里端着一杯水,表情看不出什么,但那种平静让他有些不安:"嗯,想整理一下,万一以后有人要用。"
方凝冰走进来,把水杯放在桌上,没有看他:"你是不是还打算再回去?"
霜糖愣了一下:"我没这么说。"
"但你一直在看那些教案。"方凝冰的声音很轻,但每个字都像是被磨过一样清晰,"你回来后,手机里存的还是沙溪的照片,聊起那边的孩子的时候眼睛会亮,你跟我说你走的时候孩子们哭了,你说的时候声音有点抖。"
她转过身看着霜糖:"我不是不让你去。但我不知道你回来之后,心到底有没有回来。"
霜糖张了张嘴,一时接不上来。他看着方凝冰站在房间里的身影,光线从她背后透过来,把她整个人镀成一层柔和的淡金色,像是正站在某一扇敞开的门边等他回答:"凝冰,我在那边的时候,确实一直在想那边的孩子、程雪阿姨留下来的东西。但我回来之后,每天都会想一件事——我在那边的时候,有没有做好我在那边该做的事。但回来了,就不该再让那些事占住全部的心。"
"那你告诉我,你现在心里有几成是在这里。"方凝冰看着他的眼睛,没有任何退让的意思。
霜糖想了一会儿:"七成。"
"那另外三成呢?"
"还在路上。"霜糖说,"但不是往回走,是往前走。那些教案整理好了,就放下了。那些孩子的名字我记得,但他们会长大,我不会一直拽着他们不放。"
方凝冰看了他很久,像是在确认他说的每一个字是不是真的。然后她走过去,在他面前蹲下来,抬头看着他:"霜糖,我不是要你把所有的心都给我。但你要告诉我,你在想什么。你走之前没告诉我你要去那么久,回来之后也没告诉我你心里还装着什么。"
霜糖低下头,把额头抵在她的额头上。她的手握住了他的手腕,指腹贴着他的脉搏:"我知道了,下次不会了。"
方凝冰没有说"好",但她没有松开手。
那天晚上她们坐在客厅里,把那本算法书翻到了第348页,霜糖给方凝冰讲了一个多小时的数据结构,方凝冰靠在他肩上,偶尔提问,偶尔安静地听着。窗外的夜色很深,但她们没有开灯,只有电脑屏幕的光照在她们身上,把两个人的轮廓勾勒得柔和而清晰。讲完一个段落的间隙,霜糖忽然停了下来。
方凝冰问:"怎么了?"
霜糖说:"我好像终于想明白了一件事。程雪阿姨花了那么多年去教那些孩子,不是因为他们能成为什么了不起的人,而是因为在教的那些年里,她自己也被那些孩子一点点托住了。"
方凝冰没有接话,只是在黑暗中轻轻握住了他的手。她什么都没说,但霜糖觉得她那一下握得很稳,像是替他接住了那句还没有完全落地的话。
后来霜糖把那些教案全部整理好了,存进了一个名为"程雪"的文件夹里。他没有再打开过,但他知道它在那里,像是程雪留在世界上的最后一段回声。
第三十九章:塔与少女
方凝冰从小在一座沿海小城长大。那座城没有什么特别的景点,只有一座百年灯塔还立在最东边的礁石上。霜糖之前只知道她家在海边,但从来没有细问过。直到某个周末,方凝冰的母亲打来电话,说灯塔最近在整修,问方凝冰要不要回去看看。
挂断电话之后方凝冰坐在沙发上沉默了很久。霜糖坐在她旁边,没有催她,只是安静地等着。过了好一会儿,方凝冰开口了:"那个灯塔,是我小时候经常去的地方。我爸以前是守塔人。他去世之后,灯塔就没人守了。"
霜糖握住她的手:"那我们一起回去看看。"
方凝冰侧过头看了他一眼,眼神里有一种他很少见到的松动,像是一扇常年紧闭的窗终于被风吹开了一线:"好。"
那座灯塔比霜糖想象中要小得多,白色的塔身被海风吹得有些斑驳,但依然笔直地矗立在礁石上。方凝冰站在塔下仰头看了一会儿,然后推开那扇铁门走了进去。楼梯是旋转的,铁质的台阶被踩得发亮。霜糖跟在她身后,听到她的脚步声在螺旋的塔腔里回荡,一阶一阶,像是踏过很多年前那条同样被足迹磨亮的路。
塔顶是一个小小的房间,四面都是窗户,能看到无边的海面。方凝冰走到窗边站定,没有说话。霜糖走过去站在她身边,顺着她的目光看向远处的那条海平线,灰蓝色的,像是被风反复吹平又反复揉皱的绸布。
方凝冰开口了,声音不大,但在这个空旷的塔顶显得格外清晰:"我小时候经常一个人在这里坐着,拿着我爸留下的那些旧书看。他教会了我很多算法,那时候我还不知道那些东西以后会派上什么用场。我只是觉得,那些符号和逻辑里有一种秩序,和海浪不一样。海是乱的,代码是整齐的。"
霜糖侧过头看着她。风从窗户的缝隙里灌进来,把她的头发吹得有些乱,但她没有伸手去拨,只是站在那里,让海风把她整个人吹透:"我爸走的那年,我十三岁。他是在一个暴风雨天去修塔顶的灯,失足摔下去的。后来灯塔就再也没亮过了。"
霜糖不知道该说什么。他只是伸出手,轻轻握住了方凝冰的手。她的手指有些凉,但很稳。
方凝冰侧过头看着他:"你知道我为什么喜欢写代码吗?"
霜糖摇了摇头。
"因为代码不会摔下去。只要逻辑对,它就会一直运行,不会中断。它不会突然消失,不会在某个暴风雨天就再也不回来了。"她说。
霜糖看着她的侧脸,看到她眼睛里倒映着远处那片灰蓝色的海面,薄薄的,像是稍微碰一下就会碎裂开来,但偏偏稳稳地待在那里:"凝冰,我不是代码。我也会摔倒。但我摔下去之后,会爬起来走到你身边。"
方凝冰没有说话。她只是轻轻侧过头,靠在了他的肩膀上。她们站在那里很久,看着远处海面上慢慢沉下去的夕阳,像一颗滚烫的筹码落进赌桌边缘的浅湾里。海风把她们的头发吹在一起,分不清是谁的。那一刻,霜糖觉得自己终于明白了一件事——方凝冰的沉默里,一直住着那座没有亮灯的塔。她不是冷漠,她只是怕什么东西忽然熄灭。
那天晚上她们住在海边的一家小旅馆里。方凝冰睡着之后,霜糖一个人走到窗边,看着远处的海面。月光碎在起伏的水面上,像整片海都在微微颤抖。他想起程雪,想起沙溪的孩子们,想起那盆多肉,想起那本还没看完的算法书。他想起方凝冰说"代码不会摔下去"的时候,声音里那种藏得很深的脆弱。他站在窗边想了很久,然后轻轻走回床边躺下,在黑暗中伸手握住方凝冰的手指。她没有醒,但在睡梦中微微收拢了手指,像是替那一座海角尽头的塔,轻轻回应了一句什么。
第四十章:老友的电话
霜糖从沙溪回来后的某个晚上,手机响了。他看了一眼屏幕,是宁嘎狗。他已经很久没接到宁嘎狗的电话了,上次联系还是过年的时候,宁嘎狗发了一条语音:"新年快乐,帮我跟凝冰问好。"然后就没有然后了。
他接起来:"宁嘎狗?你这大忙人怎么想起给我打电话了?"
"怎么,没事就不能找你?"宁嘎狗的声音还是那样,带着一种咋咋呼呼的热乎劲儿,"听说你跑去云南支教了?可以啊林老师,什么时候这么有情怀了?"
"不是我,是程雪阿姨的课。我去把剩下的教完了。"霜糖靠在沙发靠背上,换了个姿势,"你那边呢?工作怎么样?"
"还是那样,天天写代码,天天改需求。你知道我现在最怕什么吗?最怕产品经理跟我说'这个需求很简单'。"宁嘎狗叹了口气,然后又笑起来,"不过也有好事,我跟吃饭上周去看了房子。准备领证了。"
霜糖愣了一下:"领证?你们俩?"
"对啊,怎么,很惊讶吗?都这么多年了。"宁嘎狗的语气里带着一点得意,"我都准备好久了,那家伙终于松口了。"
"那挺好啊。"霜糖也笑了,"什么时候办?我肯定去。"
"还早,年底吧。到时候你给我当伴郎。"
"行,没问题。凝冰也一起。"
"那当然。对了,吃饭也在旁边,你要不要跟他说两句?"
电话那头传来一阵窸窣的声响,像是手机被递到了另一个人手里。然后一个低沉的声音响起:"喂。"
霜糖听到那个熟悉的声音,忽然觉得有点恍惚。他想起很多年前在奶龙训练营的时候,吃饭也是这样,说话永远不超过三个字:"霜糖。回来了?"
"回来了。"霜糖说,"听说你们要领证了?"
"嗯。"吃饭应了一声,然后顿了顿,像是在想怎么把一句话说完,过了几秒才又开口:"到时候来。带凝冰。"
"好,一定。"
电话又回到了宁嘎狗手里:"行了他就这德行,你别介意啊。对了,你最近跟别人联系了没?bunH2O那家伙现在在深圳创业,天天在朋友圈发他的新产品。还有WartenAK,上次听说他回北京了,好像在搞一个开源项目。咱们这帮人,散的散,忙的忙,想凑一起吃顿饭都难了。"
霜糖听着宁嘎狗在电话那头絮絮叨叨地讲着那些老朋友的消息,忽然觉得心里有一块地方暖了起来。那些名字像是一颗颗被风吹散的种子,散落在不同的城市里,各自扎了根。但偶尔被提起的时候,它们还会在记忆里重新亮起来,像是从来没有走远过:"那等你们年底办酒,把他们都叫上,咱们好好聚一次。"
"那必须的!"宁嘎狗的声音又扬了起来,"我跟你说,我已经在群里发消息了,WartenAK说他一定来,bunH2O说他要带他那个新女朋友来秀恩爱,我说你秀个屁你秀……行了不跟你说了,吃饭喊我去洗碗了,回头聊!"
电话挂断了。霜糖拿着手机在手里转了一圈,屏幕暗下去又亮起来,他看到微信群里宁嘎狗刚刚发了一张他和吃饭的合照,两个人在新房子里,背后是还没装好的书架,宁嘎狗笑得很灿烂,吃饭依然是那副面无表情的样子,但他的手搭在宁嘎狗的肩膀上,手指微微收拢,像是在确认那个人还在自己身边。
霜糖给那张照片点了一个赞,然后放下手机走回客厅。方凝冰正坐在沙发上看书,看到他过来,随口问了一句:"谁打的?"
"宁嘎狗。"霜糖在她旁边坐下,"他说他们要领证了。年底办酒,让我们都去。"
方凝冰翻了一页书:"那挺好的。吃饭终于肯点头了。"
"你也这么觉得?"
方凝冰合上书,侧过头看着他:"他等吃饭等了多久,大家都知道。吃饭那个人,心里都清楚,就是嘴不会说。能走到这一步,说明他是真的想好了。"
霜糖靠在沙发靠背上:"你说咱们这帮人,以后还能不能像以前那样,偶尔聚在一起吃顿饭?"
方凝冰想了一下:"能吧。只要还想见,就总能见到。怕的是不想见了。"
霜糖侧过头看着她。灯光落在她的侧脸上,把她的轮廓照得很柔和。他忽然觉得,她说的那句话不只是关于那些老朋友,也是在说他们自己:"那我们会一直想见吗?"
方凝冰没有回答,但她翻书页的手指停了一下,然后在霜糖的膝盖上轻轻点了一下。那个动作很轻,像是一个句号被写到了一个还没有说完的句子后面,但她知道自己没有说出口的部分,他会读得到。
第四十一章:BunH2O的空降
没过多久,霜糖真的见到了bunH2O。
那天是周六下午,霜糖和方凝冰正准备出门去超市,手机忽然响了。屏幕上跳出一个陌生的号码,归属地是深圳。他犹豫了一下还是接了:"喂?"
"霜糖!是我!bunH2O!"电话那头的声音大得差点把霜糖的耳朵震聋,"我到杭州了!刚下飞机!你家在哪?我来找你!"
霜糖把手机拿远了一点:"你怎么突然来了?"
"创业太累了,出来透透气。"bunH2O的声音里带着一股风风火火的劲儿,"而且我听宁嘎狗说你回来了,还说你在沙溪当了一个月的老师,这么有意思的事怎么能不亲自来听你讲讲?快给我地址,我打车过来!"
霜糖报了一个地址,挂断电话之后看着方凝冰,有些无奈地笑了笑:"bunH2O来了,说马上到。"
方凝冰正在换鞋,听到这话动作也没有停:"那就别去超市了,冰箱里还有菜,他来了就在家吃吧。"
霜糖看着她低头系鞋带的样子,觉得她永远是这样——再突然的事情落在她身上,也只是换一个方向继续做手里的事,不慌不忙,像是早就知道生活会这样出其不意:"你不觉得他来得太突然了?"
"他一直是这样的。"方凝冰直起身,"走吧,去菜市场买条鱼。"
bunH2O到的时候手里拎着两袋水果和一盒点心,进门就四处张望:"哇,你们这房子不错啊,比我在深圳租的那个大多了。"他把东西放在玄关柜上,"这是我路上买的,别嫌弃。深圳特产,那个……芒果干。"
"你直接过来就行了。"霜糖给他拿了一双拖鞋,"带什么水果。"
"那不行,空手上门多不好意思。"bunH2O换了鞋走进客厅,看到方凝冰正在厨房里洗菜,大声打了个招呼:"嫂子好!"
方凝冰头也没回:"把水果放下,洗手吃饭。"
bunH2O在沙发上坐下来,四处看了看,目光落在窗台上那盆多肉上:"哟,这盆多肉还在啊?这都多少年了。我记得以前程雪阿姨……"
他说到这里忽然停住了,像是意识到自己说错了话。霜糖在旁边坐下来,语气很平常:"嗯,是程雪阿姨留下的。我养着。"
bunH2O沉默了两秒,然后点了点头:"挺好的。"他没有继续那个话题,转而问起了霜糖在沙溪的事。霜糖跟他讲了讲那些孩子,讲了程雪留下的教案,讲了他在那边教课的日子。bunH2O听得认真,偶尔插嘴问几句技术细节,偶尔又跑题到别的事情上去。
"你们不知道,我那个创业项目真是累成狗。"bunH2O靠进沙发靠背里,双手枕在脑后,"天天改需求,天天跟投资人汇报,代码都好久没好好写了。有时候半夜坐在电脑前,看着屏幕上那些业务代码,就在想我他妈到底在干嘛?我以前写的那些算法题,现在一个都用不上。你们说,我是不是走错路了?"
霜糖想了一下,说:"没有走错路。只是换了一条路走。你现在写的那些代码,虽然看着不像算法题那么干净,但它们跑在别人的手机里,被很多人用着。那也是代码。"
bunH2O看了他一眼,然后笑了:"你这话说得,跟程雪阿姨一模一样。她以前也跟我说过类似的话。"
霜糖没有再说什么。他只是给bunH2O倒了杯水,然后听到厨房里方凝冰正在切菜的声音,笃笃笃的,切得很稳。他觉得这样的傍晚很好,老朋友来了,水烧开了,菜在锅里发出滋啦的声响,连窗台上那盆多肉都安安静静地待在自己的盆里。所有的一切都在各自的位置上,没有谁走丢。
吃饭的时候bunH2O感叹方凝冰的手艺好。方凝冰没有接话,只是把一块鱼夹到霜糖碗里,然后给自己夹了一筷子青菜。bunH2O的嘴巴一直没停过,从深圳的房价聊到他们那帮老朋友的各种近况,他说WartenAK最近开了个技术博客,阅读量很高;说宁嘎狗和吃饭的新房装修得差不多了;说他自己的项目最近刚拿到第二轮融资。
"对了,你们知道吗?刘尘也在杭州。"bunH2O嚼着一块排骨含含糊糊地说,"就是陈墨那个徒弟。他现在在一家AI领域做事,混得不错。"
霜糖愣了一下:"刘尘?他也来杭州了?"
"来了有一阵子了。"bunH2O放下筷子,"改天约他出来一起吃饭?那家伙现在比以前开朗多了,话也多了一些。听说他最近还交了一个女朋友。"
"那行,你约。"霜糖看了一眼方凝冰,"凝冰也一起。"
方凝冰点了点头,继续低头吃饭。她的筷子在碗沿轻轻搁了一下,像是把所有的话都先存放在碗底,等着慢慢吃完再说。
那天晚上bunH2O走的时候站在门口回头看了他们一眼:"霜糖,你变了很多。"
"变了吗?"霜糖靠在门框上看着他。
"变沉稳了。"bunH2O笑了一下,"以前你总是急着往前走,现在好像不急了。挺好的。"他挥了挥手,转身走进夜色里。他的背影很快被路灯吞没,变成一个模糊的轮廓,又渐渐走远,彻底隐入街道尽头。霜糖站在门口,看着那条空荡荡的巷子,有一瞬间像是看到了很多年前的自己站在奶龙训练营门口,背着包,不知道接下来会走到哪里去。现在他知道了,路是一点一点走出来的,不是想出来的。
他关上门回到客厅,方凝冰正在收拾碗筷。她背对着他,把碗叠在一起,哗啦一声端进厨房。水龙头打开的声音响起来,混着碗碟轻轻碰撞的脆响,像是这个夜晚最安稳的背景音。霜糖走过去站在厨房门口,靠着门框看着她洗碗。她没有回头,但开口问了一句:"他说你变沉稳了?"
"嗯。"
"你觉得呢?"方凝冰把洗好的碗放进沥水架。
霜糖想了一下:"我觉得不是沉稳。是走了一些路之后,知道自己能走多远,也知道了走不动的时候旁边有人能扶着。"
方凝冰关掉水龙头,甩了甩手上的水,转过身看着他。她看了他两秒,然后说:"那以后走慢一点也行,我走得不快。"
她说完从他身边走过,去客厅继续看书了,像是那句不经意的话只是顺手放在桌面上的一件小东西,不需要特意去接、去捧。霜糖站在原地,觉得心里那个刚刚安顿下来的部分又往深处沉了一些,落在更实在的泥土里。
第四十二章:刘尘的茶
bunH2O的效率很高。几天后他就发来消息,说约到了刘尘,周六下午在城西一家茶馆碰面。霜糖收到消息的时候正在书房里写代码,方凝冰坐在旁边改论文。他侧过头问了一句:"周六下午有空吗?刘尘约见面。"
方凝冰头也没抬:"几点?"
"三点。"
"好,我把论文下午改完。"
周六下午她们到茶馆的时候,刘尘已经到了。他坐在靠窗的位置,面前放着一壶茶和三个杯子,正在低头看手机。霜糖远远看到他,发现他和记忆中的那个瘦弱少年已经不太一样了——脸圆了一些,头发留长了一些,穿着一件深灰色的针织衫,整个人看起来松弛了很多。
"刘尘。"霜糖走过去在他对面坐下,"好久不见。"
刘尘抬起头,先是愣了一下,然后笑了。那个笑容和以前完全不同,不再是那种拘谨的、带着距离感的礼貌,而是真的在笑:"霜糖哥,好久不见。这位是嫂子吧?"他看向方凝冰,"我听bunH2O提过。"
方凝冰点了点头,在他对面坐下:"你好。"
刘尘给他们倒了茶,然后靠在椅背上:"听bunH2O说你去云南待了一个月?教那些孩子编程?"
"嗯,程雪阿姨留下来的课,我去接了一下。"霜糖端起茶杯喝了一口,"你呢?听说你在杭州做AI?"
"对,在一家做自然语言处理的团队。"刘尘低头转了转手里的茶杯,"我以前从来没想过自己会做这个。那时候跟着陈墨老师学OI,以为这辈子就是搞算法竞赛了。后来慢慢发现,竞赛只是一个入口,后面还有很长的路。"
霜糖看着他说这些话的时候,表情很平静,语气里没有炫耀也没有感慨,只是在陈述一件已经接受下来的事实。他想起很多年前在NOI赛场上看到的那个刘尘——孤单的、沉默的、把自己困在座位上的少年。那个少年现在坐在他对面,给自己倒茶,跟陌生人打招呼,像是已经走出了那间只有他一个人的教室:"陈墨老师最近还好吗?"
"挺好的。他现在在清华做研究,偶尔还会给我发消息,问我有没有好好写代码。"刘尘笑了一下,"他发消息从来不超过十个字。上次发了一条:'别偷懒。'就三个字。"
霜糖也笑了。他想起陈墨站在讲台上说"欢迎来到地狱模式"的样子,想起他在监控室里看着刘尘卡在"迷宫寻路"上却不肯出手相助的背影:"他一直是那样的。"
"是啊。"刘尘放下茶杯,目光落在窗外,"以前我不懂,觉得他对我太严格了。后来才明白,他不是不想帮我,是知道有些路只能自己走。别人帮得了一时,帮不了一世。"
方凝冰在旁边安静地听着,这时开口说了一句:"你那个竞赛成绩,后来有用吗?"
刘尘转过头看着她,想了想:"有用。不是那块牌子有用,是那段经历有用。陈墨老师教我最多的一件事,不是怎么写代码,是怎么在写不出来的时候继续坐着。那种坐得住的能力,后来做什么都用得上。"
方凝冰点了点头,没有再问。她端起茶杯喝了一口,目光从刘尘身上移开,落在窗外那棵刚刚抽出新叶的梧桐树上,像是把刘尘刚才说的那句话收进了心里某个角落。
那天下午她们在茶馆坐了两个多小时。聊了各自的近况,聊了陈墨,聊了bunH2O的创业,聊了宁嘎狗和吃饭的婚事。刘尘说他也去参加年底的婚礼,已经跟团队请好假了。临走的时候刘尘站起来,看了霜糖一眼:"霜糖哥,谢谢你今天来。以前在集训队的时候,你话不多,但我知道你一直在看。你走的那些路,也帮我想明白了一些事情。"
霜糖站起来拍了拍他的肩膀:"以后多联系。都在杭州,别像以前一样闷着。"
刘尘点了点头。他走到门口的时候又回头看了一眼,冲他们挥了挥手,然后推开门走了出去。阳光从门缝里涌进来,又随着门合上而被切断。霜糖站在茶馆里,看着玻璃窗外刘尘走远的背影,想起很多年前在NOI闭幕式上,刘尘站在角落里的样子——那时候他也是一个人转身离开,只不过那时的背影是塌的、缩的,像是所有重量都压在了那件校服上,而现在,他的肩是平的,走路的速度不快不慢,像一个已经知道路在哪里的人。
回去的路上霜糖和方凝冰并肩走着。春天的风里带着花和青草的气味,不浓不淡,像是有人在不远处泡了一壶很淡的茶。方凝冰走得不快,双手插在口袋里:"他变了很多。"
"嗯,"霜糖走在她旁边,"他以前不会说这么多话。"
"不是因为话变多了。"方凝冰侧过头看了他一眼,"是因为他把一些东西放下了。放下来之后,话就自然出来了。"
霜糖看着她。她说完那句话就转回去继续走路了,像只是随口一说。但他知道,她说的不只是刘尘。她也在说程雪,说宁嘎狗,说bunH2O,说他自己。那些年大家各自背着各自的包袱走了很远的路,现在终于有人开始把肩上的东西一件一件放下来了。
他快走两步跟上她,和她并肩走在春天的巷子里。
晚上回到家,霜糖给陈墨发了一条消息:"我今天见到刘尘了。他挺好的。"
陈墨过了很久才回复,只有四个字:"那就好。"
霜糖看着那四个字笑了,然后把手机放在茶几上,去厨房帮方凝冰剥蒜。那些不需要多说一个字的理解,有时候比一整篇长篇大论更妥帖,像一口刚好的茶,不多不少地填满喉咙深处的空隙。
第四十三章:宁嘎狗的婚礼前夜
年底,宁嘎狗和吃饭的婚礼定在冬至前一天。
霜糖和方凝冰提前一天到了宁嘎狗所在的城市。酒店是宁嘎狗订的,他在群里发了一个地址,说"你们到了直接入住,我晚上请吃饭,别迟到"。群里的消息已经乱成了一锅粥,bunH2O发了一连串的表情包,WartenAK回了一个"收到",刘尘说"我明天早上到",吃饭破天荒地发了一条消息,只有一个字:"好。"
霜糖看着那个"好"字笑了一下,把手机递给方凝冰看:"吃饭居然会回群消息了。"
方凝冰看了一眼:"那是给宁嘎狗面子。"然后她把行李箱放好,拉上窗帘,靠着床头坐着看手机。
晚上宁嘎狗订了一家火锅店,包间很大,一张圆桌能坐十几个人。霜糖和方凝冰到的时候,包间里已经坐了好几个人。宁嘎狗正在跟服务员比划着什么,看到他们进来,使劲挥了挥手:"这边这边!你们坐那儿!"他的声音还是那样大,像要把整个包间的天花板掀翻。旁边坐着吃饭,依然是那副面无表情的样子,但霜糖注意到他面前的碗碟已经摆好了两副——一副是他的,另一副是宁嘎狗的。那个细节让他想起很多年前,吃饭也是这样不动声色地帮宁嘎狗做各种小事,做完了也不说,像是理所当然。
"你们来了啊!"bunH2O从角落里冒出来,身边坐着一个长发女生,"这是林霜糖,我跟你们提过的。这是方凝冰,他老婆。"
那女生笑着打了个招呼:"你们好,我听bunH2O提过你们好多次了。"
霜糖坐下来,转头看了看四周:"WartenAK呢?"
"他说飞机晚点了,要晚一点到。"宁嘎狗拉开椅子坐下,"我们先吃,不等他。"
那顿饭吃得很热闹。宁嘎狗的嘴几乎没停过,从婚礼的细节讲到他们装修新房的经历,从请柬的设计讲到结婚照的拍摄过程。bunH2O在旁边不断补刀:"你那请柬丑得跟需求文档似的。"宁嘎狗立刻反驳:"你懂个屁,那叫极简风。"
方凝冰坐在霜糖旁边,偶尔夹几筷子菜,偶尔低头喝一口饮料。她话不多,但每次有人看向她的时候,她都会微微点头回应。霜糖注意到她在看吃饭——吃饭正在低头剥虾,剥完之后没有自己吃,而是放进了旁边宁嘎狗的碗里,动作很自然。方凝冰的目光在那个动作上停了一瞬,然后移开了。她没有说什么,但她的手指在桌面下轻轻碰了一下霜糖的膝盖,然后收回去,仿佛只是在那只虾落进碗里的同一拍,她把那个动作收进了自己的记忆里。
WartenAK到的时候火锅已经吃了一半。他推门进来,穿着一件黑色的风衣,头发比以前长了一些,看起来比上次见面时精神了不少。他扫了一圈包间里的人,在宁嘎狗旁边的空位坐下来:"来晚了,飞机延误。你们吃你们的。"
"诶,你那博客最近怎么不更了?"bunH2O隔着桌子问他,"我还等着看你的新文章呢。"
"最近忙,没空写。"WartenAK倒了一杯茶,"而且写了一篇也没人看。"
"我看了!"bunH2O说,"上一篇关于分布式一致性的,写得很好。"
WartenAK看了他一眼:"你居然看懂了?"
"你什么意思?"bunH2O瞪大眼睛,"我好歹也是写代码的!"
桌上的人都笑了。
那天晚上火锅吃完的时候已经快十点了。大家站在火锅店门口,冬天的风灌进领口,每个人都缩了缩脖子。宁嘎狗站在最前面,像是要发表什么讲话,但憋了半天只说了一句:"明天别迟到啊,九点就要到现场。迟到了我让吃饭去接你们。"吃饭站在他旁边,一如既往地沉默着,但他的手搭在宁嘎狗的后颈上,指尖轻轻拢了一下那截被风吹得泛红的皮肤,无声地把他往自己身边带近了一些。所有人都看到了那个动作,但没有人说破。不是不觉得,是那个瞬间太轻了,适合被当作一个只有他们自己知道的小秘密,留给明天。
那天晚上回酒店之后,霜糖和方凝冰并肩躺在各自的床上。酒店的灯已经关了,只有窗帘缝隙里漏进来一缕路灯光,在天花板上划出一道薄薄的金线。方凝冰的声音从旁边传来:"吃饭剥虾那个动作,让我想起你。"
霜糖侧过头,在黑暗中看不清她的脸,只能看到她平躺着的轮廓:"想起我什么?"
"想起你在沙溪那段时间,每次打电话都会问一句'你吃饭了没'。不是真的想知道我吃了什么,就是想说一句,你在那边也想让我知道你在想我。"
霜糖没有回答。他在黑暗中伸出手,碰到方凝冰的指尖,然后轻轻握住了。方凝冰没有抽开,也没有握紧,只是让那只手待在那里,任由它停留。窗外的路灯透过窗帘洒进来,把两只交握的手镀上一层薄薄的银灰色,像是给这个夜晚的尾声轻轻描了一道边。
第四十四章:婚礼
婚礼在城郊的一个小礼堂举行。场地不大,但布置得很用心。入口处摆着宁嘎狗和吃饭的合照,霜糖看了一眼,照片里的两个人站在一棵大树下,宁嘎狗笑得眼睛都眯起来了,吃饭依然面无表情,但嘴角有一个极淡的弧度。照片下面有一行小字:"等你等到写完TopTree。"
霜糖看到那行字笑了一下。他想起很多年前在奶龙训练营的时候,宁嘎狗说"我要等他写完TopTree"。那时候他以为那只是一句随口说的话,没想到宁嘎狗真的等了。
方凝冰走到他身边,也看了一眼那行字:"这句话是什么意思?"
"这是他们俩之间的一句话。宁嘎狗以前说,要等吃饭写完TopTree。"霜糖说,"他等了很久。"
方凝冰没有接话,但她站在那张照片前面多看了几秒。
婚礼开始的时候,司仪站在台上说了一些话,然后是新郎入场。宁嘎狗穿着一身深蓝色的西装,头发梳得整整齐齐,站在台上显得有些紧张,手一直在摆弄话筒架。吃饭从另一侧走进来,穿着一身白色西装。他走得很稳,脸上的表情没有太大变化,但霜糖注意到他走到宁嘎狗面前的时候,脚步慢了一点,然后在宁嘎狗面前停住,看了他两秒。
宁嘎狗看着他,忽然笑了。那个笑容和照片里的一模一样,眼睛都眯起来了,像是等到了等了很久的东西。吃饭伸出手,宁嘎狗握住。那个动作很短,但霜糖看到吃饭的手指收拢的时候,在宁嘎狗的手背上轻轻按了一下,像是确认那双手真的在他的手心里。
台下响起了掌声。霜糖也跟着鼓掌,侧过头看了一眼方凝冰。她也在鼓掌,目光落在台上那两个人身上,表情很平静。但霜糖看到她的眼角有一点亮,像是光从某个很深的角落浮起来,又被迅速压了回去。
婚礼仪式结束之后是宴席。霜糖和方凝冰被安排坐在主桌旁边的那一桌,同桌的有bunH2O和他的女朋友、WartenAK、刘尘,还有几个霜糖不太认识的面孔。席间的氛围轻松而喧闹,有人敬酒,有人夹菜,有人聊着聊着就谈起技术问题,然后很快被旁边的人拉回餐桌上的话题。
吃饭和宁嘎狗端着酒杯来敬酒的时候,霜糖站起来碰了一下杯子:"恭喜。"吃饭看了他一眼,然后说了一句比往常更长的话:"你也是。早点办。"宁嘎狗在旁边笑出了声:"你听听,这可能是他今年说过最长的一句话了。"
霜糖也笑了:"好,争取明年。"
方凝冰在旁边喝了一口水,没有说话,但她的嘴角动了一下。像是那个"明年"在她心里的某个角落轻轻落地,发出一点声响。
散席的时候已经是下午了。霜糖和方凝冰走出礼堂,外面的天灰蒙蒙的,风不大,但有些冷。霜糖站在门口等了等方凝冰,她正裹着外套慢慢走出来,头发被风吹得有些乱。他伸手帮她理了一下:"走吧,回去了。"
方凝冰点了点头,她们一起往外走。走了几步,方凝冰忽然开口:"你刚才说'明年'。"
"嗯。"
"是认真的?"
霜糖停下脚步转过身看着她。风从她们之间穿过去,把她的头发吹起来又放下:"认真的。你愿意吗?"
方凝冰看着他,像是在等他把那句话说完,等他确认自己不是在随口答应:"我不需要婚礼。我也不需要戒指。我就需要一个窗户朝南的房子,书桌能摆两台的,一张你的,一张我的。剩下的,你看着办就行。"
霜糖看着她,忽然觉得心里有什么东西落定了:"好。那就这样。"
她们继续往前走。风还在吹,但方凝冰走在了他旁边,肩膀挨着他的手臂。霜糖没有低头看她,但他放慢了脚步,让她的步子能跟上。走过一段路,她轻声说:"那窗台上也要放一盆多肉。"
"好。"
"跟程雪阿姨那盆一样。"
"……好。"
他没有再说别的,但她没有再问。她只是把这句话放进了她们之间的空白里,像在一张终于落定的清单上轻轻划了最后一道线。
第四十五章:窗台上的新芽
那天从婚礼回来之后,方凝冰很少提起"明年"那两个字,但霜糖知道她已经把那句话收起来了,像是收一枚书签一样夹进了日子的缝隙里。
十二月末,杭州下了一场薄雪。霜糖站在窗台边看着外面那些细碎的雪粒落在路灯的光里,方凝冰从背后走过来,把一杯热茶放进他手里。他低头喝了一口,是茉莉花茶,淡淡的花香在冬天里显得格外温润。
"你说,"方凝冰也站在窗边,和他并肩看着外面的雪,"程雪阿姨那盆多肉,冬天要不要搬进来?外面太冷了。"
霜糖侧过头看了她一眼。她正看着窗外,侧脸在路灯的微光里显得很柔和。他想起方糖把这盆多肉从沙溪带回来的时候说过的话——"它跟着程雪过了好几个冬天,扛得住。"但他还是说:"搬进来吧,放在客厅的茶几上,阳光也能照到。"
方凝冰没说话,但她转身走到门口,把那盆多肉端了进来。她弯着腰把它放在茶几正中间,仔细转了转花盆的角度,让朝南的那面正对着窗户。霜糖看着她做这些事的背影,觉得这个动作像是某种仪式,像是替程雪把那盏灯重新点亮了一回。
那天晚上她们坐在客厅里,方凝冰在看一本编程书,霜糖在旁边写代码。窗台上空空荡荡的,茶几上那盆多肉在台灯的光里泛着墨绿色的光泽。霜糖写了几行代码忽然停下来,看了看那盆多肉,又看了看方凝冰:"凝冰,我们要不要养只猫?"
方凝冰翻了一页书:"你还有空养猫?"
"不是那种很闹的猫,养一只安静的。可以趴在窗台上晒太阳那种。"
方凝冰想了想:"那得等搬了新家再说。现在的房子太小,猫没地方跑。"
霜糖愣了一下:"你已经在想搬家的事了?"
方凝冰没有抬头,但她的手指在书页边缘停了一下:"你不是说明年吗。明年就快到了。"
霜糖看着她低头看书的样子,灯光落在她的睫毛上,像一层薄薄的金粉。他没有再说什么,但他把那个画面记在了心里。
第四十六章:方糖的电话
元旦那天,霜糖给方糖打了电话。他本来想说新年快乐,但方糖接起来之后第一句话是:"多肉还好吗?"
霜糖愣了一下,然后笑了:"好得很。凝冰刚给它浇了水。"
"别浇太多。"方糖的声音隔着电话有些模糊,像是正在厨房里忙活,"程雪以前那盆就是被我浇烂根过一次,后来她发了好大一通脾气。"
霜糖听着她絮絮叨叨地说着程雪的事,没有打断她。他知道方糖很少主动提起程雪,但每次提起的时候,都有一种小心翼翼的郑重,像是那些记忆经不起太重的触碰。
"妈,你今年过年回杭州吗?"霜糖等她说完了才开口。
方糖沉默了几秒:"回。你爸说想看看霜凝冰。"
"那你来我们这边住。"
"好。"
挂了电话之后霜糖靠在沙发上,窗外的天已经暗下来了,远处的灯一盏一盏地亮起来。方凝冰从卧室走出来,手里拿着一条围巾:"方糖阿姨要回来?"
"嗯,过年回来。说到时候来我们这边住。"霜糖接过她递来的围巾,"你怎么知道是她?"
"你接电话的时候声音变轻了。"方凝冰在他旁边坐下,"跟你平时不一样。"
霜糖侧过头看着她。她正在低头玩手机,像只是随口说了一句。但他知道,方凝冰一直是这样——她不说很多话,但她什么都知道。那些细微的、不会被人注意到的差别,她都会收在眼底,然后在一个不经意的时候轻轻说出来。像是她一直站在某个安静的角落里,把所有人的轮廓都描了一遍。
第四十七章:林霜的木工坊
腊月二十六,方糖和林霜开车到了杭州。他们开了一辆旧面包车,后座放着一个用布包着的大东西。霜糖在楼下接他们的时候看到那个布包就笑了:"爸,你又做了什么东西?"
林霜把布掀开一角,里面是一张摇椅。木头的纹理很漂亮,打磨得光滑而温润。椅背的弧度像是量过很多次才定下来的,扶手上还刻着一个小小的图案——一只简笔的小乌龟,正往前爬。
"给你的。"林霜把摇椅搬下来,"放在阳台上,可以晒太阳。"
霜糖伸手摸着椅背上那只小乌龟的刻痕,指腹沿着那些线条走了一遍。他想起很多年前在沙溪的那个晚上,林霜在院子里打磨木梳的样子,木屑在夕阳里飘散。那时候他觉得自己和父亲之间隔着一层东西,但现在他才知道,那层东西不是隔阂,是木头的纹路。林霜把他所有的关心都刻进去了,只是不擅长用语言说出来。
"谢谢爸。"霜糖说。
林霜点了点头,转身去搬别的东西。方糖站在旁边看着他们父子俩,嘴角带着笑。她和林霜之间有一种很奇特的默契,不说话的时候也在说话。霜糖看了他们一眼,然后把那张摇椅搬上了楼。
方凝冰在门口迎接方糖和林霜,她已经把客房收拾好了,床单是新换的,窗台上摆了一小束干花。方糖进门的时候愣了一下,目光在那束干花上停了几秒,像是认出了它来自哪一片山坡,然后她什么都没说,只是伸手抱了抱方凝冰:"长胖了。"
方凝冰没有反驳:"阿姨做的饭好吃。"
那几天杭州的天气一直阴着,偶尔飘一点细雪。林霜大部分时间坐在阳台上那张新做的摇椅上看手机,偶尔拿块木头在手里削着什么,也不说话,就那么坐着。方糖和方凝冰在厨房里研究新菜谱,霜糖在书房里写代码。四个人各做各的事,但谁也不觉得冷清。有时候客厅里安安静静的,只有厨房里切菜的声音和林霜削木头的沙沙声,像一首不用填词的曲子。
年夜饭是方糖和方凝冰一起做的。方凝冰负责切菜配菜,方糖掌勺。厨房里热气腾腾的,锅铲碰撞的声音和油烟机嗡嗡的响声混在一起。霜糖站在厨房门口看着她们,觉得这个画面很熟悉——很多年前在沙溪,方糖和程雪也是这样一起做饭,背对着门口,偶尔侧过头说一句什么,然后又转回去继续忙手里的活。那时候他还小,听不懂那些对话,但他记住了那个画面。
吃饭的时候林霜喝了一点酒,脸色微微发红。他平时话很少,喝了酒之后话反而更少了,只是坐在那里慢慢地喝,偶尔夹一口菜。方糖坐在他旁边,给他碗里夹了一块排骨,他低头吃了,抬头看了她一眼。那一眼很短,但霜糖看到了——那是看了很多年之后还会再看一眼的眼神,没有变化,也没有褪色。
方凝冰也看到了。她在桌子底下轻轻碰了一下霜糖的脚踝,没有抬头,但霜糖知道她也注意到了。有时候最亲密的对话,往往是一句也不用说的。
第四十八章:守岁
除夕的晚上,四个人坐在客厅里守岁。电视机开着,放着春晚,但没有人认真看。林霜坐在那张摇椅上闭着眼,像是睡着了又像没有。方糖坐在沙发另一头,正拿手机给什么人发消息,嘴角带着一点笑意。霜糖怀疑她是在给程雪以前的学生发新春祝福,但她没有问。
方凝冰靠着霜糖的肩膀,手里拿着手机在看一篇技术文章。窗外的烟花声断断续续地响起来,偶尔有一束光从窗帘缝隙里闪进来,在天花板上划一道亮痕。
"霜糖。"方凝冰忽然开口,声音很轻,像是怕吵醒林霜。
"嗯?"
"你说程雪阿姨现在在那边,能看到烟花吗?"
霜糖低头看着她。她没有抬头,依然盯着手机屏幕,像是那个问题只是不经意间飘出来的。霜糖想了一会儿:"她应该能看到。她那个人,总是能找到最好的角度。"
方凝冰没有回答,但她的头往霜糖肩上靠得更重了一些。窗外的烟花声越来越密了,将近零点的时候,整个城市都像是被炸开的彩光点亮了。霜糖低头看着方凝冰安静的脸,觉得那些热闹离他们很远,但他们坐在一起这件事本身,就是不需要烟火来证明的团聚。
新年钟声敲响的时候,林霜睁开了眼睛。他坐直了身子,从口袋里掏出两个红包,递给霜糖和方凝冰:"新年好。"
霜糖愣了一下。他已经很多年没有收过红包了,但林霜递过来的那个红信封薄薄的,拿在手里却有一种温热的分量。方凝冰接过来的时候也说了一声"谢谢爸",林霜点了点头,又把头靠回椅背上,像是完成了一件重要的任务之后又重新进入了待机状态。
方糖在旁边看着,没有拆穿林霜在口袋里捏了半天的那个红包其实早就准备好了。她只是站起来,说了一句"我去煮汤圆",然后走进了厨房。
霜糖看着她的背影,又看了看旁边已经重新闭上眼的林霜,觉得这个除夕比往年都要安静,但心里的那种满,却比任何热闹都要沉。
第四十九章:年初一的老街
大年初一,方糖说想去老街走走。霜糖知道她是想去那家糖炒栗子店,每年都是这样。他没有说破,只是拿了外套和方凝冰一起陪她去。
冬天的老街人不多,路两旁的梧桐树光秃秃的,枝丫在灰色的天空里织成一张细密的网。那家糖炒栗子店还开着,门口那口大铁锅正在冒着热气。店主看到方糖就笑了:"又来啦?"方糖点了点头,买了一袋栗子,站在店门口就剥了一颗放进嘴里。
她站在冷风里嚼着那颗热栗子,目光落在街对面那棵老槐树上。霜糖顺着她的视线看过去,那棵槐树的枝干很粗,像是已经活了很多年了。
"妈,你在看什么?"
方糖把栗子壳放进路边的垃圾桶:"没什么。以前有个朋友,站在这棵树下等过我。"她的语气很平常,像是只是在说一件旧事。但霜糖注意到她剥栗子的动作比平时慢了半拍。
方凝冰没有说话,但她走到方糖身边站了一会儿,然后从袋子里拿出一颗栗子剥了,递给她。方糖接过来低头吃了,然后拍了拍手:"走吧,前面还有一家卖定胜糕的。"
她们沿着老街继续往前走,霜糖跟在她们后面,看着方糖和方凝冰并肩走着的背影。方糖个子矮一些,方凝冰比她高半个头,但她们走路的节奏意外的合拍。风把她们的头发吹起来又放下,像是那些她们都认识但不再提起的人,还在某个不远不近的地方看着这条街上的所有脚步声。
霜糖快走几步跟上她们,走在了方凝冰旁边。方凝冰没有侧头看他,但她的手从口袋里伸出来,碰了碰他的手背。他握住她的手,两个人隔着冬日薄薄的阳光走着,方糖走在前面两步,像是一张被风轻轻吹起的旧照片。
第五十章:陈墨来了
年初三,陈墨从北京来了杭州。
他没有提前打招呼,只是发了一条消息:"我到杭州了。今晚有空?"
霜糖看到消息的时候正在煮咖啡,差点把杯子打翻。他和陈墨已经很久没见了——上次见面还是宁嘎狗的婚礼,陈墨坐在角落里,穿着一件深灰色的毛衣,全程没有说超过十句话。但霜糖知道,陈墨主动说要见面,那一定是有事。
晚上他们在城西一家安静的日料店里见面。陈墨比上次见面时瘦了一些,眼下有淡淡的青影,像是最近没怎么睡好。但那双眼睛还是那样平静,像是所有情绪都被压在了很深的地方。
"你最近怎么样?"霜糖问。
"还行。"陈墨夹了一块三文鱼,"换了一个方向。不搞算法研究了。"
霜糖愣了一下:"那做什么?"
"教小孩。"陈墨放下筷子,"在清华开了一门课,给大一新生讲数据结构。从最基础的开始讲。"
霜糖看着他,觉得这个回答比陈墨说的任何一句话都更让他意外。那个曾经说"我不想再站在光里了,我只想做那个留下痕迹的人"的陈墨,现在站在讲台上,面对一群懵懂的新生,从最基础的指针开始讲起。那也是一种留下痕迹的方式——不是刻在石头上的,是在每一个听课的人心里,种下一颗会慢慢发芽的种子。
"教小孩挺好的。"霜糖说。
陈墨没有回答,但他低头喝了一口茶。那口茶喝得很慢,像是那些话他还没有完全说出来,还在找一个合适的地方安放。
"刘尘也在杭州。"霜糖换了一个话题。
"我知道。"陈墨放下杯子,"他给我发过消息。"
"你们联系得多吗?"
"不多。"陈墨说,"但够用。"
霜糖知道"够用"这两个字在陈墨的词典里已经是很高的评价了。他想起很多年前在NOI赛场外,陈墨站在刘尘面前,没有帮他,只是看着他走过那条只有他自己能走的路。那种不靠近也不离开的距离,大概就是陈墨对人好的方式。
那天晚上霜糖回家之后,方凝冰问他陈墨说了什么。霜糖想了想:"他说他在教小孩。教最基础的算法。"
方凝冰正在收拾餐桌,听到这话停了一下:"那他变了很多。"
"嗯。"霜糖靠在厨房门框上,"但也没变。他还是那样,不会说太多话,但他做的事情比说的多。"
方凝冰把碗放进水槽,拧开水龙头,水流声哗地一下响起来。霜糖站在门口看着她洗碗的背影,觉得那些他认识的、不认识的、走远的、还在身边的人,都在用自己的方式往前走。程雪用教案往前走,陈墨用讲台往前走,林霜用木工往前走,方凝冰用代码往前走。而他呢?他走的路,好像正在和这些人交错在一起,织成一张越来越密的网。
第五十一章:霜凝冰的周岁
春天来得比往年早。二月底,玉兰花已经开始打苞了。
霜凝冰的周岁生日快到了,方凝冰破天荒地开始认真地准备。她平时不太在意这些仪式感的事情,但自从有了女儿之后,她的日程表上多出了一行行和代码无关的事——什么时间打疫苗,什么季节换辅食,哪家的尿不湿比较透气。霜糖有一次看到她拿着手机认真对比两个品牌的配方表,觉得那个画面比他见过的任何算法题都要复杂。
"你以前看论文都没这么认真。"霜糖说。
方凝冰头也没抬:"论文可以重写,女儿不能。"
霜糖被她这句话堵得没话说。但他心里那种暖洋洋的感觉,比任何AC的绿都要持久。
周岁那天,家里来了不少人。方糖和林霜早早就到了,方糖抱着一大盒自制的饼干,林霜带了一把小木椅,椅背上刻着一只小乌龟——和他的摇椅同款。方凝冰的母亲也从海边小城赶来了,带了一条手织的小毯子,淡蓝色的,边角织得不太齐,但一看就是熬了很多个晚上。
宁嘎狗和吃饭没来,但寄了一个包裹,里面是一本翻翻书,每一页都画着不同的数据结构——链表、栈、队列,用小猫小狗来比喻。霜糖翻开的时候笑出了声:"他们这是要把霜凝冰从小培养成OIer。"
"那不是挺好的。"方凝冰在一旁说。
抓周的时候,霜凝冰坐在铺了红布的桌面上,面前摆了一大圈东西:书、键盘、木梳、小乌龟摆件、饼干、毛线团。霜糖和方凝冰站在旁边,紧张地看着她。霜凝冰先是看了看那堆东西,然后毫不犹豫地爬向了……饼干。
她抓起那块饼干,塞进嘴里,满足地笑了起来。
方凝冰捂住了脸。霜糖在旁边笑出了声,方糖笑得腰都直不起来了。只有林霜认真地点了点头,说了一句:"挺好的,会吃就不会饿着。"
那个下午阳光很好,客厅里挤满了人,笑声和说话声混在一起。霜凝冰在人群中爬来爬去,偶尔停下来看看这个看看那个,像一只刚学会走路的小猫。方凝冰坐在沙发上看着她,嘴角带着一抹浅浅的笑。霜糖走过去在她旁边坐下来,她的肩膀挨着他的手臂。
"你说她以后会喜欢写代码吗?"霜糖问。
方凝冰想了想:"不知道。但等她长大之后,我会告诉她有这么一群人,用代码写过很多故事。她要不要接着写,让她自己选。"
霜糖看着霜凝冰正抓着林霜的木梳翻来覆去地看,她的眼睛亮亮的,像是一切都让她感到新鲜。那些大人世界里复杂的事,对她来说还只是一堆形状和颜色。他不知道霜凝冰以后会走向哪里,但他知道她会有一张属于自己的桌子,有一扇朝南的窗户,有一群爱她的人,和一个随时可以回去的地方。
方凝冰的手指在霜糖的手背上轻轻点了两下。他低下头,看到她正在看霜凝冰,眼神里有一种他以前很少见过的东西——那种东西比平静深一些,比坚定软一些,像是所有被时间磨过的东西终于落到了该落的位置上。窗外的玉兰花苞正在悄悄地鼓起来。
第五十二章:程雪的信
春天快结束的时候,霜糖收到了一封来自沙溪的信。
信封上没有贴邮票,是托人带出来的。字迹很端正,是当地一个老师的。他拆开信,里面只有几行字:
"霜糖叔叔,我们学了递归。老师说递归就是'自己调用自己'。我想起你讲过的那只蚂蚁,它每次走错路都会回去重新走。我现在做题的时候也会这样。上次考试我考了第一名。王老师说,如果程老师还在,她会很高兴的。我也是这样想的。祝你好。"
落款是一个霜糖还记得的名字——那个扎着羊角辫的小女孩,问他"程老师不回来了吗"的那个。霜糖看着那封信,很久没有说话。方凝冰走过来看到他在发呆,低头看了一眼信纸上的字迹,什么也没问,只是轻轻拍了拍他的肩膀,然后走开了。
霜糖把信折好放进了那个装程雪教案的文件夹里。他没有回信,但他知道那个女孩已经学会了递归——不只是编程的递归,还有生活的递归。每一次遇到死路,回到原点,重新出发。那个教她的人虽然已经不在了,但她留下的方法还在继续运转。
后来霜糖在一本旧笔记本里翻到程雪写的一行字,不知道是什么时候写的,字迹有些潦草:
"最好的教育不是教别人怎么解题,是让他们学会在没有答案的时候还能继续想。那些想的过程,会比答案活得久。"
他看了很久,然后把那一页折了一个角,合上了笔记本。
第五十三章:搬家的早晨
六月,霜糖和方凝冰搬进了新家。
房子在城西,不大,两室一厅,窗户朝南。搬进去的那天早上阳光好得不像话,光从落地窗涌进来,把木地板晒成暖融融的金色。霜糖站在客厅中间环顾四周,觉得这个空间比他想象中要大一些。空荡荡的房间里只有几件拆开的家具和散落的纸箱,但在光线的填充下,那些空白并不显得荒凉。
方凝冰正在拆一个纸箱,里面是他们的书。她一本一本地往外拿,按顺序码在书架上。她做这件事的时候有一种仪式感,像那些书不只是书,是构成她们生活底色的砖块。霜糖走过去蹲下来帮她,两个人并排坐在地板上拆箱、分类、上架,没有说话,但节奏很合。
中午的时候她们去附近的面馆吃了一碗面,然后走回新家。霜糖在楼下看到了一个花鸟摊,他停下来买了一盆绿萝,放在新客厅的窗台上。绿萝的叶子还很小,但在阳光里泛着一层嫩绿的光。霜糖看着那盆绿萝,觉得这个新家终于有了一点活着的气息。
方凝冰走过来站在他旁边,也看着那盆绿萝:"你不是说要买猫吗?"
"先让绿萝活下来再说。"霜糖说。
方凝冰没有接话,但她在窗台边站了一会儿,阳光把她的头发照成浅金色。新家还到处都是纸箱和没有归位的杂物,空气里弥漫着新装修后淡淡的木质气味。窗外能看到远处连绵的灰色屋顶和更远处的山影,在初夏微热的阳光里,一切都在慢慢落定。霜糖觉得,她们会在这里待很久。
第五十四章:菜市场的早晨
搬进新家之后,霜糖和方凝冰养成了一个习惯——周末早上去附近的菜市场。
那个菜市场不大,摊位挤在一起,头顶是铁皮棚子,阳光从缝隙里漏下来,在菜堆上投下一道道光斑。霜糖推着购物车跟在方凝冰身后,看她弯着腰挑西红柿,一个一个拿起来看,轻轻捏一下再放回去,像是在执行一套极其复杂的验证算法。
"这个不错。"她把两个西红柿放进袋子里,又转去看黄瓜。
霜糖觉得方凝冰在菜市场里的样子和在机房里写代码的样子是同一种气质——专注、高效、不浪费任何一个动作。她从来不纠结,总是能在最短的时间内做出最优的选择。霜糖有一次问她怎么挑菜那么准,她说:"我妈教的。她说好的西红柿不是最大那个,是颜色最均匀的那个。"
霜糖记住了这句话。后来每次买西红柿的时候,他也会站在摊前多看几眼。有时候方凝冰会从背后走过来,伸手指一下:"那个。"他顺着她指的方向拿起来,果然是她说的那种颜色最均匀的。他把那个西红柿放进袋子里,觉得这大概就是生活里最小的一种默契。
有一次他买了一颗看起来很好的白菜,回家切开才发现里面已经烂了。方凝冰站在旁边看到那颗烂心的白菜,沉默了两秒,然后说:"下次我教你挑。"
霜糖把烂白菜扔进垃圾桶:"那你现在教。"
方凝冰走过来,拿起另一颗白菜,撕开外面一层叶子给他看:"看这里,如果芯是黄的、紧的,就是好的。如果颜色发暗,里面可能已经空了。"
他凑过去看了看,记住了那个区别。后来每次他挑白菜的时候都会想起方凝冰的手指拨开外层叶子的样子——她的指甲剪得很短,指腹上有薄薄的老茧,是多年敲键盘留下的痕迹。那些痕迹在菜市场的灯光下显得格外真实。
第五十五章:方糖的深夜电话
六月末的一个深夜,霜糖的手机突然响了。他迷迷糊糊地摸到手机,看到屏幕上显示着"妈",时间已经是凌晨一点半。他立刻清醒了,接起来:"妈?怎么了?"
电话那头沉默了几秒。然后方糖的声音传来,有些沙哑:"没什么事。就是睡不着。"
霜糖松了一口气:"做梦了?"
"嗯。"方糖的声音里带着一点不确定,像是那个梦她还没有完全消化,"梦见程雪了。梦见她还在沙溪,在教室里讲课。我站在教室外面看着她,她没看到我。然后她转过身来,对我笑了一下,又转回去了。"
霜糖听着她的话,不知道该怎么接。他握着手机靠在床头,窗帘缝里漏进来一点月光,在天花板上拖出一小片银白色的光斑:"妈,你是不是想她了。"
电话那头沉默了很久。然后方糖的声音传来,像是从很深的地方浮上来的:"有时候会。不是那种很想,就是……看到玉兰花开的时候会想起她,闻到糖炒栗子的味道会想起她,走到老街口那棵槐树下面会想起她。没有多难过,就是想一下。"
霜糖闭着眼睛,听到方糖在电话那头的呼吸声很轻很稳,像是那个梦已经被她轻轻放回了原处。他说:"想她就想吧。她应该也希望有人记得她。"
方糖没有回答。过了很久她说:"你睡吧。挂了。"
"妈,晚安。"
"晚安。"
电话挂断之后霜糖把手机放在床头柜上,侧过头看了一眼身边的方凝冰。她不知道什么时候醒了,正安静地看着他,月光落在她的眼睛里,像是两颗被水洗过的星星。她没有说话,只是把手伸过来轻轻握了一下他的手指,然后又闭上了眼睛。
霜糖躺回枕头上,看着天花板上那片银白色的光斑慢慢移动着。他想起了程雪,想起了沙溪的孩子们,想起了那盆放在新家窗台上的多肉和绿萝。他忽然意识到,那些走了的人其实没有真的离开。他们只是换了一种存在的方式——像回声一样,在某个不经意的瞬间,忽然响起来,然后慢慢消失。而那些想念他们的人,就是那个山谷。
窗外的夜色很深,新家的客厅里安安静静的,窗台上的多肉在月光下泛着柔和的暗绿色。所有的声音都沉下去了,只有那些不在场的人,还在某一个不远不近的地方,轻轻响着。
第五十六章:秋天来了
秋天的时候,霜凝冰学会了走路。她摇摇晃晃地迈出几步,然后扑进方凝冰怀里。方凝冰蹲在地上张开手臂接住她,嘴角那抹笑意比任何AC的绿都更持久。霜糖在旁边看着她们,觉得这个画面可以存很久。
方糖从杭州寄来了一箱冬枣,附了一张小纸条:"多给凝冰吃点甜的,她比你小时候爱笑。"霜糖看着那张纸条上的字迹,是方糖自己的手笔,一笔一划写得老实,和当年在键盘上敲代码时一样工整。他把纸条折好放进了抽屉里,和程雪的那封信、陈墨的教案放在一起。
那个抽屉已经装了不少东西——信、笔记、旧照片、书签、一张电影院票根、一片压平的玉兰花瓣。没有一样是值钱的,但每一件都压着一点时间。霜糖关上抽屉的时候想,等霜凝冰长大了,他会把这些东西拿出来给她看。告诉她,有一个人叫程雪,用教案种过一片森林;有一个人叫陈墨,用沉默教过一群人;有一个人叫宁嘎狗,用等待等来了一顿饭。那些人和事构成了她们现在坐着的这间屋子,这些窗台上的绿萝和多肉,和每一个安稳的下午。
方凝冰从厨房里探出头来:"冬枣洗好了,来吃。"
霜糖站起来走过去,拿起一颗冬枣咬了一口,甜得让牙齿微微发酸。窗外的阳光已经不再那么烈了,浅浅的金色铺满整个桌面,像是一张被风吹旧的稿纸,等着有人写下新的句子。霜糖坐在餐桌旁,看着方凝冰把冬枣一颗一颗摆进盘子里,霜凝冰站在她腿边仰着头等着。这个画面没有爆零也没有难题,不需要算法也不需要优化,但它比任何通过了的代码都更耐看。
他在心里想,这就是他想要的生活了——窗台上有绿萝,客厅里有阳光,餐桌旁有人等他吃一颗秋天最甜的枣。他已经翻过了那座OI山,而山那边的风景,比他想象中更要平坦和漫长。春天会来的,秋天会走的,风会一直吹。而他们都在路上。
第五十七章:一家人的晚餐
十二月的某天傍晚,方糖和林霜来了杭州。这次没有节日也没有原因,方糖在电话里只说了四个字:"想你们了。"
霜糖去车站接他们的时候,看到方糖提着一袋糖炒栗子,林霜背着一个帆布包,包的侧面插着一把木工刨。方糖看到他就笑了:"瘦了。"霜糖接过她手里的袋子:"胖了。"方糖笑着拍了他一下:"你跟你爸一样,只会说胖了瘦了。"
回去的路上方糖坐在副驾,林霜在后座靠着窗户闭着眼,像是长途坐车对他来说是件需要蓄力的事。霜糖从后视镜里看了一眼父亲,他的白发已经比去年更多了,但手还是那样稳,握在帆布包带上的手指没有一丝晃动。霜糖想起小时候林霜教他写第一行代码的样子——那时候林霜也这样坐着,看着屏幕,等他敲完最后一个括号。
晚上方凝冰做了一桌子菜。方糖去厨房帮忙,霜糖和林霜坐在客厅里看电视。林霜忽然开口:"你那个摇椅,坐久了会不会硌?"霜糖愣了一下,然后说:"不会,很舒服。"林霜点了点头,没再说话。但霜糖看到他嘴角微微动了一下,像是那个回答在他心里正好落到了该落的位置上。
吃饭的时候霜凝冰坐在专属的小椅子上,手里抓着一块馒头啃得满脸都是。方糖看着她笑,霜糖伸手帮她擦脸,擦到一半被她抓住了手指,她捏着他的指尖用力摇了摇,像是觉得很好玩。
"她以后肯定也是个倔脾气。"方糖说。
"像她妈。"霜糖说。
方凝冰在旁边夹了一筷子菜放进自己碗里,没有抬头:"像你也一样倔。"
林霜难得地笑了一声。那声音很短,但霜糖听到了。他抬起头看了父亲一眼,林霜正在低头喝汤,好像那个笑从来没有发生过。但那个笑确实落进了那个夜晚的空气里,像一粒木屑落进木纹的缝隙里,看不见了,但它确实在那里,成为那块木头上微不可查的一部分。
那天晚上方糖和林霜住在客房。霜糖路过他们门口的时候听到里面传来很轻的说话声,听不清在说什么,但能辨认出是方糖在笑——那种很放松的笑,像是只有在林霜面前才会有的声音。霜糖站在门口听了几秒,然后走回了自己房间。
方凝冰正在床头看书,看到他进来抬头看了一眼:"听到什么了?"
"没什么。"霜糖掀开被子躺进去,"就是觉得他们俩挺好的。"
方凝冰放下书关了灯。黑暗中她的声音传来:"你爸今天看霜凝冰看了很久。你知道他在看什么吗?"
"看什么?"
"看她的耳朵。你爸说,霜凝冰的耳朵和程雪长得像。"
霜糖没有说话。他在黑暗中睁着眼睛看着天花板,觉得方糖和林霜之间那些从来不说的东西,原来一直都在那里,像木头里的纹理,不需要被看见,只需要被摸到。过了很久他说:"他们从来没提过这件事。"
方凝冰翻了个身,声音已经有些困了:"有些话不需要提。提了反而碎了。"
霜糖在黑暗中侧过头,看不到她的脸,只能看到她平躺着的轮廓在月光里微微起伏。他觉得方凝冰说得对——有些东西是不能被说破的,只能被保存。像程雪的那封信,像林霜的那把木工刨,像方糖每年冬天那袋糖炒栗子。那些不说话的部分,才是时间里最结实的部分。
第五十八章:霜凝冰的第一个程序
霜凝冰五岁那年的一个下午,方凝冰在厨房做饭,霜糖在书房里改代码。霜凝冰跑到书房门口,踮着脚看着霜糖的屏幕,看了很久。
霜糖回过头:"怎么了?"
"爸爸,你在写什么?"
"在写一个程序。"霜糖把她抱起来放在腿上,"就是告诉电脑该做什么。"
霜凝冰盯着屏幕上跳动的光标:"那你能教我吗?"
霜糖愣了一下,然后笑了:"你想学?"
"想。"
霜糖想了想,打开了一个新的文档,输入了一行最简单的代码:
print("Hello, World!")
他给霜凝冰解释了几个最基本的词,然后握着她的手,在键盘上按下了回车键。
屏幕跳出了那行字。霜凝冰盯着那行字看了很久,然后转过头看着霜糖,眼睛亮晶晶的:"是我做的吗?"
"是你做的。"
霜凝冰使劲点了一下头,然后从霜糖腿上滑下来跑出去了。霜糖以为她是去玩了,但过了一会儿她又跑了回来,手里举着一张纸,上面用蜡笔画了一个歪歪扭扭的"Hello, World!",还在下面画了一只小乌龟。她把纸放在霜糖的键盘旁边,仰着头看着他:"送你的。"
霜糖低头看着那张画,看着歪歪扭扭的字母和那只线条歪斜的小乌龟。他觉得这张纸比任何一篇论文都更值得保存。他把那张画小心地夹进了那本算法书的第347页——那是方凝冰当年夹书签的那一页。
晚上方凝冰看到了那张画,她的目光在纸上停了一会儿,然后说:"她画的乌龟比你画的好看。"
"我什么时候画过乌龟?"
"你以前在沙溪发过一张照片,黑板上画了一只乌龟,歪的。"
霜糖想起来了。那是他刚到沙溪的第一天,在黑板上画了一只小乌龟,画得很丑,孩子们笑了很久。他没想到方凝冰还记得那张照片。
"你什么时候看到的?"
"你发到群里的时候我就看到了。"方凝冰把那张画放到桌上,"保存了。"
霜糖看着她转身走开的背影,觉得那些他以为只是随手发出去的东西,原来都被另一个人接住了,收好了,放在一个她自己的角落里。他忽然明白了一件事——爱不是什么惊天动地的东西,就是有人在你不知道的时候,把你的那些不起眼的东西一点一点地存起来。
第五十九章:陈墨的婚礼
第二年春天,陈墨结婚了。
婚礼很简单,没有大操大办,只是在一个小院子里请了十几个人。霜糖收到请柬的时候愣了一下,请柬上没有写新娘的名字,只写了一行字:"来就行。不要带礼物。"
霜糖和方凝冰去的时候带了一盆绿萝——和新家客厅里那盆一样的,用牛皮纸包着。陈墨看到那盆绿萝的时候沉默了两秒,然后接过去放在了门口的鞋柜上。那个动作让霜糖想起很多年前在NOI赛场上陈墨接过分区牌的样子,一样沉默,一样不动声色。
新娘是个看起来很温柔的人,说话不多,但笑起来的时候眼睛会弯成两道月牙。她站在陈墨旁边,偶尔伸手帮他整理一下衣领,动作很轻,像是不想惊动什么。霜糖看到陈墨侧过头看她的时候,那个眼神里有一种从未见过的东西——不是算法题解出来的确定,而是另一种更柔软的确定,像是他知道某个复杂系统终于稳定地运行了,没有报错,不需要调试。
宁嘎狗和吃饭也来了。宁嘎狗一进门就嚷着说:"陈墨你这请柬写得也太敷衍了,连个名字都没有,我还以为是诈骗短信。"吃饭站在他旁边,没有说话,但把那盆绿萝往桌上推了推,让它在更显眼的位置好晒到阳光。
吃饭这个细小的动作,让霜糖想起他已经很久没有仔细看过吃饭了。这个人依然沉默寡言,但他的沉默里如今多了一些安稳的底色——不再像一块被拉紧的弦,而是更像一座盖好了很久的房子,风还能吹过窗缝,但不会再发出嗡鸣声。霜糖侧过头看方凝冰,她正低头喝茶,像是早就知道了这一切。
席间陈墨站起来敬酒,话依然很少。他只说了三句话:"谢谢你们来。我以后会好好过日子。你们也是。"他坐下来的时候新娘握了握他的手。霜糖看到他们的手指在桌面下微微交握着,那个动作很小,但他看得清清楚楚。
回家的路上方凝冰靠着车窗闭着眼,像是有些累了。霜糖开着车,偶尔侧过头看她一眼。落日的光从车窗斜斜地照进来,把她的侧脸染成暖金色。窗外的田野正在往后退,远处的树影一片一片地滑过去,像在替她们翻着一本很厚的书。
"你说陈墨以后会变吗?"方凝冰忽然开口,没有睁眼。
"变什么?"
"变得话多一点。"
霜糖想了一下:"不会。但他也不需要。他身边那个人懂他。"
方凝冰没有再说话。但霜糖看到她嘴角微微弯了一下,像是那个回答正好落在了她心里的某个位置。
第六十章:霜糖的抉择
那年秋天,霜糖收到了一个邀请。国内一个知名的线上教育平台想做一套面向青少年的算法启蒙课程,想让他来主导内容设计。报酬不错,时间自由,可以远程工作。
霜糖把邀请函拿给方凝冰看,方凝冰正在给霜凝冰扎辫子。她看了一眼邀请函,又看了一眼镜子里的霜糖:"你想去吗?"
"不知道。"霜糖靠在门框上,"内容是我喜欢的,教孩子写代码我一直觉得有意义。但我不想再把自己卷进太多事情里了。程雪阿姨那本教案我还没整理完。还有……"
"还有什么?"
霜糖想了想:"还有你们。"
方凝冰把霜凝冰的辫子扎好,拍了拍她的后背让她出去玩,然后转过身看着霜糖:"你不用为了我们放弃什么。你去做你想做的事,家里的事我来兜底。"
霜糖看着她,觉得她这句话和程雪当年说的"明年还可以再来"有一种相似的底音——不是鼓励他往前冲,是告诉他,不管冲到哪里,回头都有人在。他走过去在她面前蹲下来,仰头看着她:"那你帮我看一下教案?"
方凝冰低头看了他一眼:"行。但你要把霜凝冰的乐高课接送包了。"
"成交。"
那天晚上霜糖回复了那封邀请函,决定接下那个项目。他在邮件里写:"我希望这套课程不只是教孩子写代码,是让他们觉得写代码是一件可以被慢慢学的事,不是只有天才才能做的事。"对方回复得很快:"这正是我们想要的。"
霜糖合上电脑走到客厅,方凝冰正在陪霜凝冰搭积木。霜凝冰把几块红色的积木叠在一起,说:"这是爸爸写的代码。"霜糖在旁边坐下来问她:"那蓝色的呢?"霜凝冰想了想:"蓝色的是妈妈写的,比较好看。"霜糖笑了。方凝冰没有抬头,但她的耳朵红了。
客厅里的灯是暖黄色的,窗外的夜色很深,远处的城市灯火正在一点一点亮起来,像无数扇刚被推开的窗。霜糖坐在她们旁边,看着那些积木在灯光下投射出细长的影子,觉得这就是他想要的生活——不用很大,不用很耀眼,只需要有人和他一起搭同一座积木塔。
第六十一章:最后一封信
程雪离开三年之后,霜糖收到了一封来自沙溪的信。信封是牛皮纸的,没有贴邮票,是托人带出来的。他拆开的时候手指有些抖,但他知道那不会是程雪写的了。
信纸是那种泛黄的横格纸,字迹端正而稚嫩。霜糖看了第一行就知道是谁写的——是那个扎着羊角辫的小女孩,她已经长大了不少,字迹比上次又稳了一些。信的内容不长:
"霜糖叔叔,我今年上初中了。学校里也有电脑课,但我还是记得程老师教我们的那些。我学会了用循环画星星,画了一颗送给程老师,但不知道她能不能看到。你上次跟我说,如果找不到路就回到原点。我现在遇到不会做的题也会这样——回到第一步重新想。程老师以前也是这样教的。谢谢你。我会好好学下去的。"
霜糖把信纸放在桌上,去阳台站了一会儿。外面的天正在暗下来,远处的楼顶有一盏灯亮了起来,像是有人在很远的地方打开了一扇窗。他不知道那个女孩长什么样子了,不知道她以后会不会真的走上编程这条路。但他知道程雪种下的那些东西还在长,每一片新叶子都在替她呼吸。
后来霜糖把那封信放进了那个文件夹里,和程雪的教案放在一起。文件夹已经变厚了,他翻开的时候看到第一页是程雪手写的目录,字迹工整,像她写的每一行代码。霜糖看了很久,然后合上了文件夹。他知道那不是结束,只是另一段回声的开始。
方凝冰从厨房里探出头问他:"怎么了?"
霜糖走过去站在她旁边:"没什么。就是觉得程雪阿姨还在。"
方凝冰没有问为什么。她只是把手里剥好的半个橙子递给他,然后把剩下的半个放进自己嘴里。橙子的香气在客厅里散开,和窗外刚刚暗下来的暮色混在一起。霜糖咬了一口橙子,酸甜的汁水在舌尖炸开——他还记得程雪也喜欢这样吃橙子,剥得干干净净,一瓣一瓣地放在盘子里。霜糖站在厨房门口,看着方凝冰把剩下的一半橙子放进冰箱,水龙头的水声和远处街上偶尔传来的车声混在一起,在这个秋天的傍晚里,程雪似乎就在某个不远不近的地方,终于可以安安静静地吃下一瓣完整的橙子。
第六十二章:未完的循环
霜凝冰八岁那年,已经能自己写一些简单的Python程序了。
霜糖没有刻意教她,只是每次在书房里写代码的时候,霜凝冰会搬个小凳子坐在他旁边,看着屏幕上的字符一行一行地跳出来。有时候她会问"这是什么",霜糖就停下来给她讲——讲变量是什么、循环是什么、函数是什么。她听得很认真,有时候还会在草稿纸上画一些奇奇怪怪的图,说是她自己的"算法"。
方凝冰有时候会站在书房门口看他们。她看到霜糖握着霜凝冰的手在键盘上敲下一行行代码,看到霜凝冰的眼睛在屏幕光里发亮,她会在门口站很久,然后安静地走开。有一天晚上霜糖在收拾房间的时候,发现方凝冰的一本旧笔记本里夹着一张草稿纸——是霜凝冰画的那些"算法",被方凝冰小心地压平了,按时间顺序排好。霜糖看着那些歪歪扭扭的线条和箭头,觉得这就是她们三个人各自保存时间的方式。他写代码,方凝冰收集画纸,霜凝冰认真听课。程雪如果看到这些,应该会觉得很满意——不是因为他们做了什么了不起的事,而是因为那些简单的线条里,藏着一种安安静静地延续下去的力量。
窗外又开始飘雪了,细碎的,像是有人在很远的地方撒了一把糖霜。方凝冰从背后走过来站在霜糖身边,她的手搭在他的手臂上,目光落在窗外那些细细的雪粒上。远处的城市轮廓在雪中变得模糊而柔软,像是有人用橡皮轻轻擦掉了一些过于锋利的边缘,留下一片更温柔的天空。
"你说,"方凝冰的声音很轻,"霜凝冰以后会走哪条路?"
霜糖看着窗外:"不知道。但不管她走哪条路,都会有人在旁边看着。"
方凝冰没有回答,但她的手收拢了一些,像是替那个还没长成的未来先握住了什么。窗外的雪一直在下,慢慢地在窗台上积起一层薄薄的白。霜糖站在那里,觉得自己已经在一条很长的路上走了很久了,而此刻他只需要停在一扇亮着灯的窗边,看雪慢慢地落。
春风渡我过OI山。风还在吹,山还在那里,只是不再需要翻越了。他已经在山的那一边,找到了自己的一片平地,一座小房子,一扇朝南的窗户。窗台上的多肉还在长,绿萝垂下新的藤蔓,茶几上放着一本翻了一半的算法书,书页间夹着一张蜡笔画的小乌龟。
霜凝冰在客厅里喊:"爸爸!妈妈!来看我画的星星!"
霜糖和方凝冰转身往客厅走去。那个夜晚很安静,只有雪落的声音,和霜凝冰兴奋的脚步声。窗台上的绿萝在灯光里投下淡淡的影子,像是一棵正在慢慢长大的树。而那些来来往往的人、那些被风吹散的种子、那些还没说完的话,都还在某一个看不见的地方,继续生长着,继续响着。
第四十五章:窗台上的新芽
那天从婚礼回来之后,方凝冰很少提起"明年"那两个字,但霜糖知道她已经把那句话收起来了,像是收一枚书签一样夹进了日子的缝隙里。
十二月末,杭州下了一场薄雪。霜糖站在窗台边看着外面那些细碎的雪粒落在路灯的光里,方凝冰从背后走过来,把一杯热茶放进他手里。他低头喝了一口,是茉莉花茶,淡淡的花香在冬天里显得格外温润。
"你说,"方凝冰也站在窗边,和他并肩看着外面的雪,"程雪阿姨那盆多肉,冬天要不要搬进来?外面太冷了。"
霜糖侧过头看了她一眼。她正看着窗外,侧脸在路灯的微光里显得很柔和。他想起方糖把这盆多肉从沙溪带回来的时候说过的话——"它跟着程雪过了好几个冬天,扛得住。"但他还是说:"搬进来吧,放在客厅的茶几上,阳光也能照到。"
方凝冰没说话,但她转身走到门口,把那盆多肉端了进来。她弯着腰把它放在茶几正中间,仔细转了转花盆的角度,让朝南的那面正对着窗户。霜糖看着她做这些事的背影,觉得这个动作像是某种仪式,像是替程雪把那盏灯重新点亮了一回。
那天晚上她们坐在客厅里,方凝冰在看一本编程书,霜糖在旁边写代码。窗台上空空荡荡的,茶几上那盆多肉在台灯的光里泛着墨绿色的光泽。霜糖写了几行代码忽然停下来,看了看那盆多肉,又看了看方凝冰:"凝冰,我们要不要养只猫?"
方凝冰翻了一页书:"你还有空养猫?"
"不是那种很闹的猫,养一只安静的。可以趴在窗台上晒太阳那种。"
方凝冰想了想:"那得等搬了新家再说。现在的房子太小,猫没地方跑。"
霜糖愣了一下:"你已经在想搬家的事了?"
方凝冰没有抬头,但她的手指在书页边缘停了一下:"你不是说明年吗。明年就快到了。"
霜糖看着她低头看书的样子,灯光落在她的睫毛上,像一层薄薄的金粉。他没有再说什么,但他把那个画面记在了心里。
第四十六章:方糖的电话
元旦那天,霜糖给方糖打了电话。他本来想说新年快乐,但方糖接起来之后第一句话是:"多肉还好吗?"
霜糖愣了一下,然后笑了:"好得很。凝冰刚给它浇了水。"
"别浇太多。"方糖的声音隔着电话有些模糊,像是正在厨房里忙活,"程雪以前那盆就是被我浇烂根过一次,后来她发了好大一通脾气。"
霜糖听着她絮絮叨叨地说着程雪的事,没有打断她。他知道方糖很少主动提起程雪,但每次提起的时候,都有一种小心翼翼的郑重,像是那些记忆经不起太重的触碰。
"妈,你今年过年回杭州吗?"霜糖等她说完了才开口。
方糖沉默了几秒:"回。你爸说想看看霜凝冰。"
"那你来我们这边住。"
"好。"
挂了电话之后霜糖靠在沙发上,窗外的天已经暗下来了,远处的灯一盏一盏地亮起来。方凝冰从卧室走出来,手里拿着一条围巾:"方糖阿姨要回来?"
"嗯,过年回来。说到时候来我们这边住。"霜糖接过她递来的围巾,"你怎么知道是她?"
"你接电话的时候声音变轻了。"方凝冰在他旁边坐下,"跟你平时不一样。"
霜糖侧过头看着她。她正在低头玩手机,像只是随口说了一句。但他知道,方凝冰一直是这样——她不说很多话,但她什么都知道。那些细微的、不会被人注意到的差别,她都会收在眼底,然后在一个不经意的时候轻轻说出来。像是她一直站在某个安静的角落里,把所有人的轮廓都描了一遍。
第四十七章:林霜的木工坊
腊月二十六,方糖和林霜开车到了杭州。他们开了一辆旧面包车,后座放着一个用布包着的大东西。霜糖在楼下接他们的时候看到那个布包就笑了:"爸,你又做了什么东西?"
林霜把布掀开一角,里面是一张摇椅。木头的纹理很漂亮,打磨得光滑而温润。椅背的弧度像是量过很多次才定下来的,扶手上还刻着一个小小的图案——一只简笔的小乌龟,正往前爬。
"给你的。"林霜把摇椅搬下来,"放在阳台上,可以晒太阳。"
霜糖伸手摸着椅背上那只小乌龟的刻痕,指腹沿着那些线条走了一遍。他想起很多年前在沙溪的那个晚上,林霜在院子里打磨木梳的样子,木屑在夕阳里飘散。那时候他觉得自己和父亲之间隔着一层东西,但现在他才知道,那层东西不是隔阂,是木头的纹路。林霜把他所有的关心都刻进去了,只是不擅长用语言说出来。
"谢谢爸。"霜糖说。
林霜点了点头,转身去搬别的东西。方糖站在旁边看着他们父子俩,嘴角带着笑。她和林霜之间有一种很奇特的默契,不说话的时候也在说话。霜糖看了他们一眼,然后把那张摇椅搬上了楼。
方凝冰在门口迎接方糖和林霜,她已经把客房收拾好了,床单是新换的,窗台上摆了一小束干花。方糖进门的时候愣了一下,目光在那束干花上停了几秒,像是认出了它来自哪一片山坡,然后她什么都没说,只是伸手抱了抱方凝冰:"长胖了。"
方凝冰没有反驳:"阿姨做的饭好吃。"
那几天杭州的天气一直阴着,偶尔飘一点细雪。林霜大部分时间坐在阳台上那张新做的摇椅上看手机,偶尔拿块木头在手里削着什么,也不说话,就那么坐着。方糖和方凝冰在厨房里研究新菜谱,霜糖在书房里写代码。四个人各做各的事,但谁也不觉得冷清。有时候客厅里安安静静的,只有厨房里切菜的声音和林霜削木头的沙沙声,像一首不用填词的曲子。
年夜饭是方糖和方凝冰一起做的。方凝冰负责切菜配菜,方糖掌勺。厨房里热气腾腾的,锅铲碰撞的声音和油烟机嗡嗡的响声混在一起。霜糖站在厨房门口看着她们,觉得这个画面很熟悉——很多年前在沙溪,方糖和程雪也是这样一起做饭,背对着门口,偶尔侧过头说一句什么,然后又转回去继续忙手里的活。那时候他还小,听不懂那些对话,但他记住了那个画面。
吃饭的时候林霜喝了一点酒,脸色微微发红。他平时话很少,喝了酒之后话反而更少了,只是坐在那里慢慢地喝,偶尔夹一口菜。方糖坐在他旁边,给他碗里夹了一块排骨,他低头吃了,抬头看了她一眼。那一眼很短,但霜糖看到了——那是看了很多年之后还会再看一眼的眼神,没有变化,也没有褪色。
方凝冰也看到了。她在桌子底下轻轻碰了一下霜糖的脚踝,没有抬头,但霜糖知道她也注意到了。有时候最亲密的对话,往往是一句也不用说的。
第四十八章:守岁
除夕的晚上,四个人坐在客厅里守岁。电视机开着,放着春晚,但没有人认真看。林霜坐在那张摇椅上闭着眼,像是睡着了又像没有。方糖坐在沙发另一头,正拿手机给什么人发消息,嘴角带着一点笑意。霜糖怀疑她是在给程雪以前的学生发新春祝福,但她没有问。
方凝冰靠着霜糖的肩膀,手里拿着手机在看一篇技术文章。窗外的烟花声断断续续地响起来,偶尔有一束光从窗帘缝隙里闪进来,在天花板上划一道亮痕。
"霜糖。"方凝冰忽然开口,声音很轻,像是怕吵醒林霜。
"嗯?"
"你说程雪阿姨现在在那边,能看到烟花吗?"
霜糖低头看着她。她没有抬头,依然盯着手机屏幕,像是那个问题只是不经意间飘出来的。霜糖想了一会儿:"她应该能看到。她那个人,总是能找到最好的角度。"
方凝冰没有回答,但她的头往霜糖肩上靠得更重了一些。窗外的烟花声越来越密了,将近零点的时候,整个城市都像是被炸开的彩光点亮了。霜糖低头看着方凝冰安静的脸,觉得那些热闹离他们很远,但他们坐在一起这件事本身,就是不需要烟火来证明的团聚。
新年钟声敲响的时候,林霜睁开了眼睛。他坐直了身子,从口袋里掏出两个红包,递给霜糖和方凝冰:"新年好。"
霜糖愣了一下。他已经很多年没有收过红包了,但林霜递过来的那个红信封薄薄的,拿在手里却有一种温热的分量。方凝冰接过来的时候也说了一声"谢谢爸",林霜点了点头,又把头靠回椅背上,像是完成了一件重要的任务之后又重新进入了待机状态。
方糖在旁边看着,没有拆穿林霜在口袋里捏了半天的那个红包其实早就准备好了。她只是站起来,说了一句"我去煮汤圆",然后走进了厨房。
霜糖看着她的背影,又看了看旁边已经重新闭上眼的林霜,觉得这个除夕比往年都要安静,但心里的那种满,却比任何热闹都要沉。
第四十九章:年初一的老街
大年初一,方糖说想去老街走走。霜糖知道她是想去那家糖炒栗子店,每年都是这样。他没有说破,只是拿了外套和方凝冰一起陪她去。
冬天的老街人不多,路两旁的梧桐树光秃秃的,枝丫在灰色的天空里织成一张细密的网。那家糖炒栗子店还开着,门口那口大铁锅正在冒着热气。店主看到方糖就笑了:"又来啦?"方糖点了点头,买了一袋栗子,站在店门口就剥了一颗放进嘴里。
她站在冷风里嚼着那颗热栗子,目光落在街对面那棵老槐树上。霜糖顺着她的视线看过去,那棵槐树的枝干很粗,像是已经活了很多年了。
"妈,你在看什么?"
方糖把栗子壳放进路边的垃圾桶:"没什么。以前有个朋友,站在这棵树下等过我。"她的语气很平常,像是只是在说一件旧事。但霜糖注意到她剥栗子的动作比平时慢了半拍。
方凝冰没有说话,但她走到方糖身边站了一会儿,然后从袋子里拿出一颗栗子剥了,递给她。方糖接过来低头吃了,然后拍了拍手:"走吧,前面还有一家卖定胜糕的。"
她们沿着老街继续往前走,霜糖跟在她们后面,看着方糖和方凝冰并肩走着的背影。方糖个子矮一些,方凝冰比她高半个头,但她们走路的节奏意外的合拍。风把她们的头发吹起来又放下,像是那些她们都认识但不再提起的人,还在某个不远不近的地方看着这条街上的所有脚步声。
霜糖快走几步跟上她们,走在了方凝冰旁边。方凝冰没有侧头看他,但她的手从口袋里伸出来,碰了碰他的手背。他握住她的手,两个人隔着冬日薄薄的阳光走着,方糖走在前面两步,像是一张被风轻轻吹起的旧照片。
第五十章:陈墨来了
年初三,陈墨从北京来了杭州。
他没有提前打招呼,只是发了一条消息:"我到杭州了。今晚有空?"
霜糖看到消息的时候正在煮咖啡,差点把杯子打翻。他和陈墨已经很久没见了——上次见面还是宁嘎狗的婚礼,陈墨坐在角落里,穿着一件深灰色的毛衣,全程没有说超过十句话。但霜糖知道,陈墨主动说要见面,那一定是有事。
晚上他们在城西一家安静的日料店里见面。陈墨比上次见面时瘦了一些,眼下有淡淡的青影,像是最近没怎么睡好。但那双眼睛还是那样平静,像是所有情绪都被压在了很深的地方。
"你最近怎么样?"霜糖问。
"还行。"陈墨夹了一块三文鱼,"换了一个方向。不搞算法研究了。"
霜糖愣了一下:"那做什么?"
"教小孩。"陈墨放下筷子,"在清华开了一门课,给大一新生讲数据结构。从最基础的开始讲。"
霜糖看着他,觉得这个回答比陈墨说的任何一句话都更让他意外。那个曾经说"我不想再站在光里了,我只想做那个留下痕迹的人"的陈墨,现在站在讲台上,面对一群懵懂的新生,从最基础的指针开始讲起。那也是一种留下痕迹的方式——不是刻在石头上的,是在每一个听课的人心里,种下一颗会慢慢发芽的种子。
"教小孩挺好的。"霜糖说。
陈墨没有回答,但他低头喝了一口茶。那口茶喝得很慢,像是那些话他还没有完全说出来,还在找一个合适的地方安放。
"刘尘也在杭州。"霜糖换了一个话题。
"我知道。"陈墨放下杯子,"他给我发过消息。"
"你们联系得多吗?"
"不多。"陈墨说,"但够用。"
霜糖知道"够用"这两个字在陈墨的词典里已经是很高的评价了。他想起很多年前在NOI赛场外,陈墨站在刘尘面前,没有帮他,只是看着他走过那条只有他自己能走的路。那种不靠近也不离开的距离,大概就是陈墨对人好的方式。
那天晚上霜糖回家之后,方凝冰问他陈墨说了什么。霜糖想了想:"他说他在教小孩。教最基础的算法。"
方凝冰正在收拾餐桌,听到这话停了一下:"那他变了很多。"
"嗯。"霜糖靠在厨房门框上,"但也没变。他还是那样,不会说太多话,但他做的事情比说的多。"
方凝冰把碗放进水槽,拧开水龙头,水流声哗地一下响起来。霜糖站在门口看着她洗碗的背影,觉得那些他认识的、不认识的、走远的、还在身边的人,都在用自己的方式往前走。程雪用教案往前走,陈墨用讲台往前走,林霜用木工往前走,方凝冰用代码往前走。而他呢?他走的路,好像正在和这些人交错在一起,织成一张越来越密的网。
第五十一章:霜凝冰的周岁
春天来得比往年早。二月底,玉兰花已经开始打苞了。
霜凝冰的周岁生日快到了,方凝冰破天荒地开始认真地准备。她平时不太在意这些仪式感的事情,但自从有了女儿之后,她的日程表上多出了一行行和代码无关的事——什么时间打疫苗,什么季节换辅食,哪家的尿不湿比较透气。霜糖有一次看到她拿着手机认真对比两个品牌的配方表,觉得那个画面比他见过的任何算法题都要复杂。
"你以前看论文都没这么认真。"霜糖说。
方凝冰头也没抬:"论文可以重写,女儿不能。"
霜糖被她这句话堵得没话说。但他心里那种暖洋洋的感觉,比任何AC的绿都要持久。
周岁那天,家里来了不少人。方糖和林霜早早就到了,方糖抱着一大盒自制的饼干,林霜带了一把小木椅,椅背上刻着一只小乌龟——和他的摇椅同款。方凝冰的母亲也从海边小城赶来了,带了一条手织的小毯子,淡蓝色的,边角织得不太齐,但一看就是熬了很多个晚上。
宁嘎狗和吃饭没来,但寄了一个包裹,里面是一本翻翻书,每一页都画着不同的数据结构——链表、栈、队列,用小猫小狗来比喻。霜糖翻开的时候笑出了声:"他们这是要把霜凝冰从小培养成OIer。"
"那不是挺好的。"方凝冰在一旁说。
抓周的时候,霜凝冰坐在铺了红布的桌面上,面前摆了一大圈东西:书、键盘、木梳、小乌龟摆件、饼干、毛线团。霜糖和方凝冰站在旁边,紧张地看着她。霜凝冰先是看了看那堆东西,然后毫不犹豫地爬向了……饼干。
她抓起那块饼干,塞进嘴里,满足地笑了起来。
方凝冰捂住了脸。霜糖在旁边笑出了声,方糖笑得腰都直不起来了。只有林霜认真地点了点头,说了一句:"挺好的,会吃就不会饿着。"
那个下午阳光很好,客厅里挤满了人,笑声和说话声混在一起。霜凝冰在人群中爬来爬去,偶尔停下来看看这个看看那个,像一只刚学会走路的小猫。方凝冰坐在沙发上看着她,嘴角带着一抹浅浅的笑。霜糖走过去在她旁边坐下来,她的肩膀挨着他的手臂。
"你说她以后会喜欢写代码吗?"霜糖问。
方凝冰想了想:"不知道。但等她长大之后,我会告诉她有这么一群人,用代码写过很多故事。她要不要接着写,让她自己选。"
霜糖看着霜凝冰正抓着林霜的木梳翻来覆去地看,她的眼睛亮亮的,像是一切都让她感到新鲜。那些大人世界里复杂的事,对她来说还只是一堆形状和颜色。他不知道霜凝冰以后会走向哪里,但他知道她会有一张属于自己的桌子,有一扇朝南的窗户,有一群爱她的人,和一个随时可以回去的地方。
方凝冰的手指在霜糖的手背上轻轻点了两下。他低下头,看到她正在看霜凝冰,眼神里有一种他以前很少见过的东西——那种东西比平静深一些,比坚定软一些,像是所有被时间磨过的东西终于落到了该落的位置上。窗外的玉兰花苞正在悄悄地鼓起来。
第五十二章:程雪的信
春天快结束的时候,霜糖收到了一封来自沙溪的信。
信封上没有贴邮票,是托人带出来的。字迹很端正,是当地一个老师的。他拆开信,里面只有几行字:
"霜糖叔叔,我们学了递归。老师说递归就是'自己调用自己'。我想起你讲过的那只蚂蚁,它每次走错路都会回去重新走。我现在做题的时候也会这样。上次考试我考了第一名。王老师说,如果程老师还在,她会很高兴的。我也是这样想的。祝你好。"
落款是一个霜糖还记得的名字——那个扎着羊角辫的小女孩,问他"程老师不回来了吗"的那个。霜糖看着那封信,很久没有说话。方凝冰走过来看到他在发呆,低头看了一眼信纸上的字迹,什么也没问,只是轻轻拍了拍他的肩膀,然后走开了。
霜糖把信折好放进了那个装程雪教案的文件夹里。他没有回信,但他知道那个女孩已经学会了递归——不只是编程的递归,还有生活的递归。每一次遇到死路,回到原点,重新出发。那个教她的人虽然已经不在了,但她留下的方法还在继续运转。
后来霜糖在一本旧笔记本里翻到程雪写的一行字,不知道是什么时候写的,字迹有些潦草:
"最好的教育不是教别人怎么解题,是让他们学会在没有答案的时候还能继续想。那些想的过程,会比答案活得久。"
他看了很久,然后把那一页折了一个角,合上了笔记本。
第五十三章:搬家的早晨
六月,霜糖和方凝冰搬进了新家。
房子在城西,不大,两室一厅,窗户朝南。搬进去的那天早上阳光好得不像话,光从落地窗涌进来,把木地板晒成暖融融的金色。霜糖站在客厅中间环顾四周,觉得这个空间比他想象中要大一些。空荡荡的房间里只有几件拆开的家具和散落的纸箱,但在光线的填充下,那些空白并不显得荒凉。
方凝冰正在拆一个纸箱,里面是他们的书。她一本一本地往外拿,按顺序码在书架上。她做这件事的时候有一种仪式感,像那些书不只是书,是构成她们生活底色的砖块。霜糖走过去蹲下来帮她,两个人并排坐在地板上拆箱、分类、上架,没有说话,但节奏很合。
中午的时候她们去附近的面馆吃了一碗面,然后走回新家。霜糖在楼下看到了一个花鸟摊,他停下来买了一盆绿萝,放在新客厅的窗台上。绿萝的叶子还很小,但在阳光里泛着一层嫩绿的光。霜糖看着那盆绿萝,觉得这个新家终于有了一点活着的气息。
方凝冰走过来站在他旁边,也看着那盆绿萝:"你不是说要买猫吗?"
"先让绿萝活下来再说。"霜糖说。
方凝冰没有接话,但她在窗台边站了一会儿,阳光把她的头发照成浅金色。新家还到处都是纸箱和没有归位的杂物,空气里弥漫着新装修后淡淡的木质气味。窗外能看到远处连绵的灰色屋顶和更远处的山影,在初夏微热的阳光里,一切都在慢慢落定。霜糖觉得,她们会在这里待很久。
第五十四章:菜市场的早晨
搬进新家之后,霜糖和方凝冰养成了一个习惯——周末早上去附近的菜市场。
那个菜市场不大,摊位挤在一起,头顶是铁皮棚子,阳光从缝隙里漏下来,在菜堆上投下一道道光斑。霜糖推着购物车跟在方凝冰身后,看她弯着腰挑西红柿,一个一个拿起来看,轻轻捏一下再放回去,像是在执行一套极其复杂的验证算法。
"这个不错。"她把两个西红柿放进袋子里,又转去看黄瓜。
霜糖觉得方凝冰在菜市场里的样子和在机房里写代码的样子是同一种气质——专注、高效、不浪费任何一个动作。她从来不纠结,总是能在最短的时间内做出最优的选择。霜糖有一次问她怎么挑菜那么准,她说:"我妈教的。她说好的西红柿不是最大那个,是颜色最均匀的那个。"
霜糖记住了这句话。后来每次买西红柿的时候,他也会站在摊前多看几眼。有时候方凝冰会从背后走过来,伸手指一下:"那个。"他顺着她指的方向拿起来,果然是她说的那种颜色最均匀的。他把那个西红柿放进袋子里,觉得这大概就是生活里最小的一种默契。
有一次他买了一颗看起来很好的白菜,回家切开才发现里面已经烂了。方凝冰站在旁边看到那颗烂心的白菜,沉默了两秒,然后说:"下次我教你挑。"
霜糖把烂白菜扔进垃圾桶:"那你现在教。"
方凝冰走过来,拿起另一颗白菜,撕开外面一层叶子给他看:"看这里,如果芯是黄的、紧的,就是好的。如果颜色发暗,里面可能已经空了。"
他凑过去看了看,记住了那个区别。后来每次他挑白菜的时候都会想起方凝冰的手指拨开外层叶子的样子——她的指甲剪得很短,指腹上有薄薄的老茧,是多年敲键盘留下的痕迹。那些痕迹在菜市场的灯光下显得格外真实。
第五十五章:方糖的深夜电话
六月末的一个深夜,霜糖的手机突然响了。他迷迷糊糊地摸到手机,看到屏幕上显示着"妈",时间已经是凌晨一点半。他立刻清醒了,接起来:"妈?怎么了?"
电话那头沉默了几秒。然后方糖的声音传来,有些沙哑:"没什么事。就是睡不着。"
霜糖松了一口气:"做梦了?"
"嗯。"方糖的声音里带着一点不确定,像是那个梦她还没有完全消化,"梦见程雪了。梦见她还在沙溪,在教室里讲课。我站在教室外面看着她,她没看到我。然后她转过身来,对我笑了一下,又转回去了。"
霜糖听着她的话,不知道该怎么接。他握着手机靠在床头,窗帘缝里漏进来一点月光,在天花板上拖出一小片银白色的光斑:"妈,你是不是想她了。"
电话那头沉默了很久。然后方糖的声音传来,像是从很深的地方浮上来的:"有时候会。不是那种很想,就是……看到玉兰花开的时候会想起她,闻到糖炒栗子的味道会想起她,走到老街口那棵槐树下面会想起她。没有多难过,就是想一下。"
霜糖闭着眼睛,听到方糖在电话那头的呼吸声很轻很稳,像是那个梦已经被她轻轻放回了原处。他说:"想她就想吧。她应该也希望有人记得她。"
方糖没有回答。过了很久她说:"你睡吧。挂了。"
"妈,晚安。"
"晚安。"
电话挂断之后霜糖把手机放在床头柜上,侧过头看了一眼身边的方凝冰。她不知道什么时候醒了,正安静地看着他,月光落在她的眼睛里,像是两颗被水洗过的星星。她没有说话,只是把手伸过来轻轻握了一下他的手指,然后又闭上了眼睛。
霜糖躺回枕头上,看着天花板上那片银白色的光斑慢慢移动着。他想起了程雪,想起了沙溪的孩子们,想起了那盆放在新家窗台上的多肉和绿萝。他忽然意识到,那些走了的人其实没有真的离开。他们只是换了一种存在的方式——像回声一样,在某个不经意的瞬间,忽然响起来,然后慢慢消失。而那些想念他们的人,就是那个山谷。
窗外的夜色很深,新家的客厅里安安静静的,窗台上的多肉在月光下泛着柔和的暗绿色。所有的声音都沉下去了,只有那些不在场的人,还在某一个不远不近的地方,轻轻响着。
第五十六章:秋天来了
秋天的时候,霜凝冰学会了走路。她摇摇晃晃地迈出几步,然后扑进方凝冰怀里。方凝冰蹲在地上张开手臂接住她,嘴角那抹笑意比任何AC的绿都更持久。霜糖在旁边看着她们,觉得这个画面可以存很久。
方糖从杭州寄来了一箱冬枣,附了一张小纸条:"多给凝冰吃点甜的,她比你小时候爱笑。"霜糖看着那张纸条上的字迹,是方糖自己的手笔,一笔一划写得老实,和当年在键盘上敲代码时一样工整。他把纸条折好放进了抽屉里,和程雪的那封信、陈墨的教案放在一起。
那个抽屉已经装了不少东西——信、笔记、旧照片、书签、一张电影院票根、一片压平的玉兰花瓣。没有一样是值钱的,但每一件都压着一点时间。霜糖关上抽屉的时候想,等霜凝冰长大了,他会把这些东西拿出来给她看。告诉她,有一个人叫程雪,用教案种过一片森林;有一个人叫陈墨,用沉默教过一群人;有一个人叫宁嘎狗,用等待等来了一顿饭。那些人和事构成了她们现在坐着的这间屋子,这些窗台上的绿萝和多肉,和每一个安稳的下午。
方凝冰从厨房里探出头来:"冬枣洗好了,来吃。"
霜糖站起来走过去,拿起一颗冬枣咬了一口,甜得让牙齿微微发酸。窗外的阳光已经不再那么烈了,浅浅的金色铺满整个桌面,像是一张被风吹旧的稿纸,等着有人写下新的句子。霜糖坐在餐桌旁,看着方凝冰把冬枣一颗一颗摆进盘子里,霜凝冰站在她腿边仰着头等着。这个画面没有爆零也没有难题,不需要算法也不需要优化,但它比任何通过了的代码都更耐看。
他在心里想,这就是他想要的生活了——窗台上有绿萝,客厅里有阳光,餐桌旁有人等他吃一颗秋天最甜的枣。他已经翻过了那座OI山,而山那边的风景,比他想象中更要平坦和漫长。春天会来的,秋天会走的,风会一直吹。而他们都在路上。
第五十七章:一家人的晚餐
十二月的某天傍晚,方糖和林霜来了杭州。这次没有节日也没有原因,方糖在电话里只说了四个字:"想你们了。"
霜糖去车站接他们的时候,看到方糖提着一袋糖炒栗子,林霜背着一个帆布包,包的侧面插着一把木工刨。方糖看到他就笑了:"瘦了。"霜糖接过她手里的袋子:"胖了。"方糖笑着拍了他一下:"你跟你爸一样,只会说胖了瘦了。"
回去的路上方糖坐在副驾,林霜在后座靠着窗户闭着眼,像是长途坐车对他来说是件需要蓄力的事。霜糖从后视镜里看了一眼父亲,他的白发已经比去年更多了,但手还是那样稳,握在帆布包带上的手指没有一丝晃动。霜糖想起小时候林霜教他写第一行代码的样子——那时候林霜也这样坐着,看着屏幕,等他敲完最后一个括号。
晚上方凝冰做了一桌子菜。方糖去厨房帮忙,霜糖和林霜坐在客厅里看电视。林霜忽然开口:"你那个摇椅,坐久了会不会硌?"霜糖愣了一下,然后说:"不会,很舒服。"林霜点了点头,没再说话。但霜糖看到他嘴角微微动了一下,像是那个回答在他心里正好落到了该落的位置上。
吃饭的时候霜凝冰坐在专属的小椅子上,手里抓着一块馒头啃得满脸都是。方糖看着她笑,霜糖伸手帮她擦脸,擦到一半被她抓住了手指,她捏着他的指尖用力摇了摇,像是觉得很好玩。
"她以后肯定也是个倔脾气。"方糖说。
"像她妈。"霜糖说。
方凝冰在旁边夹了一筷子菜放进自己碗里,没有抬头:"像你也一样倔。"
林霜难得地笑了一声。那声音很短,但霜糖听到了。他抬起头看了父亲一眼,林霜正在低头喝汤,好像那个笑从来没有发生过。但那个笑确实落进了那个夜晚的空气里,像一粒木屑落进木纹的缝隙里,看不见了,但它确实在那里,成为那块木头上微不可查的一部分。
那天晚上方糖和林霜住在客房。霜糖路过他们门口的时候听到里面传来很轻的说话声,听不清在说什么,但能辨认出是方糖在笑——那种很放松的笑,像是只有在林霜面前才会有的声音。霜糖站在门口听了几秒,然后走回了自己房间。
方凝冰正在床头看书,看到他进来抬头看了一眼:"听到什么了?"
"没什么。"霜糖掀开被子躺进去,"就是觉得他们俩挺好的。"
方凝冰放下书关了灯。黑暗中她的声音传来:"你爸今天看霜凝冰看了很久。你知道他在看什么吗?"
"看什么?"
"看她的耳朵。你爸说,霜凝冰的耳朵和程雪长得像。"
霜糖没有说话。他在黑暗中睁着眼睛看着天花板,觉得方糖和林霜之间那些从来不说的东西,原来一直都在那里,像木头里的纹理,不需要被看见,只需要被摸到。过了很久他说:"他们从来没提过这件事。"
方凝冰翻了个身,声音已经有些困了:"有些话不需要提。提了反而碎了。"
霜糖在黑暗中侧过头,看不到她的脸,只能看到她平躺着的轮廓在月光里微微起伏。他觉得方凝冰说得对——有些东西是不能被说破的,只能被保存。像程雪的那封信,像林霜的那把木工刨,像方糖每年冬天那袋糖炒栗子。那些不说话的部分,才是时间里最结实的部分。
第五十八章:霜凝冰的第一个程序
霜凝冰五岁那年的一个下午,方凝冰在厨房做饭,霜糖在书房里改代码。霜凝冰跑到书房门口,踮着脚看着霜糖的屏幕,看了很久。
霜糖回过头:"怎么了?"
"爸爸,你在写什么?"
"在写一个程序。"霜糖把她抱起来放在腿上,"就是告诉电脑该做什么。"
霜凝冰盯着屏幕上跳动的光标:"那你能教我吗?"
霜糖愣了一下,然后笑了:"你想学?"
"想。"
霜糖想了想,打开了一个新的文档,输入了一行最简单的代码:
print("Hello, World!")
他给霜凝冰解释了几个最基本的词,然后握着她的手,在键盘上按下了回车键。
屏幕跳出了那行字。霜凝冰盯着那行字看了很久,然后转过头看着霜糖,眼睛亮晶晶的:"是我做的吗?"
"是你做的。"
霜凝冰使劲点了一下头,然后从霜糖腿上滑下来跑出去了。霜糖以为她是去玩了,但过了一会儿她又跑了回来,手里举着一张纸,上面用蜡笔画了一个歪歪扭扭的"Hello, World!",还在下面画了一只小乌龟。她把纸放在霜糖的键盘旁边,仰着头看着他:"送你的。"
霜糖低头看着那张画,看着歪歪扭扭的字母和那只线条歪斜的小乌龟。他觉得这张纸比任何一篇论文都更值得保存。他把那张画小心地夹进了那本算法书的第347页——那是方凝冰当年夹书签的那一页。
晚上方凝冰看到了那张画,她的目光在纸上停了一会儿,然后说:"她画的乌龟比你画的好看。"
"我什么时候画过乌龟?"
"你以前在沙溪发过一张照片,黑板上画了一只乌龟,歪的。"
霜糖想起来了。那是他刚到沙溪的第一天,在黑板上画了一只小乌龟,画得很丑,孩子们笑了很久。他没想到方凝冰还记得那张照片。
"你什么时候看到的?"
"你发到群里的时候我就看到了。"方凝冰把那张画放到桌上,"保存了。"
霜糖看着她转身走开的背影,觉得那些他以为只是随手发出去的东西,原来都被另一个人接住了,收好了,放在一个她自己的角落里。他忽然明白了一件事——爱不是什么惊天动地的东西,就是有人在你不知道的时候,把你的那些不起眼的东西一点一点地存起来。
第五十九章:陈墨的婚礼
第二年春天,陈墨结婚了。
婚礼很简单,没有大操大办,只是在一个小院子里请了十几个人。霜糖收到请柬的时候愣了一下,请柬上没有写新娘的名字,只写了一行字:"来就行。不要带礼物。"
霜糖和方凝冰去的时候带了一盆绿萝——和新家客厅里那盆一样的,用牛皮纸包着。陈墨看到那盆绿萝的时候沉默了两秒,然后接过去放在了门口的鞋柜上。那个动作让霜糖想起很多年前在NOI赛场上陈墨接过分区牌的样子,一样沉默,一样不动声色。
新娘是个看起来很温柔的人,说话不多,但笑起来的时候眼睛会弯成两道月牙。她站在陈墨旁边,偶尔伸手帮他整理一下衣领,动作很轻,像是不想惊动什么。霜糖看到陈墨侧过头看她的时候,那个眼神里有一种从未见过的东西——不是算法题解出来的确定,而是另一种更柔软的确定,像是他知道某个复杂系统终于稳定地运行了,没有报错,不需要调试。
宁嘎狗和吃饭也来了。宁嘎狗一进门就嚷着说:"陈墨你这请柬写得也太敷衍了,连个名字都没有,我还以为是诈骗短信。"吃饭站在他旁边,没有说话,但把那盆绿萝往桌上推了推,让它在更显眼的位置好晒到阳光。
吃饭这个细小的动作,让霜糖想起他已经很久没有仔细看过吃饭了。这个人依然沉默寡言,但他的沉默里如今多了一些安稳的底色——不再像一块被拉紧的弦,而是更像一座盖好了很久的房子,风还能吹过窗缝,但不会再发出嗡鸣声。霜糖侧过头看方凝冰,她正低头喝茶,像是早就知道了这一切。
席间陈墨站起来敬酒,话依然很少。他只说了三句话:"谢谢你们来。我以后会好好过日子。你们也是。"他坐下来的时候新娘握了握他的手。霜糖看到他们的手指在桌面下微微交握着,那个动作很小,但他看得清清楚楚。
回家的路上方凝冰靠着车窗闭着眼,像是有些累了。霜糖开着车,偶尔侧过头看她一眼。落日的光从车窗斜斜地照进来,把她的侧脸染成暖金色。窗外的田野正在往后退,远处的树影一片一片地滑过去,像在替她们翻着一本很厚的书。
"你说陈墨以后会变吗?"方凝冰忽然开口,没有睁眼。
"变什么?"
"变得话多一点。"
霜糖想了一下:"不会。但他也不需要。他身边那个人懂他。"
方凝冰没有再说话。但霜糖看到她嘴角微微弯了一下,像是那个回答正好落在了她心里的某个位置。
第六十章:霜糖的抉择
那年秋天,霜糖收到了一个邀请。国内一个知名的线上教育平台想做一套面向青少年的算法启蒙课程,想让他来主导内容设计。报酬不错,时间自由,可以远程工作。
霜糖把邀请函拿给方凝冰看,方凝冰正在给霜凝冰扎辫子。她看了一眼邀请函,又看了一眼镜子里的霜糖:"你想去吗?"
"不知道。"霜糖靠在门框上,"内容是我喜欢的,教孩子写代码我一直觉得有意义。但我不想再把自己卷进太多事情里了。程雪阿姨那本教案我还没整理完。还有……"
"还有什么?"
霜糖想了想:"还有你们。"
方凝冰把霜凝冰的辫子扎好,拍了拍她的后背让她出去玩,然后转过身看着霜糖:"你不用为了我们放弃什么。你去做你想做的事,家里的事我来兜底。"
霜糖看着她,觉得她这句话和程雪当年说的"明年还可以再来"有一种相似的底音——不是鼓励他往前冲,是告诉他,不管冲到哪里,回头都有人在。他走过去在她面前蹲下来,仰头看着她:"那你帮我看一下教案?"
方凝冰低头看了他一眼:"行。但你要把霜凝冰的乐高课接送包了。"
"成交。"
那天晚上霜糖回复了那封邀请函,决定接下那个项目。他在邮件里写:"我希望这套课程不只是教孩子写代码,是让他们觉得写代码是一件可以被慢慢学的事,不是只有天才才能做的事。"对方回复得很快:"这正是我们想要的。"
霜糖合上电脑走到客厅,方凝冰正在陪霜凝冰搭积木。霜凝冰把几块红色的积木叠在一起,说:"这是爸爸写的代码。"霜糖在旁边坐下来问她:"那蓝色的呢?"霜凝冰想了想:"蓝色的是妈妈写的,比较好看。"霜糖笑了。方凝冰没有抬头,但她的耳朵红了。
客厅里的灯是暖黄色的,窗外的夜色很深,远处的城市灯火正在一点一点亮起来,像无数扇刚被推开的窗。霜糖坐在她们旁边,看着那些积木在灯光下投射出细长的影子,觉得这就是他想要的生活——不用很大,不用很耀眼,只需要有人和他一起搭同一座积木塔。
第六十一章:最后一封信
程雪离开三年之后,霜糖收到了一封来自沙溪的信。信封是牛皮纸的,没有贴邮票,是托人带出来的。他拆开的时候手指有些抖,但他知道那不会是程雪写的了。
信纸是那种泛黄的横格纸,字迹端正而稚嫩。霜糖看了第一行就知道是谁写的——是那个扎着羊角辫的小女孩,她已经长大了不少,字迹比上次又稳了一些。信的内容不长:
"霜糖叔叔,我今年上初中了。学校里也有电脑课,但我还是记得程老师教我们的那些。我学会了用循环画星星,画了一颗送给程老师,但不知道她能不能看到。你上次跟我说,如果找不到路就回到原点。我现在遇到不会做的题也会这样——回到第一步重新想。程老师以前也是这样教的。谢谢你。我会好好学下去的。"
霜糖把信纸放在桌上,去阳台站了一会儿。外面的天正在暗下来,远处的楼顶有一盏灯亮了起来,像是有人在很远的地方打开了一扇窗。他不知道那个女孩长什么样子了,不知道她以后会不会真的走上编程这条路。但他知道程雪种下的那些东西还在长,每一片新叶子都在替她呼吸。
后来霜糖把那封信放进了那个文件夹里,和程雪的教案放在一起。文件夹已经变厚了,他翻开的时候看到第一页是程雪手写的目录,字迹工整,像她写的每一行代码。霜糖看了很久,然后合上了文件夹。他知道那不是结束,只是另一段回声的开始。
方凝冰从厨房里探出头问他:"怎么了?"
霜糖走过去站在她旁边:"没什么。就是觉得程雪阿姨还在。"
方凝冰没有问为什么。她只是把手里剥好的半个橙子递给他,然后把剩下的半个放进自己嘴里。橙子的香气在客厅里散开,和窗外刚刚暗下来的暮色混在一起。霜糖咬了一口橙子,酸甜的汁水在舌尖炸开——他还记得程雪也喜欢这样吃橙子,剥得干干净净,一瓣一瓣地放在盘子里。霜糖站在厨房门口,看着方凝冰把剩下的一半橙子放进冰箱,水龙头的水声和远处街上偶尔传来的车声混在一起,在这个秋天的傍晚里,程雪似乎就在某个不远不近的地方,终于可以安安静静地吃下一瓣完整的橙子。
第六十二章:未完的循环
霜凝冰八岁那年,已经能自己写一些简单的Python程序了。
霜糖没有刻意教她,只是每次在书房里写代码的时候,霜凝冰会搬个小凳子坐在他旁边,看着屏幕上的字符一行一行地跳出来。有时候她会问"这是什么",霜糖就停下来给她讲——讲变量是什么、循环是什么、函数是什么。她听得很认真,有时候还会在草稿纸上画一些奇奇怪怪的图,说是她自己的"算法"。
方凝冰有时候会站在书房门口看他们。她看到霜糖握着霜凝冰的手在键盘上敲下一行行代码,看到霜凝冰的眼睛在屏幕光里发亮,她会在门口站很久,然后安静地走开。有一天晚上霜糖在收拾房间的时候,发现方凝冰的一本旧笔记本里夹着一张草稿纸——是霜凝冰画的那些"算法",被方凝冰小心地压平了,按时间顺序排好。霜糖看着那些歪歪扭扭的线条和箭头,觉得这就是她们三个人各自保存时间的方式。他写代码,方凝冰收集画纸,霜凝冰认真听课。程雪如果看到这些,应该会觉得很满意——不是因为他们做了什么了不起的事,而是因为那些简单的线条里,藏着一种安安静静地延续下去的力量。
窗外又开始飘雪了,细碎的,像是有人在很远的地方撒了一把糖霜。方凝冰从背后走过来站在霜糖身边,她的手搭在他的手臂上,目光落在窗外那些细细的雪粒上。远处的城市轮廓在雪中变得模糊而柔软,像是有人用橡皮轻轻擦掉了一些过于锋利的边缘,留下一片更温柔的天空。
"你说,"方凝冰的声音很轻,"霜凝冰以后会走哪条路?"
霜糖看着窗外:"不知道。但不管她走哪条路,都会有人在旁边看着。"
方凝冰没有回答,但她的手收拢了一些,像是替那个还没长成的未来先握住了什么。窗外的雪一直在下,慢慢地在窗台上积起一层薄薄的白。霜糖站在那里,觉得自己已经在一条很长的路上走了很久了,而此刻他只需要停在一扇亮着灯的窗边,看雪慢慢地落。
春风渡我过OI山。风还在吹,山还在那里,只是不再需要翻越了。他已经在山的那一边,找到了自己的一片平地,一座小房子,一扇朝南的窗户。窗台上的多肉还在长,绿萝垂下新的藤蔓,茶几上放着一本翻了一半的算法书,书页间夹着一张蜡笔画的小乌龟。
霜凝冰在客厅里喊:"爸爸!妈妈!来看我画的星星!"
霜糖和方凝冰转身往客厅走去。那个夜晚很安静,只有雪落的声音,和霜凝冰兴奋的脚步声。窗台上的绿萝在灯光里投下淡淡的影子,像是一棵正在慢慢长大的树。而那些来来往往的人、那些被风吹散的种子、那些还没说完的话,都还在某一个看不见的地方,继续生长着,继续响着。
霜凝冰十岁那年,第一次参加CSP-J。
她报的是入门组,按理说以她的水平已经不需要考这个了。但方凝冰说"去试试手感和心态",霜糖在旁边点头附和,两个人在这个问题上难得达成了一致。霜凝冰自己倒是无所谓,她只是觉得能去考场看一看也挺好,毕竟以前都是听爸妈讲考场里的故事。
考前那个晚上霜糖坐在霜凝冰的床边,和平时一样问她:"紧张吗?"
霜凝冰摇了摇头:"不紧张。"
"那你知道明天最重要的是什么吗?"
"回到原点。"霜凝冰翻了个身,把被子裹紧了一些,"你说了八百遍了。"
霜糖笑了一下,站起来关了灯。走到门口的时候他停了一下,没有回头:"还有一个,明天不管考成什么样,出来的时候都会有人在门口等你。"
霜凝冰在黑暗中说了一声"知道",声音已经有些困了。霜糖轻轻带上门,走回客厅。方凝冰正坐在沙发上翻一本旧书,抬头看了他一眼:"睡了?"
"睡了。"
"你明天去送她?"
"嗯,你也去。"
方凝冰低头翻了一页书:"那谁做饭?"
霜糖在她旁边坐下来:"考完了一起出去吃。她考完肯定饿,带她去吃那家面馆。"
方凝冰把书合上放在膝头,想了一下:"那家面馆的汤有点咸。"
"她喜欢吃咸的。"
"随你。"
第二天早上霜糖和方凝冰一起送霜凝冰去了考场。考场在一所中学里,门口已经挤满了人,孩子们背着包往里走,家长们在门外张望。霜凝冰穿着校服,书包上挂着一只小小的乌龟挂件——那是林霜去年给她做的,木头刻的,涂了一层清漆,用一根红绳系在书包拉链上。
"进去吧。"方凝冰蹲下来帮她整了整衣领,"带笔了吗?"
"带了。"
"水呢?"
"带了。"
"准考证?"
"妈,你昨天检查了三遍了。"霜凝冰无奈地看着她。
方凝冰没有反驳,站起来退后一步,伸手碰了碰她书包上那只小乌龟:"行,去吧。"
霜凝冰转身走进校门。她走得不快也不慢,背挺得很直,和旁边那些紧张地跑着进去的孩子形成了鲜明的对比。霜糖看着她的背影消失在拐角,忽然有一种很奇特的感觉——很多年前方糖也是这样看着他的背影消失在安检口后面,那时候他还没有意识到,被目送的人永远不知道站在原地的人在看什么。
方凝冰站在他旁边,手插在口袋里,目光还落在那扇校门上。霜糖没有去握她的手,他知道她正在用自己的方式站着。他们并排站在考场外面,像两棵挨得不近不远的树,各自站着,又各自知道对方也站着。
三个小时的考试时间,霜糖和方凝冰在附近找了一家咖啡馆坐了两个小时。方凝冰在看手机,霜糖在看窗外的梧桐叶。十月的叶子已经开始变黄了,风一吹就簌簌地落下来几片,在人行道上打着旋。他想起很多年前自己坐在考场里的样子,那时候他什么也没想,只是盯着屏幕上的题目,一行一行地读,一行一行地写。现在他的女儿坐在同样的考场里,面对同样的屏幕,做着同样的事。而他站在考场外面,等着那道门再次打开。
考试结束前半小时他们回到了校门口。已经有不少家长在等了,有的人手里拎着水杯,有的人举着手机准备拍照,还有几个人在互相询问"你孩子报的是J组还是S组"。霜糖站在人群后面,没有往前挤。方凝冰站在他旁边,目光落在校门口那扇铁门上。
门开了。孩子们涌出来,有的兴高采烈,有的垂头丧气,有的还在和旁边的同学争辩某道题的解法。霜糖在人群中找霜凝冰的身影,看到她正慢慢走出来,不紧不慢,书包上的小乌龟在晃荡。
她看到他们了,快步走过来。走到面前的时候霜糖问她:"怎么样?"
霜凝冰想了想:"第三题卡了一下。后来换了一种做法,不知道对不对。"
"卡了多久?"
"大概……四十分钟。"
"那后来怎么想到换做法的?"
霜凝冰抬头看着他:"回到原点。我回到第一行重新读了一遍题,发现我一开始理解错了那个条件。"
霜糖和方凝冰对视了一眼。方凝冰嘴角微微动了一下,那是她极少露出的笑意。霜糖没有说什么,只是伸手拍了拍霜凝冰的肩膀:"走吧,去吃面。"
那家面馆的汤确实有点咸,但霜凝冰吃得很快,连汤都喝完了。她一边吃一边比划着和霜糖讲那道题的细节,语速很快,说到兴奋处筷子在空中挥来挥去。方凝冰坐在对面安静地听着,偶尔夹一筷子小菜放进自己碗里。那碗面吃完之后霜凝冰放下筷子靠在椅背上,像一只终于吃饱了的猫。窗外的阳光照进来落在她脸上,在她的额角投下一小片暖融融的光斑。
成绩出来那天霜凝冰刚放学回家,霜糖把手机递给她:"自己看。"她接过去翻了一下,抬起头,表情很平静:"第三题果然错了。只拿了40分。总分280。"
霜糖没有问她"是不是很难过",他只是点了点头:"那下次就知道了。那道题你后来想明白了吗?"
霜凝冰把手机还给他:"想明白了。回到原点之后我发现那个条件其实是相反的,但我已经写完了。下次我会先花五分钟确认题意再动手。"
方凝冰在旁边收拾餐桌,没有说话。但霜糖看到她擦桌子的动作停了一下,像是那句话在她心里落到了一个正好合适的位置。那些他们当年用无数个WA换来的经验,正在被下一辈的人接过去,用她自己的方式重新实验、重新确认、重新成为她自己的东西。
霜凝冰并不知道那天晚上霜糖在书房里坐了很久。他翻出了自己多年前的笔记本,找到了他第一次参加CSP的成绩——那一年他排名第35,总分和霜凝冰差不多,但他那时候连"回到原点"都还没学会。他坐在那里看着泛黄的笔记,觉得这条路原来是这样的:你走完了,把脚印留下,然后后来的人会踩着那些脚印走过来,再踏出一些新的、更远的步子。
第二天霜凝冰坐在书桌前,拿着一张新草稿纸,把那道第三题从头到尾重新推了一遍。她没有问霜糖,也没有去翻答案,只是自己一步步地推,推完了又从头看了一遍。霜糖经过她门口的时候看到她在纸上画满了箭头和数字,和当年他自己在奶龙训练营的草稿纸上一模一样。那些线条像是某种生长的痕迹,记录着同一个问题从困惑到清晰的过程。
方凝冰从厨房探出头看了一眼,然后对霜糖说:"别打扰她。"霜糖轻轻带上了书房的门。
那天晚上霜凝冰拿着那张草稿纸给霜糖看,纸上写着几种不同的解法,每一种下面都注明了各自的优势和适用场景。霜糖看着那些工整的字迹和标注,说:"这道题你已经不需要再做了。"霜凝冰摇了摇头:"不是做完就完了,是把每一种可能的走法都走过一遍,才知道哪条路是对的。"
霜糖看着她拿着草稿纸走回房间的背影,忽然想起程雪说过的一句话——"最好的教育不是教别人怎么解题,是让他们学会在没有答案的时候还能继续想。"现在她的女儿正在那个"继续想"的过程里,一步一步地走着。那才是程雪真正留下的东西——不是算法本身,而是那种愿意在卡住的时候继续坐着的耐性。它被种进了一个人的心里,又在另一个人的笔端慢慢长出来,用墨水和草稿纸延续着它的形状。
CSP的成绩并不是完美的,但那道题却在霜凝冰的草稿纸上被解了三遍。霜糖把那份草稿纸收进了自己的文件夹里,和程雪的信放在一起。他知道这些纸张会在时间中慢慢变黄,但它们上面的那些线条会把一些东西留下来,让后来的人能顺着它们走回那个原点,再重新出发。
霜凝冰十二岁那年,第一次参加NOIP提高组的比赛。
赛前一个月,方凝冰给她制定了一份训练计划。那张计划表贴在霜凝冰书桌正对面的墙上,每天的任务列得清清楚楚——周一数据结构,周二图论,周三动态规划,周四数论,周五综合模拟,周末复盘。霜糖路过的时候看了一眼,觉得那张表和当年陈墨贴在奶龙集训营墙上的几乎一模一样,只是字迹换成了方凝冰的,每一行都写得很克制,删去了所有不必要的修饰,只保留了时间和任务本身。
霜凝冰一开始执行得很顺利。她的基础不错,前两周的题目大部分都能独立完成,偶尔卡住也能在半小时内找到思路。霜糖有时候会在晚上悄悄进她房间看她,看到她趴在书桌上写着密密麻麻的推演过程,草稿纸一张接一张地堆在桌角。那些纸上的笔画密集而认真,没有多余的涂抹,像是她已经在脑子里把整条路径完整地推过一遍,才肯落笔。
第三周开始出现瓶颈。
那是一道树形DP的题目,霜凝冰推了整整一个晚上。她换了三种状态定义,改了四次转移方程,每次都觉得是对的,每次跑样例都差一点。她坐在书桌前盯着屏幕,草稿纸上的箭头越画越密,像一张被反复修改的地图,所有的路都画了又擦、擦了又画,却始终没有一条能真正通向终点。
霜糖站在门口看了一会儿,没有进去。他转身走回客厅,方凝冰正在看手机,抬眼看了他一下:"卡住了?"
"树形DP。"霜糖坐下来,"推了一个晚上了。"
方凝冰放下手机,没有说"我去看看",也没有说"让她自己待着"。她只是安静地坐了一会儿,然后站起来去厨房热了一杯牛奶,端到霜凝冰房间门口,轻轻敲了两下门,把杯子放在门边的矮柜上,然后走回了客厅。
霜糖看着她做完这一切,没有说话。方凝冰重新坐下来拿起手机,像是那杯牛奶是她唯一能做的事——不能替她解题,不能替她焦虑,只能让一杯温热的牛奶在深夜的书房门口等她自己走出来喝掉。
那杯牛奶在矮柜上放了一个多小时。霜糖去倒水的时候看到它还在那里,温度已经从杯壁上散去,只剩下一圈浅浅的雾痕。他正要伸手端走,门开了。霜凝冰走出来,眼睛有些红,看到那杯牛奶愣了一下,然后端起来喝了一口。牛奶已经凉了,但她还是喝完了,然后把空杯子拿到厨房洗了,放回沥水架上。
霜糖站在走廊里看着她做完这一切。她没有说话,霜糖也没有问。第二天早上霜糖起床的时候,看到霜凝冰已经坐在书桌前了,屏幕亮着,草稿纸上多了一行新的状态定义——和昨晚的都不一样,更简洁,像是把那些复杂的东西一层层剥开之后剩下的核心。霜糖看了一眼那个状态定义,知道她已经找到路了。
那天中午吃饭的时候霜凝冰主动说起了那道题。她说她昨晚最后把所有的状态图都擦掉了,然后从最简单的子问题重新开始推,推了三遍才找到那个最干净的定义。她说话的时候语气很平常,像是在描述一道已经解完的题,但霜糖注意到她握筷子的手比以前更稳了一些。推演过程中反复迷路、又反复折返原点的那几个小时,已经在她握笔的力道里留下了一道不起眼的痕迹。
NOIP考场的门打开的时候,霜凝冰是第一批走出来的考生之一。霜糖看到她的表情有些微妙——不是高兴也不是沮丧,而是一种他在方凝冰脸上见过很多次的表情:事情做完了,结果还不确定,但情绪还悬在半空中没有落地。
"怎么样?"霜糖走过去。
霜凝冰把书包换了个肩膀,小乌龟挂件晃了一下:"前三题都做出来了。第四题想了一半,时间不够,只写了暴力。"
"感觉能拿多少?"
"不知道。"她往前走了几步又停下来,"但第四题那个思路,我回家想把它写完。"
方凝冰站在几步之外,听到这话她的目光在霜凝冰脸上停了一下,然后移开了。但霜糖看到她伸手把霜凝冰书包上歪掉的小乌龟拨正了,指尖在那道木纹上多停了一瞬。那个动作很轻,像是替霜凝冰落笔前最后一次校准基线。
成绩出来那天霜凝冰在学校上课。霜糖收到查分链接之后在电脑前坐了一会儿,然后点开了页面。总分320,全省排名第47。这个分数在提高组里不算顶尖,但对于第一次参赛的初二学生来说已经是很好的成绩了。霜糖把截图发给了方凝冰,方凝冰回了一个"嗯"字。霜糖知道那个"嗯"是满意的意思,在她的话汇里,多的都是多余的。
晚上霜凝冰放学回家,霜糖把成绩单放在桌上等她自己看。她扫了一眼,放下书包去洗手,洗完手回来又看了一眼,然后说:"第四题果然只拿了20分。"
"你那个思路写完没有?"霜糖问。
"写完了。"霜凝冰坐下来,"后来回家花了一个半小时把它补完了。是正解,但是时间不够。"
霜糖看着她低头去倒水的背影,觉得她正在用一种比他们当年更成熟的方式理解比赛这件事——不是每一场都要赢,但每一场都要带回去一点什么。那道没有在考场上写完的第四题,在两天后的书房里补完了全部代码,依然是她这段时间里真正做出来的成绩。霜糖想起自己第一次NOIP考完之后那种空荡荡的感觉——好几天都不知道该拿那道卡住的题怎么办,总觉得它还在那里堵着,但自己已经不在那个位置上了。霜凝冰没有让那道题留在原地,她把那个还没写完的解法带回了家。
那年冬天霜凝冰开始翻霜糖的旧笔记本。那些泛黄的纸页记录着霜糖高中时期写过的所有错题和复盘,字迹潦草,有些地方的推导甚至跳了好几步。霜凝冰翻到某一页的时候停了下来,那上面有一道题,和她今年NOIP第四题几乎一模一样。霜糖在旁边看到了她的表情变化,但她什么也没说,只是拍了一张照,把那一页仔细折好收了起来。
后来霜糖问她在看什么。她说:"看到你也在那道题上卡过。"
霜糖没有否认。霜凝冰把笔记本合上放回书架上,说了一句让霜糖记了很久的话:"那就不是只有我一个人觉得它难了。"
霜凝冰十四岁那年,第一次参加省选。
省选前的那个冬天,她几乎把所有课余时间都泡在了机房里。霜糖和方凝冰没有给她任何压力,但也没有拦着她——他们都知道,到了这个阶段,外人的劝和拦都没有用,她自己想走多远,就会自己迈出多少步。那些在深夜里亮着的屏幕、那些堆在桌角的草稿纸、那些反复擦改的铅笔痕迹,都是她自己在和那道看不见的边界打交道。
霜糖有时候会在深夜走到她房间门口,透过门缝看到屏幕的光照在她的侧脸上。她的表情专注而平静,和多年前方凝冰坐在图书馆角落里的表情如出一辙。霜糖没有打扰她,只是站一会儿就走开。他知道现在能做的事已经不多了,就像当年的陈墨站在监控室里看着刘尘卡在题目上,知道有些路只能她自己走。
省选的考场设在省城一所重点中学里。霜糖和方凝冰提前一天开车送她过去,在考点附近订了一家小旅馆。那天晚上霜凝冰没有像往常一样刷题,而是坐在旅馆的床上看了一会儿窗外的夜景。冬天的城市灯光稀疏,远处的楼顶有几盏红色的信号灯在黑暗中一闪一闪。
"紧张吗?"霜糖坐在旁边的椅子上问她。
"还行。"霜凝冰拉上窗帘转过身,"就是觉得明天之后,不管结果怎么样,都会有一个答案。"
方凝冰靠在床头看手机,听到这话抬了一下眼:"答案只是一个状态。后面的路怎么走,跟那个状态关系不大。"
霜凝冰看了她一眼,没有反驳,但霜糖注意到她嘴角微微动了一下,像是那句话在她心里落到了一个熟悉的位置——她听过很多次类似的话,但这一次她好像开始真的在听。
第二天早上霜凝冰走进考场的时候,霜糖和方凝冰站在校门口看着她进去。那所中学的大门是铁灰色的,门框上挂着一块褪了色的校名牌。霜糖看到霜凝冰走到门口的时候回头看了一眼,冲他们挥了一下手,然后转身走进去了。那个动作很小,但霜糖在心里把它存了下来——他知道总有一天她会不再回头,但至少这一次她还回了头。
省选的题目比NOIP难了一个量级。第一天三道题,霜凝冰只完整做出来一道半。第二题她卡了快两个小时,最后只拿了一个部分分。第三题干脆只写了暴力。走出考场的时候她的脸色不太好看,那种紧抿着的嘴唇让霜糖想起了方凝冰在World Final上遇到难题时的表情——不是崩溃,是把所有的情绪都往内压,压成一条细线,只留下必要的注意力在外面。
"今天怎么样?"霜糖问。
"第二题想太久了。"霜凝冰把书包带子攥在手里,"第三题应该能多拿一点,但我没时间了。"
"那明天呢?"
霜凝冰沉默了几步路的距离:"明天从头开始推。不管前面卡成什么样,先拿能拿的分。"
霜糖没有再说别的。他们走回旅馆的路上经过一家卖烤红薯的小摊,热气从铁桶里冒出来,在冬天的空气中结成白色的雾。方凝冰停下来买了一个,掰成两半,把大的那半递给霜凝冰。霜凝冰接过来咬了一口,烫得直吸气,但她的肩膀在那一口热气里松动了一些。
第二天的题目风格和第一天截然不同。第一天是偏思维型的,第二天全是数据结构。这恰好是霜凝冰最擅长的领域。她坐在考场里盯着屏幕上的第一题,读了一遍题,嘴角微微动了一下——那是一道线段树维护区间信息的题,和霜糖旧笔记本上那道被她折了角的题几乎同源。她的手指落在键盘上,没有犹豫。
第二题是一道平衡树变种,霜凝冰推了二十分钟之后开始写代码。她的速度不快不慢,但每一步都很稳,像是在用尺子量过之后才落笔。霜糖后来在监控室的回放里看到她那段时间的表情——屏幕上只有代码和她自己,键盘声在耳机里清晰地响着,她的手指像是被一根看不见的线牵引着,每一个跳转都准确抵达了它该去的地方。
第三题是一道综合题,涉及可持久化数据结构加上一些网络流的变形。霜凝冰读了三遍题,在草稿纸上画了整整一张图。最后四十分钟的时候她开始敲代码,键盘声持续到考试结束前的最后一秒。
走出考场的时候天色已经开始暗了。冬天白昼短,五点多就已经像是夜晚。霜凝冰走出来的时候脚步比昨天轻快一些,但她没有笑,只是走到霜糖面前把书包递给他,说了一句:"都写完了。"
霜糖接过书包:"都写完了的意思是?"
"每道题都写了。对不对不知道,但都写了。"
方凝冰在旁边没有接话。她伸手把霜凝冰外套领口翻折的一角理平,然后收回了手。她们三个人站在那所中学门口的路灯下,影子被拉得很长,拖在灰白色的地面上。霜糖看着那两个影子,一道高一些一道矮一些,靠得很近,他心里那根一直绷着的弦在那一刻松了下来——不是因为结果,而是因为他看到了那种自己写完之后的安静。那种安静不是等待裁判,是把剩下的所有判断都交出去了。
成绩出来那天,霜凝冰正在学校上课。霜糖收到查分短信的时候手指停了一下。他打开页面,看到总分490,全省排名第16。省队名额16个,她是最后一个。霜糖盯着那个排名看了很久,然后给方凝冰发了一条消息:"第16名。"
方凝冰秒回:"进省队了?"
"进了。"
方凝冰回了一个句号。霜糖知道那个句号是她表达"好"的方式——不是冷淡,是把多余的话都省去了,只留下一个确认。
晚上霜凝冰回家之后,霜糖把成绩单放在她桌上。她低头看了三遍,然后把手机放下,去厨房倒了一杯水喝了一口。再回到桌边又看了一眼,这一次她抬起头说:"那我暑假要去集训了是吧?"
霜糖看着她,她正在把书包里的书一本一本拿出来,动作有条不紊,像是平时放学的节奏——和昨天放学、前天放学、这学期每一天放学,用的是同一套动作。那道努力了很久才跨过去的门槛,在她站上之后看起来只是一道普通的门框。她不再需要特地回头确认它是否还在那里,因为那些反复跌倒又重新站起来的时刻,已经成了她的一部分。霜糖想,也许所谓成长就是这样——不是终于爬上了某个高度,而是爬上去之后,发现已经不太记得当初自己为什么觉得它那么高了。
省队集训在杭州的一所大学里。报到那天霜糖开车送她过去,在宿舍楼下停好车,帮她拎着行李箱上了四楼。宿舍不大,四人间,已经有人到了。一个戴着圆框眼镜的女生正靠在床头看书,看到霜凝冰进来,放下书笑了:"你是霜凝冰?我知道你,省选最后一名。"
霜凝冰把行李箱放在床尾,转过身看她:"你是那第17名?"
女生愣了一下,然后笑得更开了:"对,我就是那个被你挤下去的第17名。我叫周然。"
霜糖站在门口看着她们交换名字,她们的对话像是两段已经走完的路在交汇处打了个照面,谁都没有把对方的排名当作真正的输赢,只是各自带着路上的痕迹在一个新的站点碰上了。霜糖想起了很多年前自己推开303宿舍门的那个下午,那时候他也是这样站在门口看着屋里已经坐着的两个人,不知道自己会在那间房间里待多久。
他退出去,在走廊里站了一会儿,给方凝冰发了一条消息:"送到了。室友很友善。"
方凝冰回:"你回来路上买条鱼。"
霜糖看着那行字,把手机收起来,走下了楼。秋天的风灌进走廊尽头的窗户,带着一点桂花的气味。他不知道霜凝冰会在那间宿舍里度过怎样的时光,但他知道那些日子会和当年他自己的集训一样漫长而充实,会有些夜晚让她想放弃,也会有些早晨让她重新坐到电脑前。而他会像方糖当年一样,站在一个不那么近的距离,等她每一次回头的时候都能看到有人还在那里。
集训第一个月的模拟赛,霜凝冰的排名稳定在倒数。省队一共20个人,她每次不是第18就是第19,偶尔掉到第20。周然的排名比她高一些,总是第十名左右,每次模拟赛结束都会过来看一眼她的屏幕,然后说一句"下次一起复盘"。霜凝冰每次都说"好",但大部分时候她只是把错题记下来,然后一个人对着屏幕继续推。
有一天晚上机房只剩她们两个人。霜凝冰正在复盘中一道图论题,她已经在同一个地方卡了快一个小时。周然从隔壁工位探过头来看了看她的屏幕,然后递过来一张草稿纸。纸上画着一个图,标注着三种颜色的路径标记,每条路径末端都画了一个箭头指向同一个节点。
"你要不要试试换个方向?"周然指了一下她的屏幕,"从终点往回推。"
霜凝冰盯着那张纸看了十几秒,然后拿起笔在纸上重新画了一遍。她画得很慢,每一步都停下来确认一次,像是在用笔尖重新走一遍那条路。等到整条路径画完,她抬起头看了一眼周然,脸上的表情微微松动——那是一种找到了断掉的线头的表情,线条本身还没来得及接上,但至少知道该往哪个方向牵了。
"谢了。"她说。
周然收起草稿纸:"明天你教我那道LCT。"
"成交。"
那段时间霜凝冰发现自己在和周然的交流中不知不觉地调整了说话的方式。她发现周然和她以前遇到的队友都不太一样——对方不追求每句话都正确,也不怕说出不完整的思路,那些半截的推导和还没成型的猜测,在周然嘴里是可以直接摆到桌面上来的。霜凝冰一开始不太习惯这种"允许不完整"的对话节奏,但慢慢地她也开始把一些还没推完的东西说出来,有时候是说到一半卡住了,周然接过去继续推,有时候是周然说到一半卡住了,霜凝冰顺着那个断点往下试。她们就这样慢慢地把那些断裂的线条一根一根接了起来,像是两个人各拿半张拼图,凑到一起的时候才发现它们原本是一整块。
集训第三个月,霜凝冰第一次挤进了前十。她拿到排名的时候没有太激动,只是看着屏幕上的名次确认了一会儿,然后站起来去接了杯水喝。但喝水的时候她的手微微有些抖,杯底在桌面上磕出了一小声脆响。她没有掩饰那只手,只是端着杯子走回座位,继续翻开下一道题。
那个第十名在第二周又掉了下去,回到了第十三。但她没有再掉回倒数。霜糖每个周末接她回家的时候,都会发现她比上周瘦了一些,话也少了一些。有一次在车上她忽然开口说了一句话,像是在一个很长的沉默之后终于开口说了一件想了很久的事:"爸,我好像慢慢明白了你说的那个'回到原点'是什么意思。"
霜糖从后视镜里看了她一眼:"什么意思?"
"不是真的回到第一步重来。是发现自己在原地打转的时候,停下来,把转过的圈画一遍,然后找一个之前没注意到的出口。"她顿了顿,像是在把那个想法再确认一遍,"不是真的回到原点,是从原地往前再走一小步。"
霜糖没有回答。但他把这句话记在了心里,像在备忘录里存下某个关键路径的最后一行注释。
集训快结束的时候,省队组织了一场和江苏队的交流赛。霜凝冰在那场比赛中遇到了一个对手,对方的代码风格让她觉得很眼熟——简洁、克制、每一行都像是被修剪过。她比赛完特意看了一眼对方的ID:ICe_Sugar。她盯着那四个字母看了很久,然后发了一条消息给霜糖:"爸,江苏队有个叫ICe_Sugar的,你认识吗?"
霜糖那边隔了几分钟才回:"那是方凝冰以前用过的ID。"
霜凝冰盯着屏幕,觉得有一种说不清的感觉从心底升起来——像是那些她一直以为只属于自己的代码痕迹,原来在很久很久以前就已经有人用同样的方式写过,用的名字里还带着她妈妈名字里的那个"冰"。她不知道妈妈是什么时候用的这个ID,也不知道她当时坐在哪间机房里,面对着哪一道题。但隔着那么多年,她们的手指尖落在同一组按键上,把同一个思路敲进了屏幕里。那些被时间隔开的打字声,在某个她没有意识到的地方悄悄重叠在了一起。
她给方凝冰发了一条消息:"妈,我今天看到你以前的ID了。"
方凝冰回得很快:"嗯。那个ID后来换掉了。"
"为什么?"
"因为太冷了。后来想用一个暖和一点的。"
霜凝冰看着那行字,慢慢把手机收起来,走回了机房。晚上回到宿舍,她坐在床上想了一会儿,然后打开电脑,把自己洛谷上的ID改掉了。原来的ID是一串随机数字,她一直没想好要改成什么。那天晚上她敲了四个字母进去:SugarIce。
不是霜糖,不是方凝冰,是她们两个放在一起——一个暖和,一个冷,合起来刚好是那道题解完之后手心微微发汗的温度。
集训结束那天,霜糖去接她。霜凝冰拖着行李箱从宿舍楼里走出来的时候,霜糖看到她和周然并肩走在一起,两个人在楼门口站了一会儿,不知道在说什么。然后周然拍了拍她的肩膀,转身往另一个方向走了。霜凝冰在门口站了几秒,然后朝霜糖走过来,行李箱的轮子在水泥地上咕噜咕噜地响。
"走了。"她说。
"走了。"霜糖接过她的行李箱。
回去的路上霜凝冰靠着车窗,看着窗外掠过的风景。秋天已经深了,路两边的树叶开始往下落,有几片贴在车窗玻璃上又被风卷走。她侧过头看了一眼霜糖,用一种很平常的语气说了一句:"爸,我明年还想来。"
霜糖没有转头,但他把车速放慢了一点:"那就来。"
"那如果明年还是进不了国家队呢?"
"那就后年再来。"
霜凝冰转过头继续看窗外。窗外的田野在飞速后退,远处有一排电线杆像是正在往另一片天空的方向移动。她在玻璃上的倒影里笑了一下——很小,但确实存在。那种不再追问"如果不行怎么办"的安然,是她在机房里坐了无数个傍晚之后慢慢积累起来的东西——不是不在意结果,是学会了在结果到来之前,先把自己的路一步一步走完。霜糖从后视镜里瞥见了那个笑意,没有说任何话,只是让车速刚好够把剩下的那段路拉长一点点,让那个笑在玻璃上多待一会儿。
第六十三章:长夜
省队集训结束之后的日子过得比霜凝冰预想的要快。她回到学校,把落下的功课补上,每天放学后还是会在机房待两个小时再回家。周然偶尔会在线上找她一起做题,有时候是洛谷上的题,有时候是两个人各自找的模拟赛。她们隔着屏幕各自写各自的,偶尔在聊天框里发一句"第三题那个条件你看懂了吗"或者"我T了,你帮我看看",像两盏隔着半个城市的灯,偶尔闪一下。
霜糖和方凝冰的日常没什么变化,但家里的节奏因为霜凝冰的存在而有了一种新的韵律——冰箱上的便利贴换成了霜凝冰的课程表,餐桌上的话题从算法题延伸到学校里的琐事,方凝冰开始在下班路上绕一段路去买霜凝冰爱吃的蛋挞。那些细小的调整没有谁特意提过,只是在不知不觉间织成了新的底色。
那年冬天,霜凝冰第一次参加了省队模拟赛的冬季集训。集训地点在杭州郊区的一个训练基地里,为期十天,全封闭。霜糖送她过去的时候,她把行李箱放进后备箱,然后拉开副驾的门坐进去。一路上她没怎么说话,但手里一直在转一支笔——那支笔是周然送的,笔杆上印着一行小字:"不会就画图。"霜糖看了看那支笔,没有说话。
到了基地门口,霜凝冰拖着行李箱往里走。走出几步她回过头,朝霜糖挥了一下手。霜糖也挥了一下。他看着她的背影消失在基地的大门后面,那道铁灰色的门在冬天的阳光下反射出一层淡金色的薄光。他在门口站了一会儿才转身回车,手插在口袋里,指腹碰到了一片折好的纸条——是方凝冰早上出门前塞进他口袋里的,上面只有两个字:"别等。"
他把纸条重新折好放进口袋,启动了车。但他在第一个红绿灯路口停下来的时候,还是把车靠边停了五分钟。那五分钟里他没有做什么,只是坐在车里看着前方那条通往基地的路。这条路他以后还会走很多次,每一次都会比前一次更短一些。
霜凝冰在基地的第一天就遇到了一个意想不到的人——一个和她年纪相仿的男生,坐在机房的最后一排,电脑屏幕上什么都没有,只是安安静静地坐着,像是在等什么又像是什么都没在等。他的桌上没有草稿纸,没有笔,只有一台孤零零的笔记本。
集训第一天是教练讲图论,讲了三个小时。霜凝冰听得认真,中途偶尔低头记两行笔记。但她也注意到后排那个男生从头到尾没有动过笔,也没有看屏幕,只是安安静静地坐着,像一棵长在机房里不声不响的树。讲完之后是自由练习时间,霜凝冰打开一道模拟题开始推。推了一半她停下来去接水,回来的时候发现那个男生的电脑屏幕上多了一整段代码——他正在写一道和她刚才在练的题目类似的题,而且已经快写完了。
霜凝冰站在他身后看了几行,不由自主地开口了:"你这边的常数额外减了一步。"
男生的手指停住了。他侧过头看了她一眼,眼神里没什么表情,但也没有排斥。霜凝冰继续说:"那个取模的位置可以提前放到循环外面,能省不少时间。"
男生沉默了两秒,然后删掉了三行代码,把取模的位置往前挪了挪。再跑的时候时间缩短了将近三分之一。他抬头看了她一眼,没有说话,但那个短暂的目光里有一种"我知道了"的意思。
后来霜凝冰知道了他叫陆远,来自浙江另一座城市,今年是第一次入选省队大名单。他的成绩一直不错,但每次省选都在十几名左右徘徊,不高不低,像一个始终没有找到合适节奏的长跑者。那一周的训练里霜凝冰发现陆远的思路很干净,但他的实现方式有一个明显的短板——他总是习惯把一个想法完整地推完再开始写代码,推演的过程没问题,但等他下笔的时候往往只剩下半个多小时了。
有一次模拟赛,陆远在第三题上卡了很久。霜凝冰在旁边写完了自己的第二题,抬起头的时候看到陆远盯着屏幕,眉头微皱,手指悬在键盘上还没有落下。他面前的草稿纸上画满了图,密密麻麻的,像是已经把整个题的逻辑推完了。霜凝冰犹豫了一下,还是开口说了一句:"你要不要先写一个暴力试试?"
陆远转过头看着她。霜凝冰继续说:"就是那种最基本的暴力,不管复杂度——先跑通一个结果,然后再优化。有时候写出来的过程中能看到一些推演的时候没注意到的点。"
陆远没有立刻回应,但他的手移到了键盘上,开始写暴力。二十分钟后暴力跑通了。他看着屏幕上的输出愣了一会儿,然后删掉了一半代码,把暴力的核心部分抽出来优化了一下。剩余的时间只够他拿了一个部分分,但走回宿舍的路上他主动对霜凝冰说了一句:"那个方法,你平时经常用?"
"我爸妈都这么说。"霜凝冰走在他旁边,"先把路走通,再想怎么走快。"
陆远没有接话。但那天晚上霜凝冰收到了一条来自他的好友申请。通过之后他发了一条消息,只有四个字:"那题跑通了。"然后是一个链接,是他优化之后的完整代码。霜凝冰点开看了一眼,觉得他那段代码写得比下午看到的干净了不少,冗余的部分已经剪掉了,像一棵被修剪过的树。
她回了一个"嗯"字,然后合上电脑。那几天机房里的灯亮到很晚,键盘声此起彼伏,有时是她敲着键盘,有时是陆远,有时候是两个人隔着几个工位各自写各自的,中间隔着几排空的桌椅。霜凝冰在冬季集训里慢慢养成了一种习惯——抬头看看陆远是不是还在,看到他在,就继续写。那种相互确认的安静,比任何鼓励的话都更有重量。
集训第六天,基地断网了。
整栋楼的网络突然中断,机房里的孩子们面面相觑。有人去问了教练,得到回复说线路检修,至少要半天才能恢复。于是机房里出现了罕见的安静。大部分人坐在椅子上发呆,有人打开了本地编译器试着写一些不需要查资料的题,有人在翻之前下载过的论文。霜凝冰坐在自己的位置上,看了一眼屏幕右下角的离线状态,然后侧过头看了看陆远——他正靠着椅背,闭着眼睛。那姿势看起来不像在休息,更像是在脑子里重新跑一遍代码,像是调试器没有运行,但他正在用自己的内存一步一步地走。
霜凝冰走过去在他旁边的空位坐下。她没有说话,只是安静地坐着。过了一会儿陆远睁开眼,侧过头看了看她,然后说了一句:"我刚跑完一遍那个拓扑排序。"
"哪个?"
"前天那道。我的内存还能跑得动。"
霜凝冰看着他认真的侧脸,觉得这句话和她平时听到的"我查一下资料""我看看文档"都不太一样——他是在用自己脑子里的那个编译器一步步走完所有路径,没有网络,没有调试器,只有一个安静的午后和一段已经记在身体里的代码。她忽然觉得这大概就是有些人的天赋:不是比别人快,是比别人更愿意在什么都没有的时候,继续用仅有的东西走下去。
那天下午,没有网络的机房里,霜凝冰和陆远用一块白板复盘了三道题。他们在白板上写了擦,擦了写,最后把三道题的完整解法全部留在那块白板上——不是代码,是思路的草图,每条路径都用箭头标着,每处边界都用圆圈圈出来。教练经过的时候看了一眼,什么也没说,但后来霜凝冰发现那张白板被拍了照片发到了集训群里。陆远第二天看到那张照片的时候说了一句:"擦的时候忘拍照了。"语气里有一点点遗憾,像是一件被随手做出来的小事发现有人在意了。
集训最后一天有一场内部模拟赛。霜凝冰发挥稳定,排名第六。陆远拿了第八,是他在这期集训里的最好成绩。他走出机房的时候表情没有太多变化,但霜凝冰注意到他走路的步幅比平时快了一些。那个细微的变化让她想起自己第一次进前十之后端水杯时手微微发抖的样子——有些事情不需要被说出来,但它们会出现在脚步里,出现在走路的节奏里。
回程的车上陆远坐在她旁边。两个人在车上没有说太多话,各自看着车窗外的风景。冬天的田野光秃秃的,远处的山脊线清晰而安静。在快到站的时候陆远忽然开口说了一句:"你明年还会来吗?"
霜凝冰正看着窗外,没有转头:"会。"
"那我也来。"
之后是一段很短的沉默。车窗外的风景继续往后退,铁路旁的电线杆一根接一根地滑向后方。霜凝冰没有追问这句"那我也来"背后的意思,就像她也不需要解释自己那句"会"——它们被放在那里,像两块石头同时沉进同一条河里,她知道它们会落在同一个河床上,尽管谁也看不到另一块石头落定的位置。车窗外面的原野还在向后滑去,她侧过头重新看向窗外时,玻璃上自己的倒影和远山重叠在一起,像是那条线正在同时走向两个方向,而它们最终会抵达同一个地方。
第六十四章:霜凝冰的第二个省选
第二年的春天来得特别早。三月初玉兰就已经开了,白花花的一片挂在枝头,风吹过去的时候会落下几片,在路面上轻轻打着旋。霜凝冰坐在书桌前,面前摊着一张省选报名表,已经填好了所有信息,就差最后一栏签名。她拿起笔又放下,看了看窗外的玉兰,像是等那片白色的花落定之后再做决定。
霜糖从她房间门口经过,看到她在发呆,没有进来。过了一会儿方凝冰端着一杯水走进她房间,放在桌角,看了一眼那张报名表,然后说:"签吧。"霜凝冰抬起头看了她一眼,然后拿起笔,在表上签了名字。那个名字写得不快不慢,和平时交作业的时候一样,像是她已经在心里签过很多次了。
这一年的省选规则有一些变化。名额从16个缩减到了12个,竞争比去年更激烈。霜凝冰知道这个消息的时候正在食堂吃饭,旁边有人在小声讨论这件事,她手里的筷子停了一下,然后又继续夹菜。吃完饭她给周然发了一条消息:"名额缩了。"周然回了一个"知道"和一个"然后呢",像那句问话是在替她把脱口而出的焦虑转向下一步的路径。
霜凝冰没有立刻回那条消息。她坐在食堂门口的台阶上,把手机放在膝盖上,看着远处的操场。三月的阳光落在塑胶跑道上,把那些白色的跑道线照得发亮。她想了很久,然后打了一行字:"然后继续练。"发出去之后她把手机收起来,站起来走回了机房。
这一年的省选准备了更长的时间。霜凝冰不再像去年那样刷大量的题,而是开始有选择地复盘自己过去所有的错题。她把那些错题按类型分类,每一种类型挑出最典型的几道,然后反复推导那些她曾经卡住的地方。周然偶尔会寄一些她整理的思维导图过来,有时候是手写的照片,有时候是电子版。霜糖有一次看到霜凝冰的桌面上摊着一张长达一米的思维导图,从省选常见的题型一直延伸到具体的边界处理方式,像一棵生长得很缓慢但很有耐心的树。
陆远在QQ上和她保持着联系。频率不高,有时候一周只有一两次,但每次都是带着具体的问题或者思路来的。有一次他发了一道题的截图,然后说了一句:"这道题我推了三天,最后一共写了七种不同的解法。"他附了一张表格,把七种解法的优缺点都列了出来。霜凝冰看到那七行字的时候停了一下——她没有见过谁会把七种错误的解法都存下来,包括那些走到一半就断掉的分支。大部分人做完一道题就翻过去了,但陆远把没走通的路也画了标记。
霜凝冰把那七种解法打印出来钉在墙上,每天经过的时候看一两眼。那些走了一半就断掉的分支像是某种提醒:正确的解法往往不是凭空蹦出来的,是你在走完所有错路之后剩下的那一条。而陆远把每一条错路都走得那么认真,好像它们本身也值得被记住。
省选前两天,霜凝冰做了一件她自己也没想到的事——她把洛谷上的"SugarIce"这个ID改成了"FrostSugar"。方凝冰知道这件事之后只是说了一句"名字变长了",然后就继续做饭了。但霜糖注意到方凝冰后来在填某个表格的时候,在签名栏后面加了一行小字"FrostSugar",然后又划掉了。那行字只留下了一道浅浅的铅笔痕迹,但那个痕迹一直没有被擦干净。
考前一天,霜凝冰坐在阳台上晒太阳。那天的阳光很好,暖洋洋的,把阳台上的绿萝照得透亮。霜糖坐在她旁边,两个人隔着一张小圆桌。霜凝冰盯着绿萝的叶片看了一会儿,忽然开口说:"爸,你觉得我能进吗?"
霜糖想了一下:"我不知道。但我觉得你今天坐在这里晒太阳的状态,比去年好很多。"
霜凝冰没有再接话。她靠着椅背,把眼睛闭了起来,阳光落在她脸上,睫毛在脸上投下细小的阴影。她就这样在阳台上坐了一个多小时,没有看代码,没有想题目,只是和那盆正在慢慢生长的绿萝一起晒了一个完整的午后的太阳。
省选那天早上,霜凝冰起得很早。她换好衣服,把准考证和笔袋放进书包里,然后把背包上的小乌龟挂件摆正。那只木刻的小乌龟已经被磨得光滑发亮,棱角处褪去了最初的颜色,泛出一种温润的暖色。她看了一眼那只乌龟,然后背上书包出了门。
霜糖和方凝冰送她去考场。和去年一样,在校门口停下,她走进去之前回头看了一眼他们,挥了一下手,然后转身走进那扇铁灰色的校门。这一次她没有走几步就停住,也没有再多回一次头。霜糖站在校门外看着她的背影越来越远,最后消失在楼道的拐角。
方凝冰站在他旁边,双手插在口袋里。她没有说话,但霜糖注意到她的肩膀比平时绷得紧一些。他伸出手轻轻碰了一下她的手肘,她的肩膀松了下来,但目光还落在那扇已经空无一人的校门上。
第一天的题目出得很刁钻。第一题看上去是一个简单的模拟,但数据范围隐藏了一个巨大的陷阱,如果不注意到那个隐蔽的限制条件,会在最后一刻耗尽所有时间。霜凝冰读题读到第三遍的时候注意到了那一行小字,她把那行字用笔圈了出来,然后重新调整了思路。第二题是图论,难度不算太高,但她花了将近一个小时才写完。第三题是一道混合题,她推了一半就发现时间不够了,果断放弃了部分分,转而去拿所有能拿的暴力分。
走出考场的时候她的表情很平静。她没有像去年那样和霜糖说具体的题,只是说了一句"比去年好一些",然后就安静地走在他们中间。方凝冰走在她旁边,没有追问。三个人沿着考场外面的那条路慢慢走回车上,路边的梧桐树已经抽出了新叶,浅绿色的,在风里轻轻摇着。
第二天的题目风格完全反转。第一道是计算几何,霜凝冰最不擅长的类型,但她没有慌,而是按照那个"先把路走通再想走快"的方法,先写了一个最简单的暴力,然后在暴力基础上一步步优化。虽然最终没能拿到满分,但她在那道题上拿到的分数比预期高了不少。第二道和第三道都是数据结构,像是专门为她准备的。她坐在考场里盯着屏幕的时候,手指落下去的节奏稳得像是在重复一件已经做过很多次的事。
走出考场的时候天色已经暗了。冬天的傍晚来得快,五点多天就灰蒙蒙的,路灯已经亮了。霜凝冰走出来的时候脚步比去年轻快,但她依然没有笑,只是走到霜糖面前停下来,然后说了一句:"都写完了。"和去年一模一样的四个字,但这次她说完之后多停了两秒,像是在等那些字落下去之后看它们会在地面上砸出什么形状。
成绩公布那天是周五。霜糖在办公室收到了查分短信,但没有当场点开。他把手机翻了个面放在桌上,等到下班回家之后,在客厅里坐下来,才打开了那个页面。他盯着屏幕看了几秒钟,然后走到霜凝冰房间门口敲了敲门。
霜凝冰正在写作业,抬起头来看着他。
"进了。"霜糖说,"第8名。"
霜凝冰手里的笔没有放下,她看了看霜糖,又低头看了看桌上的作业本,然后用一种很平常的声音说了一句:"那暑假又要去集训了。"
霜糖站在门口看着她低头继续写作业的样子,那道门框和他自己多年前站在303宿舍门口时看到的光景几乎重叠在了一起。他把门轻轻带上,走回客厅。方凝冰正在沙发上翻手机,看到他出来,抬头看了他一眼。他点了点头,方凝冰把手机放下来,什么也没说。但霜糖注意到她翻书的那只手停了一拍才继续翻过去,像一个符号在某个自己也没有预料到的地方轻轻划了一道。
那天晚上霜凝冰收到了陆远和周然的祝贺消息。陆远的消息很短:"看到名单了。恭喜。"然后是两张截图,是他把她的名字用红色标注出来、旁边画了一个小小的箭头写着"比我快三分钟"的图片。霜凝冰放大那张图看了看那个小小的字迹,然后回了一个"明年集训见"。
周然的消息长一些:"你进了我还没进?不公平,我要去复读了。等我一年。"然后是一个发怒的表情。霜凝冰看着那行字笑了一下,然后回了一句:"等你。"她把手机放在枕头旁边,躺下来看着天花板,没有关灯,就这么安静地躺了很久,像是在等那个"第8名"彻底沉进身体里的每一个角落。
第六十五章:国家集训队的门
夏天的时候霜凝冰收到了国家集训队的通知。通知来得很正式,打印在带抬头的信纸上,盖着红色的印章。霜凝冰拿着那张纸看了很久,然后把它放在桌上,去洗了手,回来又拿起来看了一遍。方凝冰站在厨房门口看着她的动作,转身把锅里的汤调成了小火。
去北京报到的那天霜糖送她去的机场。在候机楼门口霜凝冰拖着行李箱站了一会儿,然后说:"爸,我走了。"
霜糖站在她面前,看着那个已经比他矮不了多少的女儿。她背着书包,拉杆箱上挂着一只磨得发亮的小乌龟木刻,侧脸上已经有了那种他在方凝冰脸上见过很多次的淡定。"到了给我发消息。"他说。
"好。"
她转身走了进去。这一次她没有回头。霜糖站在候机楼门口看着她的背影被人群吞没,那扇自动门在她身后合上,把她和外面隔开了。他站在那里等了十几秒,然后转身走回停车场。手机震了一下,是方凝冰发的:"她进去了?"
"进去了。"
"那你回来吧。汤还热着。"
霜糖看着那行字,把手机收起来,启动了车。开到半路的时候他在一个红灯前停下,侧过头看了一眼副驾——那里空着,没有书包,没有那只小乌龟。他看了两秒,绿灯亮了,他踩下油门继续往前开。
国家集训队的训练强度和省队完全不是一个量级。霜凝冰到北京的第一天就知道了。报到之后是简单的入住手续,然后直接进机房开始摸底测试。她坐在电脑前看着屏幕上的第一道题,读了五分钟才完全理解题意——不是题本身有多复杂,是那种陌生感让她需要重新调整自己的阅读节奏。机房里的键盘声密集而整齐,像一场正在匀速进行的雨。
她在那场摸底测试中排名第十五。十五个,不算好也不算差。她看了一眼排名就关掉了页面,然后继续写第二天的训练任务。旁边的工位上坐着一个戴眼镜的女生,比霜凝冰大一岁,已经在国家队待了一年,排名常年前三。她的ID叫"Lumina",真名叫徐漾。霜凝冰注意到她写代码的手速并不快,但她从来不犹豫——每一行代码落下去之前,她都已经想好了。
第一天训练结束之后,徐漾路过她工位的时候停了一下,看了一眼她的屏幕,然后说了一句:"你这道题的思路可以再精简一下,第三行那个状态其实可以合并到前面。"霜凝冰愣了一下,低头看自己的代码,然后顺着她的提示重新读了一遍。确实,有一个冗余的分支完全可以用合并的方式消除掉。她删掉了七行,用三行替代,跑了一遍,通过了。
"谢了。"霜凝冰抬起头。
徐漾已经走远了,只是背对着她挥了一下手。
那之后霜凝冰开始观察徐漾写代码的方式。她发现徐漾并不是靠手速取胜的,她的优势在于那种近乎本能的取舍——她知道哪些步骤可以跳过、哪些细节必须守住,她在一道题上花费的时间往往比别人少,但拿到的分数却总是高。霜凝冰有一天忍不住问了她一句:"你怎么判断哪些可以跳过?"
徐漾正在喝咖啡,听到这个问题放下杯子想了一下:"就是问自己一个问题——如果这道题我只剩三分钟,我会保哪一部分?然后把那个部分先写完,剩下的再慢慢补。"
霜凝冰把这句话记在了笔记本上。她开始有意识地调整自己的做题顺序——不再按题号依次推进,而是先扫一遍所有题目,找到那个"如果只剩三分钟"的答案,然后以它为中心重新分配时间。这个调整在后续的训练中逐渐显现出效果,她的排名从第十五慢慢爬到了第十二,然后是第十。
集训第二周有一次深夜加练,机房只剩她一个人。霜凝冰正在推一道卡了很久的图论题,草稿纸已经画了三张,但她总觉得那个路径还有更短的走法没有找到。她靠在椅背上闭了一会儿眼,然后重新睁开,把整个思路从第一行开始重新推了一遍。推到最后她发现自己之前一直在找一个不存在的捷径,而真正的解法就藏在那个被忽略的路径分支里。
她写完那题的时候已经是凌晨两点了。机房很安静,只有空调运转的低响。她站起来伸了一个懒腰,走到窗边看了看外面的夜色。北京的夏天夜晚能看到一些稀疏的星星,不像在杭州那么亮,但还看得见。她站在窗边想了一会儿,然后拿出手机给霜糖发了一条消息:"今天推通了一道题,花的时间比预想长,但推通了。"
霜糖的回复是第二天早上六点半到的:"那题还在你脑子里吗?"
霜凝冰早上醒来看到这条消息的时候愣了一下,然后回了一句:"在。"
"那就行。"
她看着那三个字笑了一下,把手机放在枕头旁边,翻身坐起来准备去洗漱。走到门口她停了一下,又看了看手机屏幕上那三个字——她想起很多年前在沙溪的教室里,程雪也写过类似的话,她说"最好的教育不是教别人怎么解题,是让他们学会在没有答案的时候还能继续想"。那些想的过程,比答案活得久。而霜糖的那句"那就行",大概就是"你还在继续想"的另一种说法。
她放下手机,推开门走进了走廊。
第六十六章:IOI选拔赛的风暴
国家队选拔赛的那一周,北京忽然热了起来。霜凝冰住在集训基地宿舍里,窗外的蝉鸣从早响到晚,像是不打算停下来。她在赛前三天开始失眠,不是紧张,是脑子里那些题不断地翻涌,关不掉。她在床上躺了两小时之后干脆坐起来,打开台灯,把那本旧笔记本翻到最后一页,用铅笔把最近几天攒的问题一个个列出来。列完之后她发现那些问题其实并不复杂——只是太多,挤在一起的时候看起来像是堵住了,写下来之后才发现每一个都可以单独处理。
选拔赛一共五场,每场三个小时。第一场霜凝冰发挥得一般,排名第九。第二场她找到了一些感觉,排名上升到了第六。第三场遇到了一道特别棘手的构造题,她卡了整整两个小时,最后只拿了一个部分分,排名又掉回了第十。那天晚上她走在回宿舍的路上,徐漾从后面追上来,递给她一瓶水,然后和她并肩走了一段路。
"你那道构造题,我看了你的代码。"徐漾说。
霜凝冰接过水,拧开喝了一口:"怎么样?"
"前半段是对的。后半段方向偏了,但偏得不多。"徐漾没有停下来,"你推的时候是不是从中间开始推的?"
霜凝冰想了一下:"对。"
"下次试试从末端倒推。构造题有时候正着推会绕远。"
霜凝冰没有立刻回答。她低头走了几步,把这句建议放在心里慢慢翻了一遍,然后把它存进了一个她会在赛前用到的位置——那个位置靠近那些被验证过的方法,但离那些需要重新走过的路径不远。她正在学会区分哪些建议是路标,哪些只是另一个人走过的足迹。
第四场那天早上,霜凝冰进考场之前在走廊上遇到了陆远。他也在国家集训队——今年他以省第3名的成绩进来了。他们隔着一个走廊的距离对视了一眼,陆远冲她微微点了一下头,然后转身进了考场。那个动作很简单,但霜凝冰在那个点头里看到了某种确认——不是"加油",是"你也在"。有时候最简单的表达反而最准确,因为位置已经很清楚了。
第四场的题目偏难,但霜凝冰的状态调整得不错。她按照徐漾说的"先扫一遍找那三分钟"的方法,迅速确定了每道题的优先级。第二题她写了将近一个半小时,但写完确认无误之后她知道自己拿到了满分。第三题只拿了六十分,但她没有懊恼,因为在时间分配上那已经是她能做到的最好结果了。走出考场的时候她看了一眼排名,第五。
最后一场是最关键的。五场总分决定最终名额,而前四名才能进入国家队。霜凝冰坐在考场里,手指放在键盘上没有落下。她闭了一下眼,然后睁开,开始读题。
第一题是一道数据结构,她推了二十分钟就开始写。写完之后检查了一遍边界条件,提交,过。第二题是图论,和她在省队集训时练过的一道模拟题非常相似,她花了四十分钟写完。第三题是压轴题,她读完之后在草稿纸上画了整整一面,然后开始写代码。写到一半发现有一个分支她没有考虑周全,她删掉了一段,重新推了一遍边界,然后继续往下写。最后一小时的时候她还在写第三题,键盘声急促而稳定,像是没有停下来的打算。
时间还剩五分钟的时候她提交了代码。屏幕上弹出评测结果的时候她没敢看,闭了一下眼才睁开。绿色的Accepted。她靠在椅背上,感觉自己手里那个已经被攥了三个小时的空间终于松开了——那种松不是放弃,是知道自己已经把所有能做的都做完了。
走出考场的时候她看到陆远已经站在门口了。他靠着墙,手里拿着半瓶水,看到霜凝冰出来,把水递给她。她接过去喝了半口,然后问他:"你怎么样?"
"还行。"陆远说,"应该能进。"
"你怎么知道?"
"不知道。猜的。"
霜凝冰看了他一眼,没有再问。她们并肩走了一小段路,阳光从头顶照下来,把两个人的影子缩成短短的一团。霜凝冰把水还给他,说了一声"晚上再看成绩",然后各自回了宿舍。
成绩公布的时间是晚上八点。霜凝冰坐在宿舍的床上,面前摊着一本翻了一半的书,但一个字也没有看进去。七点五十八分她拿起手机,点进了查分页面。倒计时跳到零的时候她刷新了一下页面,四行名字出现在屏幕中央。
第一个是徐漾。
第二个是她在集训队里认识的一个来自湖南的男生。
第三个是陆远。
第四个是霜凝冰。
她看着那四行名字,看了很久。排在第四名的那一行字在屏幕的光里安静地亮着,不刺眼,但足够清晰。窗外的蝉鸣还在继续,没有因为她的目光而变快或变慢,只是按着自己的节奏在响。
她给霜糖发了一条消息:"进了。第四名。"
霜糖的回复隔了大约两分钟:"你妈说汤热好了。"
霜凝冰看着那行字,眼角慢慢地弯了一下。她放下手机靠回枕头上,天花板在灯光下泛着柔和的白,她伸出手碰了一下自己腕间微弱跳动的脉搏,像是隔着半座城市的距离,那些细碎的确认正越过窗台落进她的呼吸里。
第六十七章:IOI的入场券
入选国家队之后的日子并没有变得轻松。相反,集训的强度比选拔赛之前更大。国家队四个人住在一栋楼里,每天早上七点起床,八点进机房,晚上十点才能离开。徐漾是队长,那个湖南男生叫郑远航,陆远是第三,霜凝冰是第四。
四个人之间话不多,但配合的默契在一天天加深。郑远航是那种解题速度极快的人,但偶尔会因为太快而漏掉边界条件。徐漾会在他提交之前扫一眼他的代码,指出那些遗漏的细节。陆远擅长构造题,遇到卡住的地方他会先放下键盘,拿出纸笔画图,画清楚了再写。霜凝冰从中找到了她自己的定位——她在数据结构和动态规划上比较稳,遇到大家都不确定的时候,她会先搭一个框架出来。
第一天集训结束之后,徐漾在群里发了一条消息:"IOI的题和国内赛不一样,出题风格更偏思维。接下来一个月我会把近五年的IOI真题全部过一遍,你们谁跟?"
郑远航回了一个"跟",陆远回了一个"跟",霜凝冰回了一个"跟"。
于是那一个月变成了高密度的真题轰炸。每天上午做一套IOI真题,下午复盘,晚上做补充训练。霜凝冰的睡眠时间从七小时缩减到了五小时,但她没有觉得累——那种盯着难题一步步逼近突破口的感觉,比任何一种疲惫都更让她清醒。她发现当身体被推到极限的时候,大脑反而会变得更加锐利,像是所有冗余的部分都被削掉了,只剩下必须运转的核心还在那里持续地转动。
有一天晚上她做完一套题之后靠在椅背上休息,徐漾从旁边的工位探过头来看了看她的屏幕,然后说了一句:"你这个第三题的思路,和去年的标准解法不太一样。"
霜凝冰坐直了:"不一样?"
"不是不好。"徐漾指了指她代码里的一个模块,"你用的是另一种方式处理那个状态,更绕一些,但常数更小。如果卡时限的话,你这种方法可能更稳。"
霜凝冰盯着自己那几行代码看了一会儿,然后说了一句她自己也觉得意外的话:"那我可以再写一个更快的版本吗?"她在同一个问题的两种解法之间划出了一条可以通行的路径,就像她小时候在沙溪看到的那些盘山公路——不是每一条都必须走到终点,但多一条路总归是好的。
徐漾看了她一眼,然后点了点头。霜凝冰那天晚上没有睡,她重新写了一版代码,把那个模块彻底重构了一遍。新的版本比旧版快了将近一倍,但代码量也多了不少。她把两个版本都存了下来——一个作为备用,一个作为正选。多出来的那一个晚上她没有觉得浪费,像是在暗处多备了一盏灯,不会照亮新的路,但至少脚下那一段会多一分安心。
陆远有时候会在她调试的时候走过来看一眼,不说什么,只是看几秒然后走开。那个"看一眼"的动作越来越频繁。霜凝冰有一次在调试的时候感觉到身后有人,回过头看到陆远正站在几步之外,视线落在她的屏幕上。她没问他在看什么,他也没有解释那个视线落在她代码上的原因,只是安静地看了一会儿,然后走回自己的工位去了。
去埃及之前的那个晚上,四个人坐在基地的阳台上。北京的夏夜很闷热,但阳台上有风,吹过来的时候带着干燥的气息。徐漾靠在栏杆上,手里拿着一瓶水。郑远航坐在台阶上玩手机。陆远站在最边上,看着远处的夜景。霜凝冰靠着墙壁站着,手里攥着一枚她偷偷带出来的硬币,五毛的,没花掉,只是捏着。
"你们紧张吗?"郑远航忽然问。
"不紧张。"徐漾说。
"我也不紧张。"郑远航说。
陆远没说话。
霜凝冰想了想,说:"有一点。"
"哪一点?"郑远航问。
"就是……不知道那一边的评测机和这边的声儿是不是一样的。"
徐漾回过头看了她一眼,然后笑了一下:"应该是一样的。评测机不分国界。"
霜凝冰把那枚硬币放进口袋,没有再说话。阳台上的风还在吹,远处城市的灯光沿着地平线铺展开来,像是在替她们把路照亮。
第二天一早,四个人拖着行李箱走出了集训基地的大门。来接他们的教练帮他们把行李装上车,然后开车前往机场。霜凝冰坐在靠窗的位置,看着车窗外飞速倒退的街景。她看到路边有一棵正在开花的树,不知道是什么品种,满树淡紫色的花在晨光里显得格外安静,像是一颗悬了很久的果子终于落到了地上,地面上的尘土被那一下落定轻轻扬起了一层——但很快又落回了原处。
飞机起飞的时候霜凝冰靠着窗看了一会儿云层,然后拿出耳机戴上。她听了一首不知道什么名字的歌,旋律淡淡的,像是很久以前听过但没有记住名字。她把那首歌循环了三遍,然后关掉音乐,靠着椅背睡着了。
埃及的机场比杭州热得多。霜凝冰走出到达口的时候热浪扑面而来,她眯了一下眼睛,看到远处金色的沙丘在阳光里起伏。来接她们的志愿者举着印有IOI标志的牌子,说着流利的英语领她们上了大巴。大巴行驶在开罗的街道上,窗外是灰黄色的建筑和偶尔出现的清真寺尖顶,空气里混着一种干燥的、带着香料和尘土的气息。霜凝冰靠在车窗上看了一会儿街景,想起很多年前方糖也走过这条路,那时候她坐在同一片街景的对面,隔着几十年的时间差异望向同一片沙丘和同样的街角。霜凝冰不知道她在想什么,也许只是确认这条路真的能走通。
到了酒店之后,霜凝冰推开房间的门,把行李箱放好,走到窗边拉开窗帘。窗外的城市在傍晚的光线里泛着一种温柔的金色,远处的金字塔轮廓在暮色中若隐若现。她站了一会儿,然后拿出手机拍了一张照片发给霜糖。她本来想打几个字,但想了半天只打了一个句号,像是所有能说的都在那张照片里了,剩下的已经不需要用文字来补齐。
霜糖回了三个字:"好好睡。"
她没有睡。她坐在窗边,把那本带着的旧笔记本翻到最后一页,在空白的地方写了一行字:"到埃及了。这边的沙丘和家里不太一样,但月亮是同一个。"然后她合上笔记本,躺到床上,关了灯。
第二天是开幕式。霜凝冰穿着中国队统一的队服站在队伍里,听着台上各种语言的致辞,大部分听不懂,只捕捉到几个零星的单词。但她看到那些来自不同国家的选手站在同一个会场里,有的高有的矮,有的穿着正式有的随便套了件T恤,但眼睛里都是同一种光——像是在说,我们走了很远的路才来到这里。
徐漾站在她前面,郑远航站在她左边,陆远站在她右边。开幕式结束的时候灯光亮起来,四个人一起往外走,走到门口的时候徐漾停下来回头看了他们一眼,说了一句:"明天见。"郑远航点了点头。陆远点了点头。霜凝冰也点了点头。
他们四个人站在那扇门口,身后的会场里人声鼎沸,不同语言的声音混杂在一起。那道门槛之外是开罗的夜色,那片夜色和北京的、杭州的、沙溪的都不太一样。但那片夜色也终将沉进她们的晨光里,无论它从哪里升起。霜凝冰跟在她们身后走了出去,夜风迎面而来,带着这座城市的体温,干燥而温热,像是有人用一整片沙漠的温度在替她接住那些还没来得及落定的焦灼和期待。
第六十八章:赛场的沙漏
IOI的第一天,霜凝冰坐在考场里,眼前是一台陌生的电脑和一套陌生的键盘。她用了几分钟适应了一下键位,然后等着倒计时结束。屏幕上的题目跳出来的时候,她的呼吸稳了一下,然后开始读题。
第一题是一道关于"沙漠邮路"的题目。题目描述的是一个古代驿站的通信系统,要求选手在给定的约束条件下设计出一条最优的邮路。霜凝冰读了第一遍觉得像是最短路,读了第二遍发现其实是一个更复杂的综合题,涉及图论和动态规划的结合。她在草稿纸上画了一个简图,然后开始推。推了三遍之后她确认了自己的思路,手指落在键盘上。
第二题是一道计算几何,霜凝冰最不擅长的领域。她犹豫了一下,决定先跳过,把时间留给后面可能更擅长的题。这个决定是在三秒之内做出来的,没有反复纠结,像是那个"先扫一遍再决定"的流程已经变成了肌肉记忆的一部分。
第三题是一道交互题,要求选手写一个程序与评测系统进行多轮对话。霜凝冰读完之后愣了一下——她在集训的时候做过一道非常相似的题目。那道题是去年IOI的真题,她曾经花了一整个下午去推它的交互逻辑。她闭了一下眼,回忆了一遍当时的思路,然后开始写代码。她写得很顺畅,像是有一条已经被踩平的路在等着她走过去。
第一天的比赛结束的时候,霜凝冰的三道题都提交了,有两道她比较有信心,第三道她拿了一部分分但不是满分。走出考场的时候她看到陆远已经在门口了,他靠着一根柱子,手里攥着一瓶水。他看到她出来,把水递了过去。她接过来喝了一口,水已经晒得有些温热了,但那种温热顺着喉咙滑下去的时候反而让人安心——像是那些不确定的答案正在身体里慢慢冷却,等着被重新评估。
"第三题那道交互,你用的什么策略?"霜凝冰问他。
"二分加启发式。"陆远说,"你呢?"
"我也是。但我的启发式可能少了一个分支,最后一个点没跑通。"
陆远想了一下:"那个分支不一定需要。最后一个点可能有别的解法。"
霜凝冰把水还给他,两个人并肩往酒店的方向走去。暮色正在从远处的沙丘后面漫上来,把天空染成一种介于橘色和紫色之间的颜色,像是有一块巨大的画布正在被缓慢地浸染。她们的影子投在路面上,一高一矮,边缘在暮光里微微模糊着,像是路本身也在替她们调整视野的焦距。
第二天是剩下的三道题。霜凝冰的状态比第一天更好一些,可能是已经适应了这边的时差和键盘的触感。第四题是一道中等难度的数据结构,她写得比较顺。第五题是压轴题,她花了将近两个小时才写完。第六题是一道开放性题目,难度不算太高但考察的是思路的清晰度,她写完的时候还剩二十分钟,检查了一遍没有发现明显的错误,然后提交了。
走出考场的时候她没有急着去看排名。她在考场外面的树荫下站了一会儿,等队友们都出来了,四个人一起走回了酒店。路上谁都没有说话。那种不说话的感觉不是压抑,是各自在消化刚刚过去的那几个小时里留下的东西,那些已经远去的数字和还在继续发烫的念头,正从彼此的肩膀上缓缓落定。
成绩公布是在闭幕式上。霜凝冰坐在中国队的位置上,看着台上的大屏幕。排名从后面开始往上报,金牌、银牌、铜牌的名单逐行跳出。她看到陆远的名字出现在金牌榜上的时候心跳快了一下,然后看到郑远航的名字,然后是徐漾,最后——她自己的名字跳了出来。
金牌。中国队四金。
霜凝冰坐在座位上,看着自己的名字在屏幕上亮着。旁边的陆远侧过头看了她一眼,她没有转头,但她感觉到他的目光在她的侧脸上停了一瞬。那一下停留的长度恰到好处——没有久到需要回应,也没有短到可以被忽略。她的嘴角微微动了一下,然后继续看着屏幕,像是需要多确认几遍,才能把那些亮着的字母从屏幕上真正收进自己的眼睛里。
闭幕式结束之后霜凝冰站在会场外面,手里握着那枚金牌。她低头看了很久,用拇指摸了一下它的边缘,光滑而微凉。然后她掏出手机,拍了一张金牌的照片发给霜糖。配文只有两个字:"到了。"
霜糖的回复隔了几分钟才到,只有一张照片——是方糖正在厨房里低头切菜的样子,手机应该是放在灶台边随手拍的角度,画面里只拍到她的肩膀和手背。她正在切一根黄瓜,手腕上戴着一条很旧的细银链子,像是戴了很多年才磨出了这样的光泽。旁边露出一小截桌沿,摆着一盘已经切好的西红柿,刀痕整齐地并排排列着。霜凝冰看着那张照片,觉得那盘切好的西红柿和她的手背和那条旧银链子之间有一种说不清的默契——像是她知道,有些东西在万里之外的厨房里被切好了,等着某个合适的时候被端上桌,被分食,然后被记住。
第六十九章:归途
回国的飞机上,霜凝冰靠着窗。窗外的云层在夕阳里烧成一片金红色,像是整片天空都在缓慢地燃烧。她看着那些云,想起第一天到埃及的时候看到的那片沙丘——那时候她还不知道这段路会怎样收尾,现在知道了,但那种知道并没有让她觉得轻松,反而让那些被烧成金红色的云变得更沉了一些,像是得替它们找一个可以落脚的地方。
徐漾坐在她旁边,戴着耳机闭着眼,像是睡着了。郑远航在后面一排和教练说话。陆远隔着过道坐着,正在低头看一本书,书页间夹着一片不知道从哪里捡来的干枯树叶。
霜凝冰收回目光,把金牌从口袋里掏出来又看了一遍。那块牌子的触感已经比刚开始的时候熟悉了很多,像是它正在慢慢变成她身体的一部分,连同那些思考的过程和答案的轮廓。
飞机降落在北京机场的时候已经是深夜了。霜凝冰拖着行李箱走过到达大厅,看到接机的人群里站着两个熟悉的身影——霜糖和方凝冰站在人群后面,没有举牌子也没有挥手,只是站在那里看着她。霜凝冰拖着行李箱快步走过去。她没有说话,方凝冰也没有说话,她只是伸手把她外套帽子翻折的边角理平——和每一次省选、每一次集训、每一次从任何地方回到她身边时一样,指尖沿着那道弧线走了一遍,确认它还在原处。
回去的车上方凝冰坐在副驾,霜凝冰和霜糖坐在后座。霜凝冰靠着窗,看着北京的夜景从窗外掠过。那枚金牌放在她外套口袋里,隔着布料,隔着一段正在慢慢冷却的距离,像是她已经不需要再反复确认它的存在了——它已经在那个口袋里待了足够久,久到她可以在归途的片刻里先合上眼,让那些亮着的字母自己留在身后。
霜糖从后视镜里看了她一眼,没有问她比赛怎么样,只是把车速调慢了一些。深夜的高速公路上车辆稀少,路灯一盏接一盏地向后滑去。霜凝冰侧过头,看到窗外远处有一片模糊的黄色光晕,像是城市的轮廓在黑暗中微微发亮——那些光和她出发时看到的那片暮色是同一束,只是在不同的时区里换了个方向。而她正沿着这条铺满光痕的路,回到那扇还有人亮着灯等她的窗边。
第七十章:糖炒栗子的气味
回到杭州之后的第一个周末,方糖和林霜来了。方糖带了一袋糖炒栗子,和往年一样,在门口换鞋的时候就先塞了一颗给霜凝冰。霜凝冰接过来剥了放进嘴里,热乎乎的,甜得恰到好处,像是在烤箱里烤过很久的那种甜。
"好吃。"她说。
"那当然。"方糖弯着腰换鞋,"我跑了半条街买的,那家店还在老地方,老板娘都认得我了。"
林霜跟在她后面,提着一个帆布袋。他从袋子里掏出一把新的小木雕——还是一只乌龟,但比之前那只要大一些,轮廓也更圆润,像是那只小乌龟长大了。他又从袋子里拿出一个同样大小的,递给方凝冰。上面刻的是一朵玉兰,花瓣的纹路打磨得很细。
"一人一个。"林霜说。
霜凝冰和方凝冰各自接过去。霜凝冰低头转了转那只木乌龟,指腹沿着那道被磨平的背壳走了一遍。方凝冰把那朵玉兰放在窗台上,靠着那盆多肉的盆沿。两件木雕并排立着,不高,但在晨光里各自投下细长的影子,像两棵没有根但也不会被风吹倒的树。
那天下午一家人坐在客厅里。方糖和方凝冰在厨房里收拾东西,林霜坐在阳台上那把他自己做的摇椅上闭着眼,像是睡着了又像是没有。霜凝冰坐在沙发上翻书,霜糖坐在旁边改文档。客厅里很安静,只有厨房里偶尔传来的碗碟碰撞声和阳台上风吹过绿萝叶片的细微声响。
霜凝冰翻了几页书忽然停下来,侧过头看着霜糖:"爸,你当年拿了IOI金牌之后,回来第一件事是什么?"
霜糖手上的动作停了一下,然后继续改文档:"吃面。你妈煮的,不放葱。"
"然后呢?"
"然后睡了一整天。醒来的时候天已经黑了,你妈坐在旁边看书,窗台上有一盆多肉。"
霜凝冰没有接着问。她靠在沙发上,把那本书放在膝头,看着客厅天花板边缘那道细细的光影缓缓移动。方糖从厨房里走出来,手里端着切好的水果,放在茶几上。霜凝冰拿了一块苹果咬了一口,脆的,甜的,和那些她走过的路无关,但又像是所有路的终点都会落回这样一块苹果上——不需要被计算,不需要被验证,只需要被安静地吃掉。
那天晚上霜凝冰在自己的房间里打开那枚金牌的盒子,又看了一遍。然后她把它放回去,把盒子推到书架的最里面,和那些旧笔记本、旧奖状、旧照片放在一起。她站了一会儿,关上柜门,然后转身走到窗边。窗外的夜色和往常一样,路灯的光从树叶的缝隙里漏下来,在路面上拖出一片斑驳的光影。那些光和别处的光没有区别,但看它的时候她心里有一种很安静的感觉——像是你已经走完了一段很长的路,现在你站在窗前,外面的风还在吹,那些叶子还在响,而你不再需要再走向哪里了。
第七十一章:开学季
IOI结束之后,霜凝冰的生活一下子安静了下来。没有了每天的模拟赛,没有了紧张的倒计时,连键盘声都变得稀疏了。她每天早上背着书包去学校,下午放学回家,周末偶尔和周然约在图书馆写作业。那种安静和之前的忙碌形成了鲜明的对比,像是长途跋涉之后忽然在路边坐下,发现自己的呼吸正在慢慢变浅、变匀。
开学第一周,周然约她出来吃饭。她们选了一家学校附近的小馆子,周然点了一碗酸辣粉,霜凝冰要了一碗清汤面。等面的时候周然从书包里掏出一张试卷拍在桌面上:"你帮我看看这道题,我推了一晚上没推出来。"
霜凝冰低头看了一眼,是一道数学竞赛的压轴题。她拿起笔在草稿纸上画了几条线,然后推了几步,抬起头说:"这里可以用构造法。你把条件反过来看试试。"
周然接过草稿纸看了几分钟,眼睛亮了一下:"懂了!"
霜凝冰把笔放下,低头吃了一口面。周然在旁边奋笔疾书,边写边嘟囔着什么,像是在和那些公式吵架又和好。霜凝冰看着她专注的样子,想起去年在省队集训时她们一起在白板上推题的夜晚。那时候她们也是面对面坐着,中间隔着摊开的草稿纸和各种颜色的笔。
"你明年还打省选吗?"霜凝冰问。
周然抬起头,嘴里还咬着笔帽,含含糊糊地说:"打啊。你都进国家队了,我总不能连省队都进不了吧。"
霜凝冰没有接话,但她嘴角弯了一下。周然把笔帽吐出来,放下笔看着她:"你以后什么打算?保送了,是不是就天天躺着了?"
"不躺着。"霜凝冰低头吃面,"还有别的事要做。"
周然没有追问,继续低头写她的题。那碗酸辣粉端上来之后她一边吃一边写,纸上溅了几滴红油,她用手背擦了一下,继续写。霜凝冰看着她用袖子去抹那道油渍的样子,觉得这个画面应该被记住,像很多年后回顾这一切时,最先浮上来的不会是比赛的排名或奖牌,而是这样一些沾了红油的草稿纸,和那些愿意在面还没凉透之前先把答案推完的人。
那天晚上回到家,霜凝冰坐在书桌前写了一会儿作业。写完之后她没有像以前那样打开洛谷刷题,而是靠着椅背坐了一会儿,看着窗外。路灯的光在窗帘上投下一道暖黄色的竖线,她把那道光看了一会儿,然后去洗了澡,躺在床上。手机震了一下,是陆远发来的消息:"周一的课,你去吗?"
他们上的是同一门课,在同一个校区。霜凝冰回了一个"去"。消息发出去之后她正要把手机放下,又震了一下。陆远说:"那早上一起走。"
霜凝冰看着那行字,打了一个"好"字,然后把手机放在床头柜上,关了灯。窗外的路灯透过窗帘的缝隙在天花板上投下一道细细的光线,她闭上眼,那道光线在她的意识里慢慢化成了一条很直很长的路。
第七十二章:一起走的路
周一早上,霜凝冰在校门口看到了陆远。他背着书包站在那棵银杏树下,正在低头看手机。看到她过来,他把手机收进口袋,两个人并排往教学楼的方向走。路上谁都没有说话,但走路的节奏很合拍,像是已经这样走过很多次了。
那门课是大课,教室里坐了将近两百个人。霜凝冰和陆远在后排找了个位置坐下,中间隔着一个空座。老师讲的是一门计算机导论课,内容并不深,但偶尔会穿插一些最新的技术案例。霜凝冰听得很认真,偶尔在笔记本上记两笔。陆远坐在旁边,没有记笔记,但一直在听,偶尔在草稿纸上画一些和她无关的图形。
课间的时候霜凝冰侧过头看了一眼他在画什么,发现他正在画一只骆驼,线条很简练,骆驼的轮廓在纸张边缘被铅笔反复描过,像是在找一个比上一次更准确的落点。霜凝冰看了几秒,又收回目光,没有打扰他。下课之后她们一起走出教学楼。十月的阳光很好,照在路面上把行人的影子拉得很长。陆远走在她左边,手插在口袋里,步子不快不慢。
"你周末有空吗?"他问。
霜凝冰侧过头看了他一眼:"有。"
"有一道题,想找你一起推。"
"什么题?"
"洛谷上那道黑题。我推了两天没推通。"
霜凝冰想了一下那道题,她记得自己集训的时候做过类似的,但细节已经模糊了:"我回去看下。周六下午?"
"嗯。"
她们在校门口分开,一个往左一个往右。霜凝冰走了几步之后回头看了一眼,陆远已经走远了,背影在人流中越来越小。他的步子没有比平时快也没有比平时慢,就像今天早上在校门口等她的那个动作一样——不是精心设计的停留,只是自然地停在那棵树下,等她从远处走过来。
周六下午她们约在图书馆二楼靠窗的位置。霜凝冰到的时候陆远已经在了,面前的桌上摊着一张写满字的草稿纸,旁边放着一台笔记本电脑。他看到她过来,把草稿纸转了个方向推到她面前,没有多说什么,只是指了指上面的一道边界:"这里我绕了三次,都回到同一个地方。"
霜凝冰坐下来看那张草稿纸。他的推演写得非常工整,每一步都有标注,但在某一条分支后面画了三个问号,像是在一个断点处反复试探了三次,每条路都指向同一个方向,但那个方向对应的出口始终没有出现。她拿了一支笔,从那个分支的前一步重新推了一遍,推了三步之后停住了。
"这里,"她指着纸上的某一处,"你少考虑了一个条件。如果把这个条件加进去,后面的分支就会自然收束。"
陆远盯着她指的那一处看了几秒,然后拿起笔在她的推演后面接了下去。他写得很快,像是那些断掉的线条在看见那道缺口的一瞬间自动接上了。写完之后他放下笔,看着纸上那条完整的路径,沉默了一会儿才开口说了一句:"谢了。"
"不客气。"霜凝冰把笔帽盖上。
那天下午她们把那道题完整地推了三遍。推完之后陆远把草稿纸折好放进包里,站起来说:"我请你喝东西。"她们去了图书馆一楼的咖啡吧,陆远买了两杯热可可,把其中一杯放在她面前。杯壁是热的,透过纸杯传到掌心,像是这个初秋的下午刻意放慢了一些。
霜凝冰低头喝了一口热可可,甜味在舌尖慢慢化开。她忽然想起一个很远的问题:"你以后想做什么?"
陆远握着杯子没有立刻回答,窗外的阳光从玻璃斜照进来落在他手里的纸杯上:"还没想好。可能继续做算法。也可能做点别的。"
"别的什么?"
"不知道。就是觉得路还长,不用急着定下来。"
霜凝冰握着那杯热可可,没有追问。她们在图书馆坐到了下午的光线变斜,两个杯子都空了之后才站起来收拾东西离开。走出图书馆的时候她注意到陆远手里拿着那张被他折得很整齐的草稿纸,边角压得很平,像是那些算错的步骤和推通的部分一样重要——它们都是记录的一部分,都不该被揉皱扔掉。霜凝冰走在他旁边,初秋的风从树梢间穿过,带来远处操场上的哨声和树叶摩擦的声响。她不知道这条路会通向哪里,但至少此刻它已经是一条有人并肩走着的路了。
第七十三章:方糖的电话
十一月的某个晚上,霜糖接到了一个意料之外的电话。
电话是方糖打来的,但接起来之后那边沉默了几秒。霜糖以为信号不好,喂了一声,然后听到方糖的声音从那边传过来:"我今天收拾旧东西,翻到了一个铁盒子。"
霜糖靠在沙发上:"什么铁盒子?"
"程雪的。里面全是她以前写的信和教案,还有一些旧的草稿纸。"方糖顿了一下,"有一张草稿纸,上面写着你的名字。"
霜糖愣住了:"什么内容?"
"是一道题。程雪手写的,旁边批注了很多小字。她写的是你当年在奶龙训练营做的那个沙漏题,她说那道题让她想起了一些事。后面还写了一句话。"
"什么话?"
方糖沉默了两秒,像是在电话那头重新看了一遍那句话:"她说:'这道题的答案不是最优解,是有人愿意陪你一起绕远路。'"
霜糖握着手机,没有说话。窗外的夜色很深,客厅里方凝冰正在和霜凝冰说话,声音隔着墙传来,模糊而温暖。他听着方糖在电话那头的呼吸声,过了很久才开口:"妈,那张纸你留着吧。"
"留着呢。"方糖说,"我就是想告诉你,程雪走之前,已经把那道题想明白了。"
霜糖点了点头,然后想起电话那头的方糖看不到他在点头,于是说了一句:"我知道。"
挂了电话之后他在沙发上坐了一会儿。方凝冰从房间里走出来看到他坐在那里没动,走过来在他旁边坐下:"怎么了?"
"我妈打电话来。说翻到了程雪阿姨的旧东西。"
方凝冰没有问具体是什么,只是安静地坐在他旁边。霜糖侧过头看着她,她的轮廓在昏暗的灯光里显得很柔和。他忽然觉得那些被时间冲散的人和事,其实一直都在——像程雪留在铁盒子里的那句批注,写在泛黄的纸页边缘,在被人遗忘多年之后重新被翻开,字迹依然清晰。那些被反复折叠又摊平的句子,其实一直在纸上等着被谁重新读到。
那天晚上霜糖在床上躺了很久没有睡着。他想起程雪坐在沙溪那间小屋的窗边写教案的样子,想起她说"这道题的答案不是最优解,是有人愿意陪你一起绕远路"的时候,笔尖在纸面上停顿的力度。他不知道她写那句话的时候在想谁,但他知道她写完之后没有把它寄出去,只是折好放进了铁盒子里,等着一个不算近的将来被人打开、读完、合上,然后继续往前走。而那个打开它的人,现在正躺在这个冬天的夜色里,隔着几十年的距离重新掂量那句话的重量。
第七十四章:霜凝冰的课
霜凝冰开始做一件她自己也没有完全计划好的事——她在学校的计算机社团开了一门小课,教高一的学弟学妹基础算法。每周四下午最后一节课,借一间空教室,投影仪是坏的,黑板还够用。她拿粉笔在上面写基本的数据结构,从数组讲到链表,从链表讲到栈和队列。下面坐着的学生不多,有时候七八个,有时候五六个,但每个都带着笔记本,写得很认真。
有一天下课后一个戴眼镜的男生留下来问她:"学姐,你当时是怎么开始学编程的?"
霜凝冰正在擦黑板,停下动作想了一下:"我爸妈教的。很早就开始教了,最开始用积木搭红黑树。"
男生愣了一下:"红黑树?用积木?"
"嗯。我外婆教的。"
男生若有所思地点了点头,然后背着书包走了。霜凝冰把黑板擦干净,关灯锁门,走出教室的时候天已经黑了。走廊里静悄悄的,她走过那扇窗,窗外路灯把学校操场照出一层暖黄色的光。她站在那里看了一会儿,拿出手机拍了一张照片发给方凝冰,配文只有两个字:"下课。"
方凝冰回得很快:"给你留了饭。"
霜凝冰看着那三个字,把手机收起来继续往前走。从教学楼到校门口的路上经过一棵很大的银杏树,叶子已经全黄了,在路灯的光里像是被镀了一层金。她走到那棵树下站了一下,抬头看了看那些在风里轻轻晃动的叶片,然后低下头继续往前走。
后来有一天霜凝冰在社团课上讲到了一道当年程雪出过的"回声"题。她没有提程雪的名字,只说是"以前一位前辈出的题"。她把题目的背景和核心逻辑讲了一遍,然后让下面的学生试着想一下可能的解法。教室里安静了几分钟,然后有个女生举手说:"学姐,如果记忆会衰减,那最优解是不是应该在最开始的时候就把所有东西记下来?"
霜凝冰看着她,想了一下:"从算法角度来说,是。从人的角度来说,不一定。有时候最好的记忆是那些慢慢变淡但依然留在那里的东西。"
那个女生似懂非懂地点了点头,低头在本子上写了几笔。霜凝冰没有继续解释,她转身在黑板上写下了一个简化的状态转移方程,然后让大家开始推。
那节课结束之后霜凝冰站在走廊上,窗外的天色正在暗下去,远处的教学楼上开始亮起星星点点的灯光。她不知道那些学生里有多少会真的走上编程这条路,也不知道他们会不会在某一天忽然想起这堂课上的某句话。但她知道她现在做的这件事,就像是程雪当年在沙溪做的一样——把种子放在土壤里,然后等着它们自己决定要不要发芽。
第七十五章:陆远的邀请
十二月的一个周末,陆远给霜凝冰发了一条消息:"明天有空吗?"
霜凝冰正在写作业,看了一眼手机:"有。"
"想带你去个地方。"
霜凝冰盯着那行字看了几秒,然后回了一个"好"字。第二天早上陆远在校门口等她,穿了一件深灰色的外套,背着一个帆布包,看起来比平时随便一些。看到霜凝冰过来,他把手里的热豆浆递给她,然后转身往公交站的方向走去。
她们坐了一辆开往城郊的公交车。车上人不多,她们在后排并排坐下,窗外的街景从密集的高楼渐渐变得稀疏,变成一些低矮的建筑和偶尔出现的空地。霜凝冰没有问要去哪里,陆远也没有提前说明,只是偶尔侧过头看看窗外,像是在确认路有没有走对。
车开了将近四十分钟,然后在一个看起来很偏僻的站点停了下来。陆远站起来示意她下车。她们走下车之后,霜凝冰看到面前是一条通往山上的小路,路两旁种着一些她已经叫不出名字的树,叶子落了大半,只留一些光秃秃的枝丫。
"这边。"陆远走在了前面。
霜凝冰跟在他身后,沿着那条小路往上走了大概十几分钟。小路尽头是一片开阔的平地,能看到远处的城市轮廓在薄雾里浮着。那片平地上立着几棵不算太高的树,树底下有一张被雨水洗得发白的长椅。陆远在长椅旁边停下来,把帆布包放在椅面上,从里面掏出两瓶水,递了一瓶给她。
"这里是我以前在杭州的时候发现的。"陆远说,"没什么人来。有段时间我推不出题的时候就会来这里坐一会儿。"
霜凝冰拧开水喝了一口,在他旁边坐下来。远处城市的天际线在冬日的薄雾里显得格外安静,楼房和塔吊的轮廓像一幅还没有完全干透的素描。风从山坡上吹过来,带着一种干枯草木的气味。
"你以前在杭州住过?"霜凝冰问。
"小时候住过几年,后来搬走了。但偶尔会回来。"陆远看着远处的城市,"这边能看到大半个杭州。以前每次来的时候就觉得,那些楼里面,每一栋都有人在写代码。"
霜凝冰顺着他的目光看过去。确实,从那个角度看,城市像是一片密密麻麻的代码堆叠在一起,那些窗户是注释,那些亮着的灯是正在运行的进程。她想起自己第一次在奶龙集训营里看到机房的样子,那时候她也是这样看着那些排列整齐的电脑,觉得像是有一整个城市在那些屏幕后面运转着。
"你带我来这里,就是为了看这个?"霜凝冰问。
陆远没有马上回答,他看着远处沉默了一会儿,然后说:"就是想让你看看我发呆的地方。以后你推不出题的时候也可以来这里坐坐。"
霜凝冰握着那瓶水,没有接话。风从山坡上吹过来,把她外套的衣摆吹起来又放下。她侧过头看了一眼陆远,他正看着远处,侧脸的轮廓在冬日的光线里显得很清晰。她没有问他为什么是今天,也没有问他是不是对每个人都这样。她只是在心里把那个坐标记了下来,像是记住一个可以随时回头的地方。
她们在那张长椅上坐了大半个下午。期间聊了一些有的没的——学校的课,下周的社团活动,一道最近看到的奇怪的题。太阳从头顶慢慢移到西边,光线从淡金色变成暖黄色,再到一种接近橘红的颜色。当暮色开始从远处的山脊线后面漫上来的时候,陆远站起来拍了拍裤子上的灰:"走吧,末班车快没了。"
她们沿着原路走下山。霜凝冰走在他后面,看着他背包上那个被磨得有些发白的带子,和他垂在口袋外面的耳机线。走到公交站的时候车刚好来,她们上了车在后排坐下,车窗外的天色正在一寸一寸地暗下来,路灯开始一截一截地亮起来,像有人在一排排地拧开那些带着微微嗡嗡声的旋钮。
回到学校附近的时候天已经全黑了。她们在校门口分开,陆远往左走,她往右走。霜凝冰走出去几步之后停下来回头看了一眼,陆远的背影正沿着路灯一盏一盏地走远,不急不慢地,像是已经确定这条路的尽头有一个他随时可以回去的位置。
第七十六章:冬夜的电话
那年的冬天比往年冷。十二月底的时候杭州下了一场不小的雪,霜凝冰站在教室窗边看着那些雪花在路灯的光里往下落,像是有谁在天上往下撒一行行没有注释的代码,每片雪落下来的路径都不一样,但最后都汇在了同一片地面上。
那天晚上她接到了周然的电话。周然的声音听起来有些闷:"我今年省选又挂了。"
霜凝冰握着手机靠在床头:"差多少?"
"差一名。第十七。"周然笑了一下,但那笑声里没有太多轻松,"没事,明年再来呗。反正我也习惯了。"
霜凝冰没有说"明年一定能进"之类的话。她只是听着电话那头的呼吸声,等了一会儿,然后说了一句:"你那个酸辣粉店还开着吗?"
"开着呢。怎么?"
"我请你吃。"
周然那边沉默了两秒,然后声音里多了一点真实的笑意:"行。明天中午,老地方。"
第二天中午她们在那家小馆子见面。周然点了一碗酸辣粉,多加了一份酸豆角,像是要把昨天那个名字里少掉的一笔用多一份酸豆角补回来。霜凝冰坐在对面看着她把筷子插进碗里搅了搅,然后低头吃了一大口,像是那些未完成的部分本身就可以被咽下去。
"你明年还打?"霜凝冰问。
"打啊。不然呢。"周然抬起头,"我都练了三年了,总不能停在第十七名。"
霜凝冰没有接话。她低头吃了一口面,然后说:"那我明年陪你练。"
周然看了她一眼:"你不是都保送了?"
"保送了也能陪人练。"
周然低下头继续吃面,没有再说什么。但那碗酸辣粉吃完的时候她抬起头说了一句:"那说好了。"
霜凝冰点了点头。她们走出小馆子的时候雪已经停了,地面上积了一层薄薄的白色,踩上去会发出细碎的声响。周然走在她左边,把那顶旧毛线帽往下拉了拉遮住耳朵,两只手都缩在口袋里,像是用了整个人去适应这个冬天的重量。霜凝冰走在旁边,她们的脚印在雪地上并排延伸着,像是两条还没有交叉但正在慢慢靠近的线。
第七十七章:第一百次试错
寒假的时候霜凝冰和周然约了一个固定的线上练习时间,每周三次,每次两个半小时。她们各写各的,偶尔在聊天框里丢一句"你这题用的什么思路"或者"我这边跑出来一个奇怪的结果",然后又各自沉默下去,只剩下键盘声隔着屏幕此起彼伏地响着。
有一天晚上霜凝冰卡在一道题上很久。她换了好几种做法都跑不对结果,推了三遍还是觉得逻辑自洽,但提交之后总是显示错误。她在那个错误提示前面来回走了好几圈,像是面对一道已经反复确认过但依然没有通过的门。霜凝冰停下来看了一会儿那道题,然后把整个思路从第一行开始重新读了一遍。读到第三遍的时候她发现了一个很细微的漏洞——她在一个不太起眼的条件判断上写反了方向,导致整条路径都在朝着相反的方向跑。她改掉了那行代码,再跑一遍,通过了。
她把那道题和正确代码一起发给周然,附了一句话:"第一百次试错。"
周然秒回:"那你还挺快的,我一道题错过的次数堆起来都能盖一层楼。"
霜凝冰看着那行字笑了一下。窗外的夜色很深,电脑屏幕的光映在她脸上。她盯着那行通过的结果,想起自己之前那道错了一百遍的题,每一次报错都像一阵沙哑的咳嗽——没什么新意,但足够让人停下来重新确认方向。它们不起眼,却替她削去了那些被反复打磨却依然多余的边角,把她变成了一颗边缘更圆润的石头。霜凝冰把那些错误的报错记录截了一张图,存进了一个名为"旧路"的文件夹里。那道她反复推了一百遍的题,和那些每一次报错时她停下来的位置,现在都安静地待在同一个文件夹里,不需要再被打开,但也不该被清空。它们已经完成了自己的任务。
寒假快结束的时候,霜糖有天晚上路过霜凝冰的房间门口,看到她正趴在桌上写着什么,台灯的光落在她的笔记本上,把纸页照得发亮。他敲了敲门:"还不睡?"
"快了。"霜凝冰没有抬头,"在写一个总结。"
霜糖走进去看了一眼,她正在用铅笔在一个新本子上写着一些零散的笔记,每一行都很短,像是只记录了每道题的关键分歧点。霜糖没有问她写的是什么,只是说:"早点睡。"
"好。"
霜糖关上门走回客厅。方凝冰正在沙发上看书,抬眼看了他一下:"她还在写?"
"嗯。在写总结。"
方凝冰没有回话,但她的目光从书页上移开,像是也在确认那道被反复折叠过的折痕不必再被抚平。窗外的路灯把薄薄的雪地照出一层淡淡的光晕,均匀地铺在每一寸地面上,像一张还没有被落笔的新草稿纸。
那个寒假霜凝冰一共写了四十七页笔记。她把它们钉在一起,放在书桌最上层,封面上没有写标题,只在角落画了一只小乌龟。
第七十八章:再回沙溪
三月初,霜凝冰跟着方糖去了一趟沙溪。
这是方糖提出来的。她说想去看看程雪以前待过的那间小屋,顺便看看那些孩子。霜凝冰没有犹豫就答应了。她们坐高铁到大理,然后转了一趟中巴车,颠簸了将近两个小时才到沙溪古镇。镇子和霜凝冰记忆中的样子差不多——青石板路、低矮的老房子、那条在镇子边上缓缓流淌的小河。只是路两边多了几盏新装的路灯,和一些新开的小店。
方糖走在前面,步子不快不慢,像是这条路她已经走过很多次了。霜凝冰跟在后面,看着她在一家卖手工编织品的店门口停了一下,然后又继续往前走。她们走到镇外那间小屋的时候,门是锁着的。方糖从口袋里掏出一把旧钥匙,插进锁孔转了一下,门开了。
屋子里的陈设和方糖上次来的时候几乎一样。床还在,桌子还在,窗台上放着一只已经干枯的花瓶。方糖走过去拉开窗帘,阳光涌进来,把满屋的灰尘照得清晰可见。她在桌子旁边站了一会儿,然后从抽屉里拿出一个信封,递给霜凝冰。
"这是程雪以前写给我的。"方糖说,"你看看吧。"
霜凝冰接过信封拆开,里面是一张泛黄的信纸,上面的字迹清晰而端正。信很短,只写了几行:
"方糖:如果你有一天带人来沙溪,替我看看那棵梨树。如果它还开着花,就替我拍一张照片。如果它谢了,就替我站在树下等一会儿。等到风把最后一片花瓣吹走再走。"
霜凝冰看完之后把信折好放回信封里,递给方糖:"那棵梨树在哪?"
"在镇子后面,小学旁边。"
她们出了小屋往镇子后面走。经过那所小学的时候霜凝冰透过围墙的缝隙看到一群孩子在操场上跑,有一个老师站在旁边,正用手比划着什么,看起来像是在教他们做操。操场边上的那棵老梨树还立在那里,比周围的房子高出一大截,枝头的花苞还是紧紧的,像是还没有准备好打开。
方糖走到那棵树下站定,抬头看了看那些紧闭的花苞。她没有说话,只是安静地站着。霜凝冰站在她旁边,两个人一起看着那棵还没有开花的树,像是也在等待一个也许不会在眼前到来的时刻。风从远处吹过来,带着泥土和青草的气味,和那年方糖第一次到沙溪时闻到的风是同一个方向。它翻过那些被程雪用粉笔书写过的山脉,在每一间空无一人的教室里轻轻拍打了一下窗框,然后继续往前吹,直到落在一个不需要被证明的终点。
那天下午她们在沙溪待了三个多小时才离开。方糖走的时候没有回头,霜凝冰跟在她后面,走过那棵梨树的时候她停了一步,在心里记下了一个日期——也许明年,或者后年,等那些花苞打开的时候,她会再来看一眼那棵树。
回去的车上霜凝冰靠着窗看着窗外,窗外的田野正在往后退去,远处那些灰绿色的山脊线在暮色中变得更加柔和。她想起那封信里那句"等到风把最后一片花瓣吹走再走",觉得程雪写那句话的时候大概已经知道,有些等待是不需要结果的——等待着本身,已经把那条路走完了。
第七十九章:梨树开花
四月的一个周末,霜凝冰一个人去了沙溪。
她没有告诉任何人,只是买了周五晚上的火车票,周六早上到了大理,然后转车去沙溪。那趟中巴车上只有她一个人,车窗外的田野已经从冬天的枯黄变成了春天的嫩绿,远处的山也换上了一种更柔和的颜色。她在车上靠着窗,看着那些正在变绿的风景,像是隔着车窗确认某株树的形状是否已经接近开花的边缘。
她走到那所小学旁边的时候,远远就看到了那棵梨树——满树的白花开得正盛,像是有人把一整片云挂在了枝头。她站在树下抬头看了很久,花瓣在风里轻轻飘落,有几片落在她的肩上。她拿出手机拍了一张照片,然后站在那棵树下等了一会儿。她不知道要等多久才算是"等了一会儿",但她在心里默数了六十下,然后在最后一片花瓣落下来之前转身走了。
回程的火车上,她把那张梨树的照片发给方糖。方糖隔了很久才回,只有四个字:"开了就好。"
霜凝冰看着那四个字,把手机放下,靠着椅背闭上了眼睛。列车的轰鸣声有节奏地响着,窗外的田野在暮色中渐渐暗下去,像是一幅正在慢慢浸入深色中的水彩画,那些绿色的线条和浅色的屋顶正在被夜晚一寸一寸地收走。她没有觉得那种收走是结束,反而像是某种正式的交接——白天把它的光交出去,夜晚在接过它的位置上继续坐着,等着下一班列车穿过相同的田野,带回相似的暮色。
她回到杭州已经是晚上了。霜糖和方凝冰在车站接她,看到她出来的时候,霜糖接过她手里的包:"花开了?"
"开了。"
"好看吗?"
"好看。"
方凝冰站在旁边没有问她是去做什么的。她只是伸手把霜凝冰外套帽子翻折的边角理平,指尖沿着那道弧线走了一遍。她们三个人并肩走出车站。四月的晚风带着暖意,路边的玉兰已经谢了,但新叶正在茂盛地长出来,夜色中所有的影子都变得柔和而绵长,像是路本身也在替她们铺展开来,等着下一次天亮时被重新走一遍。
第八十章:毕业那天的风
霜凝冰高中毕业那天,天气很好。阳光不烈,风很轻,学校操场边那排银杏树的叶子在风里轻轻摇着。她穿着毕业服坐在礼堂里,听校长讲话、主任讲话、学生代表发言。那些声音在她耳边回荡,像是隔着水面传来的波纹,每个字都清晰,但合在一起时又显得遥远而不真实,像一道早已通过的题目被反复展示,只是想确认自己真的完成了它。
毕业典礼结束之后霜凝冰走出礼堂,看到霜糖和方凝冰站在那棵银杏树下。方凝冰手里拿着一束花,不大,白色的雏菊用牛皮纸包着。她把花递给霜凝冰的时候说了一句:"毕业快乐。"
霜凝冰接过来低头看了看那束雏菊,花瓣上还带着水珠。她抬起头的时候看到方糖和林霜也站在不远处——方糖正在朝她挥手,林霜站在她旁边,手里提着一只小木盒,不知道装的什么。霜糖朝他们点了点头,示意她过去。
方糖看到霜凝冰走过来,先伸手捏了捏她的胳膊:"瘦了。"然后她看了一眼那束雏菊,像是想起来什么似的,嘴角带了点笑意。林霜把手里那只小木盒递过来,盒面打磨得很光滑,边角圆润,看得出花了不少时间。
"给你做的。"林霜说,"放些杂七杂八的东西。"
霜凝冰接过木盒打开,里面是空的,但内壁垫了一层绒布,触感柔软而均匀。她合上盖子,抬头看着林霜,想说谢谢又觉得太短,想说别的又不知道从哪开口。林霜没有等她说出来,只是把手放回口袋里,目光落在操场边上那排被风吹动的银杏叶上。
那天中午一家人一起吃了饭。方糖订了一家她常去的馆子,菜点得很多,满桌子都摆满了。霜凝冰坐在方凝冰和霜糖中间,埋头吃了一会儿,然后忽然抬起头说了一句:"我以后想去做教育。"
桌子上的筷子都停了一下。
方凝冰第一个开口:"哪种教育?"
"编程教育。"霜凝冰放下筷子,"就是像程雪阿姨那样,教那些没有条件接触编程的孩子。"
方糖没有说话,但她夹菜的手停在半空中悬了一下,然后继续把菜放进自己碗里。霜糖侧过头看了她一眼,没有问为什么,只是说了一句:"那你想好在哪做了吗?"
"还没想好。"霜凝冰说,"但我想先把路走通。"
林霜端起茶杯喝了一口,像是那个回答已经在他心里落到了一个熟悉的空位上。
那天吃完饭之后,一家人走在回家的路上。夕阳把他们的影子拉得很长,霜凝冰走在中间,左边是霜糖和方凝冰,右边是方糖和林霜。那束白色的雏菊被她握在手里,花枝在风里轻轻颤动。她低头看了一眼那些花,然后抬起头继续往前走,步子不快不慢。路边有棵正在落叶的树,几片金黄色的叶子落在她的肩膀上,她没有拂开,就让它们跟着她走了一小段路。那短暂的重量像是替那些已远去的时刻轻轻碰了碰她的肩,然后自行落回了地面,而前面的路正缓缓地向她展开,不需要被命名,只需要被一步一步地走过去。
第八十一章:霜糖的信
毕业后的那个暑假,霜凝冰开始整理自己过去几年的笔记。那些旧本子、旧草稿纸、旧打印的题目,堆了满满一个箱子。她把它们按时间顺序排好,然后一本一本地翻过去,像是在重走一遍过去几年的路。有些地方的推演她已经不记得了,但笔迹还在那里,铅笔的划痕被时间压得更淡了,像一层退去的潮水在沙上留下的痕迹。
翻到最底层的时候她看到了一本旧笔记本——不是她的,封面上写着"霜糖"两个字,是霜糖的字迹。她愣了一下,翻开第一页,看到上面写着:"给小糖的,如果有一天她翻到了。"她不知道霜糖是什么时候把那本笔记放进她箱子里的,也许是毕业那天,也许是更早。
她坐下来开始读那本笔记。里面的内容很杂,有一些是她小时候听过的睡前故事的手写版,有一些是霜糖自己写的一些题解的简化版本,还有一些是零散的感想。翻到后半本的时候,她看到一段被单独标出来的话:
"如果你在看这本笔记,说明你已经走了一段不短的路了。我不知道你走到了哪里,但我知道你走的每一步都是你自己选的。那些我没能教给你的,你都在别处学到了。那些我没能陪你的路,你也一个人走完了。剩下的路,还会有人陪你走。那些你还没走到的地方,风会先替你吹一遍。"
霜凝冰合上笔记本,放在膝头。窗外的天色正在暗下来,她坐在床边看着那本旧笔记封面上的名字,有一瞬间觉得那些字迹已经从纸上浮了起来,融进了窗外正在暗下去的光线里——像是有一整条看不见的线正把这些年的种种细微瞬间串在一起,从她第一次在奶龙训练营里推开303宿舍的门,一直通到此刻她手里这本磨旧了的笔记。那些她和家人一起走过的路、和朋友一起推过的题、独自面对过的凌晨,像是被一个比她更早动身的人提前封进了纸页里,等着她某天翻开、读完、合上,然后继续出发。而那条路还在往前延伸,她不知道它将通向哪里,但她知道有人已经在她之前走过了大半条,在每个拐角都留了一处可以歇脚的地方,等着她走过去时也能坐下喘一口气。
第八十二章:回音谷
霜凝冰决定去沙溪支教。
这个决定不是一时冲动。毕业之后的那个夏天她想了很久,翻完了霜糖那本旧笔记,又把程雪的教案从头到尾读了一遍。她坐在房间里,窗外的蝉鸣一阵一阵地响着,她把那些教案摊在桌上,像在拼一张很久以前就被画好、但一直没有被完全填满的地图。
她给方凝冰看那份教案的时候,方凝冰正在厨房里切菜。霜凝冰站在厨房门口,把决定说了一遍。方凝冰没有停下手里的动作,刀起刀落的声音均匀而稳定,像是早就知道她会这么说,只是在等她自己开口。等她把话说完之后,方凝冰把切好的黄瓜放进盘子里,然后说了一句:"那边比杭州冷,记得带厚衣服。"
霜凝冰站在厨房门口,看着方凝冰把菜端到桌上,觉得她应该还有很多话想说,但她把它们都收进了那些习惯性的叮嘱里——"那边比杭州冷""记得带厚衣服""到了给我发消息"。那些话听起来和平时没有任何不同,但霜凝冰知道,它们已经是方凝冰能够给出的全部祝福了。她就是那样的人——把所有的担心都藏在那些最日常的句子里,像是只要能确认那扇窗户还关着,风就不会吹到不该吹的地方。
走的那天霜糖送她去车站。在候车大厅里,霜糖把行李箱递给她,站在她面前看了她几秒,然后说:"到了之后,先看看那棵梨树还在不在。"
霜凝冰接过行李箱:"还在。我春天去看过了。"
"那就好。"霜糖把她的手松开,退后一步,"去吧。"
她拖着行李箱走进检票口,回头看了一眼。霜糖还站在原地,手插在口袋里,目光落在她身上。她冲他挥了一下手,然后转回头,继续往前走去。
列车启动的时候霜凝冰靠着窗,看着窗外的城市慢慢往后退去。那些楼、那些树、那些她走过无数次的街道,正在一寸一寸地被距离拉远。她没有觉得难过,只是觉得那些景象正在慢慢地从她身边收回到它们该在的位置上,而她正在朝着一个比它们更远的方向移动。
沙溪还是老样子。青石板路、低矮的老房子、那条在镇子边上缓慢流淌的河。霜凝冰拖着行李箱走过那条她来过两次的街,在镇外那间小屋前停下来。门是锁着的,她从方糖给她的那串钥匙里找到了对应的那一把,插进锁孔转了转,门开了。
屋子里比上次来的时候多了一些灰尘,但一切都还在原处。她打开窗户通风,然后把行李箱里的东西一件一件地拿出来放进柜子里。那盆她带来的绿萝放在窗台上,和那只干枯的花瓶并排立着。她站在窗边看了看外面的天色,暮色正在从远处的山脊线后面漫上来,把整片天空染成一种介于橘色和紫色之间的颜色——和程雪当年看到的应该是同一片暮色,只是换了一个人在窗前接住它的重量。
第二天她去了镇上的小学。校长是一个四十多岁的中年人,头发已经有些白了,但精神很好。他带着霜凝冰参观了教室和机房——所谓机房,其实就是一间小屋子里摆了十台旧电脑,屏幕不大,键盘磨损得厉害,但每台都能正常开机。
"以前程老师在这里教了好几年。"校长指着那间机房,"你也是来教编程的?"
霜凝冰看着那些旧电脑,点了点头:"嗯。我想接着她教的继续往下教。"
校长没有多说什么,只是给了她一张课表,上面空着几行,等着她自己去填。
第一节课是在周三下午。霜凝冰走进教室的时候,下面坐着十一个孩子,年纪不等,有的看起来才七八岁,有的已经像是初中生。他们有的好奇地看着她,有的低着头在玩手指,有的正在互相推搡。霜凝冰站在讲台上,把手里那本旧教案放在桌上,然后开口说:"大家好,我叫霜凝冰。从今天开始,我来教你们写代码。"
下面的孩子们安静了一下,然后有人举手问:"老师,什么是代码?"
霜凝冰没有急着回答。她把电脑打开,调出一个空白的编辑器,然后打了一行字:
print("Hello, World!")
屏幕上的字跳出来的时候,那十一个孩子都往前倾了倾身子。她看着他们的脸,说:"这就是代码。像一句话,电脑能听懂。"
那天下午她教了他们三件事:什么是print,什么是字符串,什么是运行。下课后一个扎着两个辫子的小女孩跑过来,扯着她的衣角问:"老师,我以后也能写出那个'Hello World'吗?"
"你刚才已经写出来了。"霜凝冰蹲下来看着她,"你写的那句'我叫小梅',就是你的第一个程序。"
小女孩愣了一下,然后笑了。那个笑容让霜凝冰想起很多年前她在沙溪小学的教室门口看到的那群孩子——那时候程雪也是站在那间教室里,面对着同样好奇的目光,说了一句差不多的话。那些目光和这个笑容之间的距离,已经被一整个循环连接在了一起。
第八十三章:小梅的递归
那个叫小梅的女孩成了霜凝冰班上最认真的学生。她每天放学后都会跑到机房来,有时候问问题,有时候只是坐在电脑前面自己摸索。她学得很慢,但每一步都走得稳稳当当的,像一个正在用最笨的方法爬一座她不知道有多高的山。
有一天下午,霜凝冰在机房里备课,小梅坐在旁边写她自己的小项目。那是一段用循环画正方形的代码,她写了一遍又一遍,每次画出来的正方形都会偏一点位置。霜凝冰看她画了十几遍之后终于忍不住凑过去看了一眼,发现她每次的起始坐标都在变——她没有理解"相对位置"这个概念,以为每次都要重新定起点。
霜凝冰没有直接告诉她答案。她拿了一张纸,在上面画了三个正方形,然后指着中间那个问小梅:"如果这个正方形要从左边挪到右边,你是重新画一个,还是把它整个搬过去?"
小梅想了想:"把它搬过去。"
"那你写的代码里,哪个部分是'搬'的,哪个部分是'画'的?"
小梅低下头看自己的代码,看了很久。然后她拿起笔,把其中一行圈了出来:"这个是画的。这个……是搬的?"
"对。"霜凝冰指着那行代码,"如果你把搬的那部分放到循环外面,它就可以用同一个起点画很多个正方形。"
小梅盯着那张纸看了很久,然后重新打开电脑,把代码改了。这一次屏幕上的正方形一个接一个地排成了一条整齐的线,每个都挨着前一个的边,间距均匀,像一颗颗被仔细对齐的棋子。她看着那排正方形,抬起头来看了一眼霜凝冰,眼睛里有一种亮晶晶的东西,像是忽然看到了一道之前被挡住的门。
霜凝冰没有说什么,只是拍了拍她的肩膀。那天晚上她坐在小屋的窗边写日记,在最后一行写下了一句话:"今天教了小梅相对位置。她理解得很慢,但一旦想通了就不会忘。这大概就是程雪阿姨说的,把种子种在土里,让它自己慢慢长。"
窗外的那棵梨树在夜色里立着,叶子在风里轻轻响。霜凝冰把日记本合上放在窗台上,看了一眼那棵树的轮廓,然后关了灯。黑暗中她听到远处传来几声虫鸣,和那天下午机房里的键盘声有着相似的频率——都是很小的声音,但合在一起的时候,足够把一段漫长的沉默接续下去。
第八十四章:周然的到来
十一月的某个下午,霜凝冰正在机房给五年级的学生讲数组,忽然听到门口有人喊她的名字。她转过头,看到周然站在门口,穿着一件灰色的羽绒服,背着一个大背包,正在朝她笑。
霜凝冰愣了一下,让班上的学生自己练习,然后走到门口:"你怎么来了?"
"我来看看你啊。"周然把背包换了个肩膀,"顺便来散散心。省选模拟赛打得我想吐,再不出来走走我就要疯了。"
那天晚上她们坐在小屋门口的台阶上,周然从包里掏出一袋瓜子,两个人一边嗑一边聊天。周然说她最近在复习数论,总是推着推着就开始怀疑人生,怀疑自己是不是不适合这条路。霜凝冰听着她说,偶尔接一两句,更多的只是在听。
"你说你在这儿教这些小孩,"周然嗑了一颗瓜子,"有没有觉得比打比赛轻松?"
霜凝冰想了一下:"不轻松。但不一样。比赛是往前走,教人是往下扎根。"
周然没有接话。她靠着门框看着远处,手里的瓜子壳在脚边堆了一小堆,像是有些东西正在以缓慢的速度从高处落回地面上。过了好一会儿她说:"那我明年还想再打一次。最后一次。如果还不行,我就来陪你。"
霜凝冰侧过头看着她:"陪我是借口吧?"
周然把手里最后一颗瓜子壳扔进那堆壳里,拍了拍手:"被你发现了。"她转过头也看着霜凝冰,路灯的光从侧面照过来,在她脸上落下一层暖黄色的薄光,"其实我就是想找个地方待着。"
霜凝冰没有追问。她们在台阶上坐到夜风变凉才站起来回屋。进屋之前霜凝冰站了一下,指了一下远处那棵梨树:"春天的时候,那棵树会开满花。"
周然顺着她指的方向看过去,夜色中只能看到一团模糊的轮廓:"那春天的时候我再来。"
"好。"
周然在沙溪待了三天。那三天里她跟着霜凝冰去上了两节课,有一次还被学生问到"老师你叫什么名字",周然说"我叫周然",那个学生追问"周然是什么意思",周然想了想说:"就是绕着走的意思。"霜凝冰在旁边听到这个解释,觉得这大概是她认识周然以来听到过的最准确的一句自我描述。她把那句话说给了小梅听,小梅似懂非懂地点了点头,然后低头继续写代码。
周然走的那天霜凝冰送她去车站。分别的时候周然说:"你这边挺好的。比我想象中好。"
"那就好。"霜凝冰站在车站门口看着她的背影,和当年她送她时一样,两个人的位置换了,但那些话里的分量还在。周然已经习惯了一些东西的偏离和折返——她用"绕着走"这个词来形容自己,大概不只是为了让学生听懂,也是为了让自己接受。有路就走,没路就绕,绕了三年还在绕,但她还在走。
第八十五章:第一场雪
沙溪的第一场雪落在一月中旬。霜凝冰早上醒来的时候看到窗外一片白,那棵梨树的枝丫上堆了一层薄薄的雪,像一幅还没有画完的画被盖上了一层半透明的白布。她站在窗前看了一会儿,然后换上厚外套出了门。
路上没有多少人,雪踩在脚下发出细碎的声响。她走到学校的时候看到几个早到的学生正在操场上打雪仗,小梅也在里面,正蹲在地上攥雪球,脸颊冻得红扑扑的,但她的眼睛还是那么亮。她看到霜凝冰走过来,跑过来仰着头问:"老师,雪是从天上掉下来的吗?"
"是。"
"那它怎么不掉在别的地方?"
霜凝冰想了一下:"它落在哪儿,是风决定的。但它会一直在那儿,直到有人走过去踩它。"
小梅点了点头,像是听懂了又像是没有。然后她转身跑回那群孩子中间,继续蹲下去攥她的雪球。霜凝冰站在操场边看着那些在雪地上跑来跑去的孩子们,他们的脚印在白色的地面上交错重叠,像是一幅正在被一点点画出来的地图。那些凌乱的痕迹最终会被下一场雪覆盖,但此刻它们还没有被掩埋。霜凝冰转身走进教学楼,拍了拍肩上的雪,在走廊尽头那扇窗户前停下来。窗外的雪还在下,那些碎片像是从哪个很远的地方被风吹过来的代码,每一片都带着自己的路径,在落地之前没有任何两片会重叠。她看了一会儿,然后走进教室,把教案翻开到下一课。
第八十六章:梨树下的电话
春天来的时候,那棵梨树果然又开了花。霜凝冰站在树下给方凝冰打了一个电话,告诉她树又开花了。电话那边方凝冰的声音隔着信号传来,有些模糊,但很清晰。
"你什么时候回来?"方凝冰问。
"暑假吧。"
"那回来之前,记得拍一张照片。"
"好。"
挂了电话之后霜凝冰在树下站了一会儿。花瓣落在她肩上,她没有拂开。她拿出手机拍了一张照片,但没有立刻发出去,先存着。她看着那些飘落的花瓣在风里打着旋,像是秋天没有带走的叶子正在春天重新被放回空中。那些被时间翻过去的页面又翻了回来,页码变了,但翻页的声响还是一样的。她站在那棵树下,觉得自己也正在被这场春风翻回某个旧页面——不是要回到过去,是正在用一个更安静的方式,把那一段还没有完全读完的章节继续往下翻。
第八十七章:霜糖的来访
四月末的时候,霜糖来了一趟沙溪。
他没有提前说,只是在一个周六的早上出现在小屋门口,手里拎着一袋糖炒栗子。霜凝冰打开门看到他站在晨光里,愣了一下,然后侧身让他进来。
"你怎么来了?"
"路过。"霜糖把栗子放在桌上,"你妈让我来看看你有没有瘦。"
霜凝冰笑了一下,给霜糖倒了一杯水。他坐在桌边,看着窗外那棵梨树的花,看了一会儿才开口:"你这边比我想象中好。"
"你以为是什么样的?"
"我以为你会瘦很多。"霜糖转过头看了看她,"现在看来还行。"
霜凝冰没有接话,坐在他对面剥了一颗栗子放进嘴里。糖炒栗子还是热的,甜味在舌尖慢慢化开。她想起很多年前方糖站在老街那家店门口剥栗子的样子,那时候她也在旁边,程雪也在旁边,只是她已经不记得那天的具体天气和具体光线了,只记得那种从纸袋里冒出来的热气在冬天的空气中凝成白色的雾,然后慢慢散开,像是一个完整的句子被说完之后的余音。
那天下午霜糖和她一起去了学校。他站在教室后面看霜凝冰上课,看到她在黑板上写下一行行代码,看到孩子们举着本子围到她身边问问题,看到小梅坐在前排一边写一边小声念着什么。下课之后他走过去看了一眼小梅的笔记本,上面画着一条歪歪扭扭的路径,旁边标注着密密麻麻的小字,像是在用她自己的语言描述一个还没完全弄懂的问题。
"你教得不错。"霜糖说。
"你以前也这么教过我。"
霜糖没有反驳,他站在教室门口看着走廊尽头窗外的光线正在变斜,树影在磨旧的地砖上拖出细长的轮廓,像是有人刚刚放下笔,还没来得及擦掉那些弯曲的线条就离开了教室,只留下风从没有关严的窗缝里渗进来,带着远处田野和泥土的气味,在桌角和椅背上留下细小的尘埃。他说:"不一样。你小时候的课是我一个人教的。但这里的学生,是你自己接过来的。"
霜凝冰站在他旁边,顺着他的目光看向窗外。她没有接话,但觉得那句话已经帮她重新走了一遍她从第一次推开303宿舍的门开始走过的所有的路——那些被教过的、被等待过的、被放手过的,现在都在她自己接过来的这间教室里重新落了地,像那些被风带走又带回来的种子,终于找到了自己的土。
霜糖走的那天霜凝冰送他到车站。车来之前他站在候车厅里,从口袋里掏出一把旧钥匙递给她:"这个你留着。以后想回去的时候,随时能回。"
霜凝冰接过那把钥匙,握在手心里。金属的表面还带着他的体温,像是一截刚刚被握过的记忆,还热着,但正在一点一点地变凉,变成她自己的温度。
第八十八章:小梅的毕业
小梅小学毕业那天,霜凝冰站在操场边上看着她上台领毕业证。那个曾经扯着她衣角问"什么是代码"的小女孩,如今已经比当年高了整整一个头,扎着高高的马尾辫,走路的步子稳稳当当的。
毕业典礼结束之后,小梅跑到霜凝冰面前,从书包里掏出一张折得整整齐齐的纸递给她。霜凝冰打开,上面画着一个小程序——用Scratch做的——一只小乌龟在屏幕上爬出了一条弯弯曲曲的路径,终点是一棵画得很粗略、但能认出来是梨树的图形。旁边用铅笔写着:"我以后想当程序员,像老师一样。"
霜凝冰看着那张纸,把折痕抚平,说:"那你好好写。"
小梅点了点头。然后她回头看了一眼操场边那棵正在落叶的梨树,转回头来的时候眼睛亮了一下:"老师,那棵树明年还会开花吗?"
"会的。"
"那我明年回来看它。"
霜凝冰没有说"好"或者"不用",她只是蹲下来把那张纸折好放进自己的口袋里,像是在替那棵还没开花的树先收下一份约定。风从操场那边吹过来,把她的头发吹乱了一些。她看着小梅跑向那群正在合影的同学,辫子在风里左右甩着,像一小截还没学会收尾的循环。然后她站起来,转身往机房的方向走去。
第八十九章:程雪的笔记本
那年秋天,霜凝冰在小屋的柜子里发现了一个旧铁盒。铁盒不大,放在柜子最深处,她搬东西的时候碰到的。她打开铁盒的时候,看到里面放着几本旧笔记本。她认出了那个字迹——那是程雪的字。
她坐在床边翻开第一本,里面记录的是程雪刚到沙溪时的笔记。每一页都写得很满,有教案、有教学心得、有一些零零散散的观察。其中一页用铅笔写着:
"今天班上来了一个新学生,上课的时候一直在看窗外。我问他看什么,他说在看那棵梨树。他说他奶奶以前也会在那棵树下等他放学。我说,那以后放学了,老师也在那棵树下等你。他笑了。"
霜凝冰翻到后面一页,看到程雪写的另一段话:
"这里的孩子们走得很慢,像一条河在平原上流过,半天都看不出在移动。但过了一个学期回头看他们写的代码时,才发现他们已经绕过了好几道弯——那些沉在底层、不被浮标标记的缓慢位移,最终都会汇入同一段可以运行的程序里。"
霜凝冰合上笔记本,放回铁盒里。她想起自己第一次站在那棵梨树下面的时候,也是在等——等花开,等风来,等那些她还没想明白的事情慢慢落定。而程雪在很久以前就已经坐在同样的位置,写过同样的等待。那些她以为是独自走过的路,其实一直有人走在前面。脚印被风沙填平了,但方向还在那里。
那天晚上霜凝冰坐在窗边,把那本笔记本从头到尾看了一遍。看到最后一页的时候,她发现了一句话被单独写在了页末,像是程雪写完所有的教案之后,在某个安静的晚上又拿起笔加上的:
"如果有一天有人翻开这本笔记,替我看看那棵梨树还在不在。"
霜凝冰合上笔记本,把它抱在胸前。窗外的夜色很深,远处那棵梨树的轮廓在月光下显得格外清晰,枝叶间落满银白色的薄光,像是正在缓缓呼吸。她对着窗外轻声说了一句:"还在。"
第九十章:陆远的信
那年冬天,霜凝冰收到了一封手写信。信封上写着她的名字,字迹端正但不规整,像是写字的人很少用笔。她拆开的时候认出那是陆远的信,信纸对折了两次,边角压得很平。
信的内容不长:
"霜凝冰,我在洛谷上看到你还在更新题解,就想着给你写封信。我最近在做一个开源项目,用到了你当年写过的那道'回声'题的思路。每次跑通的时候都会想起你坐在图书馆窗边推那题的样子——光线斜斜地落在草稿纸上,你低着头,笔尖一直没有停下来过。
如果你在那边待累了,北京这边还有个位置可以坐。我在这边等你一起写代码。"
落款是"陆远"。那两个字写得很轻,和信纸上的其他字迹像是用同一只手写出来的,只是末尾的那一笔微微拖长了一截,像是有什么话在笔尖停了一会儿,最后还是收了回去。
霜凝冰把信折好放回信封里,和程雪那本笔记本放在一起。窗外的雪又开始下了,细碎的雪粒落在窗台上,像是一个还没说出口的答案正在慢慢积累着厚度。
第九十一章:梨树的四季
霜凝冰在沙溪待了整整两年。
两年里她看那棵梨树经历了两次开花、两次落叶、两次大雪压枝。她学会了在冬天的时候给树根裹上稻草,在春天的时候站在树下等花瓣落下。她教过的学生有的去了县城读初中,有的留在了镇上,有的已经不再写代码了,但每一个都记得那间旧机房里屏幕的光。
第二年冬天的时候,周然真的来了。她没有考上省队,差了一名,但来的时候手里提着一个行李箱,站在小屋门口说:"我来陪你了。"霜凝冰让她住进了隔壁的空房间,两个人轮流做饭、轮流上课、轮流在深夜的机房里对着屏幕发呆。
有一天晚上周然问她:"你打算一直待在这儿吗?"
霜凝冰正在改作业,手里的笔停了一下:"不知道。但还没想走。"
"那要是想走了呢?"
霜凝冰抬起头看着窗外。夜色中那棵梨树的轮廓正在风里微微晃动,枝丫间还挂着几片没有落尽的枯叶,像是冬天还在犹豫要不要彻底离开。她想起程雪离开时留下的那封信,里面没有说"再见",只说"等到风把最后一片花瓣吹走再走"。那大概也是一个答案——不是所有的离开都需要一个目的地,有时候你只需要等风的方向变了,自然就知道该往哪里走了。
"到时候会知道的。"霜凝冰低下头继续改作业。
周然没有再追问。她拿起自己面前那叠作业本也开始改,两个人的铅笔在纸面上各自移动,发出细碎而平稳的声响。那声音和门外风穿过树枝的响声叠在一起,像是有人正在给一整个季节的尾声轻轻收着线,不急,只是在它该合上的地方慢慢合拢。
第九十二章:最后一课
霜凝冰在沙溪的最后一节课,教的是递归。
她站在讲台上,在黑板上画了一棵倒着长的树,树根在顶端,树枝往下分叉,每一层都比上一层更细。她指着那棵树对下面的孩子们说:"这就是递归。一个问题不断地变成更小的自己,直到它小到你一眼就能看出答案。"
小梅已经升入初中,不在这个班上了。但那天下午她出现在教室门口,靠在门框上旁听。霜凝冰看到她了,没有说什么,只是继续讲课。
课快结束的时候,她让每一个孩子在本子上写下自己"最小的自己"是什么。孩子们低头写了一会儿,有的写了"1+1",有的写了"睡觉",有一个男生写道:"我最小的时候是刚出生,那时候什么都不会,只会哭。"
霜凝冰站在讲台上看着那些歪歪扭扭的答案,没有纠正,没有点评。她只是把那些本子收上来,然后说:"这就是你们以后遇到任何难题时都可以回去的地方。那个最小的自己,永远在那里等你。"
下课铃响了。孩子们收拾书包往外走,霜凝冰站在讲台边收拾教案。小梅走进来,站在她面前,从口袋里掏出一张叠好的纸条放在桌上,没有说任何话,只是抬头看了她一眼,然后转身跑了出去。
霜凝冰展开那张纸条,上面写着一行铅笔字:
"老师,我找到了。最小的时候是你在黑板上写的那句Hello World。"
霜凝冰把纸条夹进程雪那本旧笔记本的最后一页,合上笔记本,关掉了教室的灯。她在门口站了一下,回头看了一眼那间空荡荡的教室——黑板已经擦干净了,桌椅排得整整齐齐,窗外的光线正在从暖黄变成浅橘色。她看了几秒,然后关上门。
第九十三章:离开的早晨
离开沙溪的那天早上,霜凝冰起得很早。她先把行李箱收拾好,然后站在窗边看了最后一眼那棵梨树。冬天的枝丫光秃秃的,但树皮的纹理很深,像是把所有季节都收进了自己的纹路里。
她锁好小屋的门,把钥匙放在窗台上——程雪曾经放过钥匙的那个位置。她蹲下来看了看那扇旧木门的底部,那里有一道被风雨刷淡了的凹痕,像是很多个雨季在同一个地方反复落下来的印记。
她走到那棵梨树下站了一会儿。风不大,没有花瓣可落,也没有叶子可吹。她只是安静地站着,像是替过去两年的全部日子做一个简短的备份。然后她转身,拖着行李箱往车站的方向走去。周然走在旁边,手里拎着一个帆布包,两个人并肩走在清晨的青石板路上。
"你不回头看看?"周然问。
"不用回头。"霜凝冰没有放慢脚步,"还会回来的。"
她们走过了那座小石桥,走过了那排老旧的屋檐,走过了那所正在发出晨读声的小学。行李箱的轮子在青石板上发出咕噜咕噜的声响,像是正在替她数着走过的每一步。霜凝冰没有回头,但她知道那棵梨树正在她的身后,在冬天的晨光里安静地站着,等着下一个春天,等着下一场风,等着另一个会在树下停下脚步的人。
第九十四章:回到原点
回到杭州那天,霜糖和方凝冰在车站接她。霜糖接过行李箱的时候说了一句:"瘦了。"霜凝冰说:"胖了。"方凝冰站在旁边没有说话,但她的目光在霜凝冰脸上停了一下,像是用那个停留的长度完成了所有她不会说出口的确认。
回家的路上霜凝冰坐在后座,靠着窗看着窗外的街景。那些街道、那些店铺、那些她以前每天经过的路口,都还是老样子。但它们看起来和离开的时候不太一样了——不是它们变了,是她带着两年的沙溪和程雪的信和梨树的影子回到了这里,用另一双眼睛在看它们。
那天晚上她回到自己的房间,把行李箱里的东西一件一件拿出来放好。程雪那本旧笔记本放在书桌左上角,陆远那封信放在抽屉里,小梅画的程序贴在墙上。她站在房间中央环顾了一圈,觉得那些物件正在用各自的方式替她标记着那些已经完成的段落和还没有写下的开头。
方凝冰在门口敲了敲门:"吃饭了。"
"来了。"
霜凝冰走出房间,经过那盆被移到了客厅窗台上的多肉——它长得比两年前更大了,叶片厚实而饱满,向四周均匀地伸展着,阳光在它的表面镀上一层微暖的淡金色。那盆多肉曾经是程雪的,后来是方糖的,再后来是方凝冰的,现在正安静地待在她们共同的窗台上,像一个不需要被反复确认的承诺。她停下脚步看了看它,然后走向餐桌。
那顿饭和以前一样——方凝冰做的菜,霜糖盛的饭,碗筷摆得很整齐。霜凝冰坐在自己的位置上低头吃饭,吃了几口之后抬头看了一眼对面。霜糖正在低头喝汤,方凝冰正在给霜糖夹菜。那些细微的动作都还和两年前一样。她也低头继续吃,像是那些已经被验证过的循环并不需要被打破,只需要被重新运行一次,每次都能得到同样的输出。
窗外正在下雨,这是她离开沙溪之后的第一场雨。雨丝细密地落在窗户玻璃上,沿着那些看不见的路径往低处流淌,像一幅不需要用代码来生成的水彩画。它不需要被调试,也不会报错。它正在自己运行着,按照那些比她更古老的规律,落到每一片它该落到的叶子上。远处的城市轮廓被雨雾模糊了边界,像是有人正在用一块柔软的橡皮把一些过于锋利的边缘轻轻擦去,只留下那些已经被雨淋湿过许多次的线条。霜凝冰看着那场雨,放下筷子,在雨声继续落下的间隙里喝完最后一口汤,像是正陪着那棵树一起慢慢度过一个完整的循环。
第九十五章:重新开始的代码
回到杭州之后的日子,和霜凝冰想象中不太一样。她以为会有一段安静的过渡期,像是代码编译完之后等待运行结果的那几秒空白。但生活的节奏比预想中更快地把她卷了进去——方凝冰替她联系了一个教育公益项目,问她愿不愿意去帮忙做课程设计;霜糖把那本旧教案复印了一份,说有人想要参考;周然在沙溪待了两个月之后也回了杭州,开始准备新一轮的省选。
那天晚上霜凝冰坐在书桌前,面前摊着一叠空白的稿纸。她想要写一套新的课程大纲,但笔尖落在纸上的时候,第一个字迟迟没有落下。窗外的路灯在窗帘上投下一道竖长的光,像是正在等着那行字被写出来之后才肯往旁边移动一点。
她忽然想起程雪那本笔记里写过的一句话:“最好的教案不是写出来的,是你和学生们一起走出来的那条路。”她放下笔,把那句话抄在了稿纸的第一行。
第二天她约了周然在图书馆见面。两个人坐在靠窗的位置,桌上摊着各自的笔记。霜凝冰把她初步构思的大纲推给周然看,周然低头看了十几分钟,然后抬起头:“你这个设计太理想了。那边的小孩基础比你说的要差很多,你第一课讲变量他们可能就听不懂了。”
霜凝冰想了一下:“那你觉得第一课该讲什么?”
“讲他们身边的东西。”周然用笔尖点了点大纲的第一行,“比如他们每天走的那条路,比如他们看到的树、看到的房子。用这些当例子讲算法,比用抽象的数字管用。”
霜凝冰把大纲收回来,在最上面加了一行:“第一课:从你每天走的那条路开始。”然后她靠着椅背,看着窗外那棵正在落叶的梧桐树,觉得程雪当年写那本教案的时候,大概也是从一句类似的话开始的——不是从理论出发,是从学生们站在窗前看到的那一棵树开始,一点一点地推开整座花园的门。
那之后的一个月,霜凝冰几乎每天都泡在图书馆里。她把程雪那本旧笔记翻了很多遍,把沙溪两年里遇到过的每一个问题、每一个学生的反应都重新梳理了一遍。周然偶尔过来和她一起改,两个人有时候争得面红耳赤,有时候又同时沉默下来,像是都在等某一条还没有浮现的路径自己冒出来。
有一次霜糖路过图书馆的时候看到她们正对着屏幕争论一道题的表述方式,他在门口站了一会儿,没有进去,只是隔着窗户看了一会儿她们低头凑在一起的样子,然后转身走了。晚上霜凝冰回家的时候霜糖正在客厅里看书,她换好鞋路过沙发,霜糖头也没抬地说了一句:“你那套大纲写得怎么样了?”
“还在改。周然说我第一课的设计太理想了。”
霜糖翻了一页书:“她是对的。但你也别改太多,你的想法也有你的道理。”
霜凝冰站在沙发旁边看着他翻书页的样子,觉得他好像瘦了一些,但看书的姿势还和以前一样,一只手搭在书脊上,另一只手随意地搭在膝盖上。她想到自己在他那本旧笔记里读到的那段话——“那些我没能教给你的,你都在别处学到了”——那些路确实已经走到了比当年更远的地方,而他已经不再需要替她探路了,只是偶尔还会在看到她深夜归来的身影时,翻开一页书,用最不经意的语气告诉她:“你的想法也有它的道理。”
“知道了。”她说完走回房间,打开电脑,把大纲里第一课的几个例子重新改了一遍。
第九十六章:方凝冰的课
方凝冰最近也在忙一件事——她在自己所在的机构里开了一门公益课,教那些从来没有接触过编程的中年人写代码。霜凝冰第一次听她说起的时候愣了一下:“中年人?”
“嗯。大部分是转行来的,有的已经四十多岁了,之前做的是完全不相干的工作。”方凝冰正在切菜,语气和平时一样平淡,“他们比年轻人学得慢,但比年轻人坐得住。”
霜凝冰靠在厨房门框上看她切菜的样子,刀起刀落,每一下都落在同一个位置。她想起方凝冰以前说过的那句话——“代码不会摔下去”——现在她把那些不会摔下去的代码,教给那些正在寻找新的立足之处的人。那些人在不同的年纪重新坐在书桌前,面对着一行行陌生的符号,像是一群在荒地上重新寻找路径的迷路者。而方凝冰正坐在离他们不远的地方,用同样的耐心,替他们一块一块地铺平脚下那段最难走的路。
“妈,你那个课讲得怎么样?”
“还行。有一个学生,前几周一直写不对循环,上周忽然通了。他发了一条消息给我,说今天终于跑出了自己想要的结果。”方凝冰把切好的菜放进盘子里,“那个表情,和你第一次跑通Hello World的时候一样。”
霜凝冰没有说话。她站在厨房门口看着方凝冰的背影,觉得她正在用另一种方式,把那些早年写在旧笔记本里的经验,重新教给另一群还在寻找自己路径的人。
那个周末霜凝冰去旁听了方凝冰的一节课。教室里坐着的十几个学生年纪都不小了,有的人头发已经花白了,有的戴着老花镜正费力地辨认屏幕上的字。方凝冰站在讲台上,讲的是循环语句,语速不快不慢,每讲完一个知识点都会停下来问一句“有没有问题”。有人举手的时候她会走到那个人的工位旁边,弯下腰,指着屏幕上的某一行,轻声解释。
下课后霜凝冰在走廊里等她。方凝冰走出来看到她在门口,只是问了一句:“听懂了?”
“听懂了。”霜凝冰走在她旁边,“你讲得比我清楚。”
方凝冰没有接话,继续往前走了一段路,然后才说了一句:“等你以后教久了,也会讲成这样的。”
第九十七章:霜糖的旧键盘
那年的十一月,霜糖在做年终大扫除的时候翻出了一把旧键盘。键盘是黑色的,键帽已经被磨得发亮,有些字母已经看不清了。他拿着那把键盘站在书房里看了很久,然后把它放进了准备扔掉的杂物箱里。
霜凝冰路过的时候看到了那把键盘,她认识它——那是霜糖在奶龙训练营时用的那一把,键帽上的“A”和“S”已经被磨得几乎看不见了,空格键的边缘有一道被反复敲击留下的浅凹痕。她蹲下来把键盘从杂物箱里捡出来,拿回自己房间,用湿布仔细地擦了一遍,然后把它放在了书桌旁边那个空着的置物架上。
那天晚上霜糖看到那把键盘出现在霜凝冰房间的时候,愣了一下:“你捡那个干什么?旧的,不好用了。”
“留着。”霜凝冰正在写东西,头也没回,“以后我要是写不出东西了,就看看它。”
霜糖在门口站了一会儿,然后说了一句:“那你也别老看,该写的还是要自己写。”
“知道。”
霜糖走之后,霜凝冰放下笔看了看那把键盘。那些被磨平的字母已经看不清了,但它们曾经被按下过无数次,每一次都有对应的字符出现在屏幕上,像是一些被反复确认过很多遍的答案,哪怕字迹已经被磨损、按键已经松动,只要你记得它们的位置,它们就仍然能敲出正确的结果。像是被反复走过的路,哪怕路面已经被磨损得看不清当初的纹路,脚掌还记得落下去的方向。她伸手摸了摸那个被磨出凹痕的空格键,然后转回身继续写她的东西。
第九十八章:冬至的面
冬至那天,方糖和林霜来了杭州。方糖一进门就脱了外套挽起袖子钻进厨房,说“今天我来煮面”。方凝冰在厨房里忙活了一会儿,把灶台让给她,自己坐在客厅里和林霜说话。霜凝冰也坐在客厅里,偶尔看看手机,偶尔听她们说话。方糖的声音从厨房里传过来,带着锅碗碰撞的声响,和那些年她煮面时发出的声响一模一样。那声音里没有多余的装饰,只是水烧开之后面条被放进去的细微碎裂声,和筷子沿着锅沿划过时留下的短暂痕迹——像是她正在用一个最简单的循环,把那些年的冬至重新跑一遍。
吃饭的时候方糖端出来四大碗面,每一碗上面都卧着一个荷包蛋,旁边放着几片青菜和几片牛肉。霜凝冰低头看了一眼碗里,没有葱花。她忽然想起很小的时候,程雪坐在她对面吃面的样子——那时候她还不懂为什么这碗面里永远没有葱花,后来她知道了,也记住了,那些细微的缺席本身就是另一种形式的在场,像一个删掉的语句仍然在注释里留下痕迹。
“妈,你煮的面还是这个味道。”霜凝冰说。
方糖坐在对面看着她:“你小时候每次吃面都要把荷包蛋留到最后吃。”
“现在还留着。”
方糖笑了一下,没有再说什么。她低头夹起一片牛肉放进自己嘴里,然后端起碗喝了一口汤,像是她也在用自己的方式重新确认冬至的味道。
那天晚上霜凝冰送方糖和林霜到楼下。临上车之前方糖回头看了她一眼:“你最近是不是又瘦了?”
“没有,胖了。”
“你跟你爸一个样。”方糖拉开车门,“下次回来,给我带沙溪的栗子。”
“那边不产栗子。”
“那你带点别的东西也行。”
方糖说完上了车,车窗摇上去之后霜凝冰看不到她的脸了,只看到车窗玻璃上反射的路灯光在慢慢移动,最后随着车尾灯一起消失在路口的拐角。霜凝冰站在路灯下看了一会儿那排渐渐远去的红色尾灯,把外套裹紧了一些,然后转身走回楼里。
那天晚上她坐在书桌前,把那把旧键盘拿下来又看了一遍,然后放回去,继续写她的课程大纲。窗外的冬至夜很安静,远处的楼房里亮着一格一格的暖黄色灯光,像是一个个正在运行的进程,每一个都在自己的位置上按部就班地运转着。她也坐在其中一格灯光下面,敲着那些她正在构建的句子。
第九十九章:霜凝冰的演讲
第二年春天,霜凝冰收到一个邀请——在一个教育论坛上做分享。主题是“从OI到乡村教育”,时长二十分钟,观众主要是教育工作者和公益项目的负责人。她犹豫了两天才回复“好”,然后花了一个星期准备演讲稿。
她不想讲得太正式。她没有像大多数人那样准备一个精心编排的PPT,也没有列出清晰的要点和总结。她只是把那些年在机房、在沙溪、在自家书桌前的碎片放在一起,让它们自己拼成一条路。
讲稿的第一版写了三千多字,被她删了重写,第二版改成了两千字,第三版她又从程雪的笔记本里抄了一段话放进去。最后定稿的时候只剩下一千五百字左右。霜糖问她准备得怎么样了,她说“差不多了”。
论坛那天霜凝冰站在台上,台下的座位坐满了人。她穿了一件白色的衬衫,站在话筒前面,低头看了一眼稿子,然后又抬起头看着台下的人:“大家好,我是霜凝冰。我想跟大家聊一件事——那些被我们遗忘在屏幕后面的孩子。”
她讲了小梅,讲了那间只有十台旧电脑的机房,讲了程雪留在铁盒里的那句话。她讲得很慢,像是每句话都需要在空气里多停留一会儿才肯落地。讲到一半的时候她停了一下,台下的目光落在她身上,像是在等她把话接上。然后她低头看了看手里的稿纸,又抬起头,继续往下讲。
“以前我以为,做教育是把我知道的东西教给别人。后来我发现,其实是你坐在那儿,等他们自己走过来,然后你站起来,陪他们一起往前走。”
她讲完了最后一句,台下安静了两秒,然后掌声响起来。她站在台上看着那些正在鼓掌的人,觉得那些掌声不是在给她,是在给那些旧机房、旧教案、旧键盘——那些她曾经以为是在独自走完的东西,原来一直有人在不远处看着那些字符被一遍遍敲落,看着它们拼成句子,看着那些句子在屏幕边缘亮起来,像一盏一盏被拧开的灯。
下台之后霜凝冰在走廊里遇到一个头发花白的中年男人。他叫住了她,说:“你刚才讲的,我在沙溪也待过。程老师走之后,那间小屋空了很久。你能接着住进去,挺好的。”
霜凝冰看着他,想问他认不认识程雪,但话到嘴边又觉得不用问了——能认出那间小屋的人,一定也认识那棵梨树。她和他在走廊里站了片刻,像是两段在同一个地方停留过的代码,只是运行的时间不同,输出的是同一个结果。
第一百章:新芽
三月末的一天,霜凝冰收到了沙溪小学发来的一段视频。视频里小梅站在那间机房的门口,背后是那十台旧电脑,屏幕亮着,上面是她自己写的一个小程序——一只小乌龟正在屏幕上爬动,爬出一条弯弯曲曲的路径。路径的终点是一棵画得很粗略的树,树枝间停着一只更小的乌龟。
视频的最后小梅对着镜头说:“老师,树开花了,你和它都在呢。”
霜凝冰把视频看了三遍。她坐在书桌前,把那把旧键盘拿下来放在膝盖上,看了一会儿,然后打开电脑,给陆远发了一条消息:“我下周回北京。”
陆远那边的回复隔了一会儿才到:“那我去车站接你。”
她看着那行字,把键盘放回置物架上,站起来走到窗边。窗外的天正在慢慢暗下去,路灯正在一盏一盏地亮起来。窗台上那盆多肉又冒出了两片新的嫩芽,极小的、浅绿色的,边缘还带着一点湿润的亮光,像是刚刚从泥土里探出头来,正在确认这个春天是否真的已经来了。
霜凝冰伸手碰了碰那片新芽,触感又薄又软,和多年前程雪第一次把那盆多肉放在窗台上的时候一样。它已经陪她绕过了很多个冬季的边沿。手指离开叶尖的时候,那片新芽微微颤了一下,像是在替那些还没有写下、还没有说出口、还没有命名的东西,先亮出了第一行没有报错的代码。而春天刚刚开始在窗台上重新编译自己,用那盆多肉最缓慢的语法,注释着所有经过风筛选的枝桠。远处的楼群正陆续亮起灯来,一扇接一扇,像是有人在反复调试一个逐渐接近稳定的循环。她靠着窗台站了很久,那些灯已经亮得足够密了,她身后桌角那把旧键盘的键帽正在灯光里泛着微弱的、被磨平的、属于过去的暖光。她走回书桌前,打开电脑,给那段旅程写下了第一行注释。
第一百零一章:北京的新房间
霜凝冰到北京的那天,陆远在车站接她。他站在出站口的人群里,穿着一件深灰色的外套,手里没有拿牌子,只是安静地站在那儿,像一棵在城市里扎了根但依然习惯保持距离的树。霜凝冰拖着行李箱走出来的时候,他先看到了她,然后朝她点了一下头,那个动作和两年前在集训基地走廊里的那个点头一模一样——没有多余的幅度,只是确认"你到了"。
"住的地方找好了。"陆远接过她的行李箱,"离公司不远,走路十五分钟。"
"你帮我找的?"
"嗯。看了三间,这间窗户朝南。"
霜凝冰跟在他身后走出车站。北京的初春风还有些凉,天空是一种干净的灰蓝色,远处的高楼在薄薄的阳光里显得格外清晰。她坐进陆远的车里,窗外的街景慢慢往后退。她看着那些她曾经熟悉的路口和建筑,觉得这座城市和她离开的时候相比没有太大的变化,但那些细微的差别正在以缓慢的速度显现——路边多了一家新开的便利店,地铁站入口的围栏换成了新的,她以前常去的那家书店似乎换了招牌。它们都在用最小幅度、最不起眼的方式,记录着时间从她身上流过之后留下的痕迹。
陆远帮她租的房子在老城区的一栋居民楼里,三楼,窗户朝南。霜凝冰推开窗户的时候,阳光涌进来把整个房间照得明亮而温暖。她站在窗边看了看外面——楼下有一棵槐树,枝头的嫩芽正在冒出来,像一个个正在展开的小句子,每一片都在用自己的方式往光的方向伸展着。远处能看到一些低矮的屋顶和更远处的高楼轮廓,在新旧交织的天际线里彼此映照着。
"怎么样?"陆远站在门口问。
"挺好的。"霜凝冰转过身,"谢谢。"
"不客气。"陆远把行李箱靠在墙边,"晚上一起吃饭?还有几个人想见你。"
"谁?"
"到了你就知道了。"
那顿饭约在一家胡同里的云南菜馆。霜凝冰推门进去的时候,看到桌边已经坐了三个人——一对看上去很年轻的女生,和另一个她没见过的男生。陆远落后半步走进来,在她旁边坐下,然后替她介绍那几个人:"这是林夏,这是程舟。"他先指了指那两个女生,又指了指那个男生:"这是季航。他们都在做教育相关的工作。"
林夏剪着一头利落的短发,戴着一副圆框眼镜,笑起来的时候眼角会弯成两道很细的弧线。她旁边坐着的程舟留着及肩的长发,穿着一件宽松的亚麻衬衫,正在低头看手机,听到陆远介绍的时候抬起头来冲霜凝冰笑了一下。季航坐在最里面,话不多,但一直在帮大家倒茶,像是习惯性地在照顾每一个人的杯子有没有空。
"你就是霜凝冰?"林夏放下筷子,"陆远念叨你好久了。"
霜凝冰侧过头看了一眼陆远,他的表情没变,但耳朵的边缘泛上了一层很淡的红色,像是正在被某个隐蔽的循环悄悄更新着值。他没有接话,只是低头夹了一筷子菜放进自己碗里。
那顿饭吃得很热闹。林夏是个话匣子,从她的教学项目聊到最近在做的一个公益课程设计,从她遇到的一个特别的学生聊到她对教育公平的理解。程舟偶尔插几句,声音很轻,像是在说话之前先在心里把那些字放到了一个不会磕碰的位置。季航话最少,但每次有人找不到话题的时候他都能恰到好处地开口续上,像一条安静运转的后台线程,正在有条不紊地填平所有可能导致冷场的空隙。
"所以你们都在做教育?"霜凝冰问。
"算是。"林夏夹了一块烤鱼,"我和程舟在做一个项目,给偏远地区的学校配编程课。季航做的是特殊教育方向的,教听障孩子写代码。"
霜凝冰放下筷子看着季航。她第一次知道有人在做这件事——那些她从来没有想过的角落、那些她以为代码不会到达的地方,原来早就有人在那边接住了。那些从未在屏幕上亮起过字符的孩子,正用另一种方式调试着属于他们的语言。季航注意到她的目光,抬头看了她一眼:"怎么了?"
"没什么。"霜凝冰端起杯子喝了一口茶,"就是觉得,你们在做的事,比我想象的更大。"
林夏在旁边笑了一声:"那你来不来?我们最近正好缺人。"
霜凝冰看了看陆远,陆远正在低头喝汤,像是这个问题是留给她的,他不需要替她考虑是在哪条路上落脚——只要她已经确定了方向,他会先她一步把前面的脚印踩实。她转回头看着林夏:"来。"
那天晚上散场的时候已经很晚了。霜凝冰和陆远走在最后,出了胡同口往停车的地方走。路两旁的槐树在路灯的光里投下斑驳的树影,风穿过叶子发出的声音细碎而绵密,像是一条正在被翻动的很薄的书页。霜凝冰走在陆远旁边,能闻到他外套上带着的一点洗衣液的气味,淡淡的,像是刚换过没多久。
"林夏和程舟是一对?"霜凝冰问。
陆远没有看她,步伐保持着原有的节奏:"嗯。在一起好几年了。程舟以前不是做教育的,后来被林夏拉过来的。"
"那季航呢?"
"季航是程舟的表弟。单身。"
霜凝冰点了点头,没有再问。她们走过一段路,快到车旁边的时候她停了一下,侧过头看了看陆远。路灯的光从侧面照在他脸上,把他的轮廓勾勒得很清晰,像是有人正在用铅笔沿着他的边缘慢慢地描一道线。
"你这两年,一直在北京?"
"嗯。"陆远拉开副驾的门,"偶尔回杭州。"
"回去做什么?"
他回头看了她一眼,那道目光在她脸上停了一瞬,像是想确认她是否真的准备好了听见那句话的重量:"回去看看你在不在。"
他说完绕过车头坐进了驾驶座,像是那句已经在那里等了一阵子的话终于被递到了正确的手里。霜凝冰在副驾门口站了两秒,然后拉开车门坐进去。车内的暖风正在慢慢把夜晚的凉意驱散,她系好安全带,侧过头看着窗外。
"走了。"陆远说。
"嗯。"
第一百零二章:槐树下的早晨
搬到北京之后,霜凝冰的生活渐渐有了新的节奏。每天早上七点起床,下楼走过那棵槐树去地铁站。槐树的叶子在慢慢变密,从嫩绿变成深绿,树荫一天比一天浓。她有时候会在树下站几秒钟再走,像是在确认它还在长。
林夏和程舟的办公室在一栋老旧写字楼的五楼,空间不大,但窗户很大,能看到对面楼的屋顶和远处一小片天空。霜凝冰到的那天林夏给她腾了一张桌子,桌上放着一台旧显示器和一个文件夹,里面是她们正在做的课程资料。
"你先看看这些。"林夏指着那个文件夹,"程舟那边还有几个学校的对接文档,等你看完了我们再聊。"
霜凝冰翻开文件夹,里面是她们过去一年做的所有课程记录。每一节课都写得很详细,有教案、有学生的反馈、有课后复盘。她翻到中间的时候看到一页被折了角的纸,上面是用铅笔写的一行小字,字迹和程雪的有些像:"如果一个孩子说'我听不懂',可能不是他理解不了,是你还没有找到他听得懂的方式。"
"这是谁写的?"霜凝冰拿着那页纸走到程舟的工位旁。
程舟正在整理资料,看了一眼:"是我写的。怎么了?"
"没什么。"霜凝冰把纸放回去,"这句话我以前见过类似的。"
程舟看了她一眼,没有追问。她低头继续整理资料,动作安静而利落,像是已经习惯了那些被折叠在纸页边缘的句子会在不经意间被另一个人认出。
那天下午霜凝冰坐在窗边改一份教案,阳光从窗外照进来落在她的笔记本上,把那行正在写的字晒得微微发热。她低头看着自己写下的那些句子,觉得它们正在慢慢找到自己的形状——不是程雪的形状,不是方凝冰的形状,是她自己的。
林夏从她身后经过,停了一下看了看她的屏幕:"你这一版比上一版好很多。"
"你怎么知道我上一版什么样?"
"陆远给我看过。"林夏拍了拍她的肩膀,"他说你改东西的时候会用铅笔在边缘画小乌龟。"
霜凝冰愣了一下,然后低头看了一眼自己的笔记本——页脚确实画着一只小乌龟,线条歪歪扭扭的,是她在想不出下一句怎么写的时候随手画的。她抬头看着林夏走远的背影,把那页纸翻过去,继续写下一段。
第一百零三章:林夏和程舟
林夏和程舟的关系,霜凝冰是在一起工作的第二周才慢慢看出来的。她们的相处方式很安静,没有过分亲密的动作,没有腻歪的称呼,但在那些细小的缝隙里,一种已经磨合了很多年的默契正在持续地运转着。
有一次霜凝冰加班到很晚,程舟正在会议室里打电话,声音隔着一扇玻璃门传出来,温和而耐心。林夏在隔壁工位上改文档,头也没抬,但她起身去倒水的时候,顺手把程舟放在桌角的那杯已经凉了的茶换成了热的。那个动作很轻,不需要停下来思考,不需要额外的确认,像是已经重复过太多次,已经不需要再被专门注意到。
程舟打完电话走出来看到那杯热茶,没有道谢,只是端起来喝了一口。她从窗户的倒影里看到林夏正对着电脑整理文件,没有转头——就像她们已经确认过很多次:有些东西不需要被说出来,就已经被完整地存放在杯沿的温度里,或者在并排的椅背上各自留下的轻微凹陷中。
"你们在一起多久了?"有一天霜凝冰问林夏。
林夏正在吃午饭,放下筷子想了想:"七八年了吧。记不太清了。"
"那你们怎么认识的?"
"大学的时候,她是我的助教。"林夏笑了一下,"我那时候写代码写得很烂,她每次帮我改完Bug都会在注释里画一朵小花。后来我发现她是故意画给我看的,就问她'你是不是喜欢我',她说'是',然后就在一起了。"
霜凝冰看着林夏说起这些的时候嘴角带着的笑,那种笑不是刻意回忆的表情,是一种不需要寻找就能自然浮现的东西——像是那朵被画进注释里的小花一直开着,七八年后依然亮在代码的同一行末尾。她想起程雪那本笔记里也画过一些小图案,在每段教案的结尾处,有时候是一棵小树,有时候是一朵花,有时候是一只简笔的小乌龟。那些图案和字符之间隔着的是同一种不需要被说出来的关心,只是落在不同的纸面上,等不同的人在不同的时间里翻到它们。
"那你们现在还会在注释里画花吗?"霜凝冰问。
林夏看了她一眼,然后低头继续吃饭:"有时候会。但她现在画得比较少了,因为她说'你都知道了'。"
那句话让霜凝冰安静了一会儿。她想到那些不需要再被重复确认的东西,正在变成一种比表达更深的默契——像是两段已经合并了的代码,不再需要注释来说明彼此的关系,因为它们的运行方式已经证明了一切。
第一百零四章:季航的课
季航在一个周末邀请了霜凝冰去旁听他的课。他的教室在一所特殊教育学校里,学生大多是听障孩子,年纪从七八岁到十四五岁不等。霜凝冰坐在教室的最后一排,看着季航站在讲台上用手语讲课。他的动作很流畅,像是在用另一门语言讲述同一个故事——变量、条件、循环,都被他转化成看得见的手势,在空气中安静地铺展开来。
那些孩子盯着他的手指,眼睛专注而安静。偶尔有人举手,用手语提出问题,季航会停下来,走到那个孩子的座位旁边,放慢速度重新解释一遍。教室里的键盘声很轻,和普通机房里的嘈杂完全不同——像是有人在用更安静的方式,把那些代码一行一行地写进屏幕里。
下课之后季航走到霜凝冰旁边坐下来。他把水杯放在桌上,然后问了一句:"能看懂吗?"
"能看懂一部分。"霜凝冰看着那些正在收拾书包的孩子,"他们学得很快。"
"因为他们要学的东西比我们多。"季航靠着椅背,目光落在教室前方那片空白的黑板上,"除了代码,他们还要学怎么跟这个世界说话。代码反而是最简单的部分。"
霜凝冰坐在他旁边,看着那些孩子三三两两地走出教室。他们中有一个女孩在门口停下来,回头冲季航比了一个手势——那个手势很简单,像是一只手在空气中画了一个圆。季航也回了一个同样的手势,然后那个女孩笑了一下,转身跑开了。
"她说什么?"
"她说'下周见'。"季航站起来,"走吧,请你吃午饭。"
那天中午她们在附近的一家小面馆吃饭。季航点了一碗素面,霜凝冰要了一碗牛肉面。等面的时候霜凝冰问他:"你为什么会想到做这个?"
季航低头用筷子搅着碗里的汤,像是在搅拌一个已经被问过很多次的问题:"我有个表弟,也是听障。小时候他问我'电脑能听见我说话吗',我说不能,但他可以教会电脑听他的。后来我就开始做这个了。"
他说完低头吃了一口面。霜凝冰没有追问。她们坐在那家小面馆靠窗的位置,窗外是一棵正在落叶的树,阳光透过稀疏的枝丫落在那张旧木桌面上,把瓷碗的边缘照出一圈柔和的光。霜凝冰觉得她正在慢慢地认识一群和自己走的路不完全相同、但方向一致的人。他们把代码带到了更远的地方,带到了那些她以前从未想过会亮起屏幕的角落。那些角落被她之前的目光忽略过很久,像是程序边界外未被测试的区域,没人知道那里能不能运行,直到有人带着第一行代码走过去。
第一百零五章:胡同里的夜
有一天晚上,林夏提议大家一起去胡同里的一家酒吧坐坐。那家酒吧藏在一棵槐树后面,门脸很小,推开之后是一个不大的院子,铺着青砖,摆着几张旧木桌椅。霜凝冰到的时候林夏和程舟已经在了,程舟正靠着椅背仰头看天,林夏坐在她旁边正在剥一颗橘子。季航还没到,陆远坐在院子另一边,面前放着一杯没怎么喝的东西,正在低头看手机。
霜凝冰在陆远旁边坐下来。他侧过头看了她一眼,把手机收起来:"今天课听得怎么样?"
"挺好的。季航教得比我好。"
陆远没有接话,只是把手边那杯还没喝过的温水推到她面前。霜凝冰低头看了那杯水一眼,没有说谢谢,端起来喝了一口。温热的,刚好。
林夏剥完橘子分成两半,递给程舟一半。程舟接过去咬了一颗,然后继续仰头看天。林夏也靠着椅背,侧过头看着程舟的侧脸,目光在那个角度停留了片刻,那片刻的长度像是被什么无形的量规精确地计量过,刚好够一片叶子从枝头落到地面的距离——既不是凝视,也不是扫过,是那种在长期相处中磨炼出的默契,知道在这个位置停多久才不会被察觉。
"你们俩真的不腻吗?"霜凝冰问。
林夏转过头看着她:"腻什么?"
"就是……天天在一起,不觉得烦?"
林夏想了一下:"会烦。但她烦的时候会去看书,我烦的时候会去写代码。烦完了再回来,就没事了。"
霜凝冰听着这句话,忽然想起程舟说过的那句"她已经知道了"。那些不需要注释的关系,原来是在一次次的"烦完了再回来"里慢慢长出来的。它们没有捷径,没有优化方法,只是两个人各自坐在自己的位置上,等那段编译的时间过去,再重新运行同一个程序。每一次出现报错的时候都能在注释里找到对方留下的标记,然后一起把那行错误改掉,不需要多解释一个字,因为彼此已经足够熟悉对方的日志结构。
程舟忽然坐直了身子,看了看手机:"季航说他不过来了,临时有事。"
"那咱们自己喝。"林夏举起杯子。
杯子碰在一起的时候发出一声清脆的声响,在安静的院子里显得格外清晰。霜凝冰端着那杯温水,看到林夏和程舟碰杯之后交换了一个很短的眼神,像是所有需要确认的事情都已经提前完成了,那个眼神只是一条晚到的注释——在代码运行完之后,又回到起点加了一行备注。陆远坐在她旁边,也在低头看着自己杯子里正在逐渐消失的水面。
霜凝冰抬头看了看夜空。北京的春天夜晚能看到几颗稀疏的星星,隔着城市的光污染显得模糊而遥远,但它们还在那里,像是那条路的轮廓仍然可以辨认,哪怕被许多细节模糊过了边缘。她想起沙溪的星空,那里的星星要密得多,亮得多,但此刻她坐在这片被城市灯光稀释过的天空下,觉得那些被削弱了的光依然有着同样的重量——一样的明亮,只是隔了更多的距离才抵达。
"你还会回沙溪吗?"陆远忽然问。
霜凝冰把目光从天空收回来,侧过头看了他一眼:"会。但不会一直待着了。"
"那你会待在哪儿?"
霜凝冰没有马上回答。她低头看着自己手里的杯子,杯壁正在慢慢变凉,那道缓慢的温度下降像是时间本身的刻度,隔着一层薄薄的玻璃传进她的指腹。她侧过头,看到陆远正看着她,目光安静而平稳,像是已经在那条路的终点处等了很久。
"可能就在这儿。"她说。
第一百零六章:霜糖和方凝冰的北京之行
那年夏天,霜糖和方凝冰来了一趟北京。
霜凝冰去车站接她们的时候,看到霜糖站在出站口的人群里,手里拎着一个帆布袋,方凝冰站在他旁边,依然是不远不近的距离,像一棵已经和另一棵并排生长了很多年的树,根系在看不到的地方已经缠在了一起。霜凝冰朝她们走过去的时候,霜糖先看到了她,放下帆布袋,冲她微微抬了一下下巴,像是用那个简单的动作替所有不需要说出来的话完成了安装。
"北京热。"方凝冰走到霜凝冰面前,"比你那边热。"
"夏天都这样。"霜凝冰接过她手里的包,"走吧,先回去放东西。"
林夏帮霜凝冰找了一间临时的住处,在学校附近的一栋老居民楼里。霜糖和方凝冰住进去之后,霜糖在阳台上站了一会儿,看了看远处那棵正在绿荫深处静立的槐树,说了一句:"这边树比杭州多。"
"北京老城区树都多。"霜凝冰站在他旁边,"你们这次来多久?"
"一周。"霜糖转过身,"你妈说想看看你工作的地方。"
那天下午霜凝冰带她们去了办公室。林夏和程舟正在会议室里讨论课程方案,看到霜凝冰带着人进来,林夏从门里探出头来打了个招呼。方凝冰站在办公室门口看了一圈,目光在那排旧电脑和贴满便签的白板上停留了一会儿,然后走到窗边看了看外面,像是正在用她自己的方式把那些日常的痕迹读成一串不需要整理的代码。
"环境还行。"她转过身对霜凝冰说。
霜凝冰站在她旁边,顺着她的视线看向窗外的那片屋顶和天空。她想起很多年前方凝冰站在自己宿舍窗前的样子,那时候窗外的路灯和此刻的光线正在用同样的节奏落下来,只是高度和距离变了,楼下那棵槐树的树影已经延伸到了窗台的边缘。方凝冰没有说过"我以你为荣"之类的话,但她站在那扇窗前的背影本身,已经把那些没说完的东西接住了。
那天晚上霜凝冰带她们去了一家巷子里的小馆子吃饭。霜糖和方凝冰坐在对面,霜凝冰坐在靠窗的位置。菜端上来的时候方凝冰先夹了一块鱼放进霜凝冰碗里,然后才开始吃自己的。霜凝冰低头看了一眼碗里那块鱼,觉得她吃了这么多次方凝冰夹的菜,但每一块被放进碗里的鱼还是和第一次吃到的时候一样,隔着一整个桌面的距离,隔着一整个从奶龙训练营到沙溪的路程,替那些还没说出口的句子,先落进了碗底。
"你那个教育项目,"方凝冰忽然开口,"还缺人吗?"
霜凝冰抬起头看着她,嘴里的菜还没有咽下去,含含糊糊地问了一句:"你想来?"
"不是我来。"方凝冰夹了一根青菜,"是有一个朋友,也想做类似的事。她之前是搞算法的,最近在休息,想找点事做。"
"那让她来找我。"
方凝冰点了点头,然后继续低头吃饭。霜糖在旁边没有说话,但他伸手把方凝冰碗里已经凉掉的茶换成了热的,那个动作和她把鱼夹进霜凝冰碗里的动作几乎是同一个弧度和速度——像是某段被继承下来的程序,正在被两个不同的人反复调用,每一次运行都能得到相同的输出,然后传给下一个即将开始运行的实例。
那顿饭吃得很安静。窗外偶尔传来几声蝉鸣,在夏天的夜晚里显得格外清晰。霜凝冰看着对面正在低头吃面的父母,觉得那个场景和很多年前她在奶龙训练营食堂里看到的那个画面正在缓慢地重叠——那时候她也坐在一张桌子旁边,看着对面的两个人各自低头吃饭,偶尔交换一个短得几乎不会被注意到的眼神。时间换了位置,桌子换了大小,但那些不需要被注释的关系还在持续运行着,用相同的内核版本,向所有正在学习调用它们的新实例传递着同一份模式。
第一百零七章:方凝冰的朋友
方凝冰说的那个朋友,两周后真的来了北京。
她叫沈念,个子不高,戴着一副很细的银色眼镜,说话的时候会不自觉地微微歪头。霜凝冰第一次见到她的时候,她正站在办公室门口等,背着一个旧帆布包,手里攥着一本翻得很旧的算法书。她看到霜凝冰走出来,先是愣了一下,然后笑了。
"你就是霜凝冰?方凝冰跟我说过你很多次。"
"她说什么?"
"说你小时候用积木搭红黑树。"沈念推了推眼镜,"我听了之后觉得,你妈这招可以学。"
霜凝冰带她进了办公室,把她介绍给林夏和程舟。沈念坐下来之后没有多寒暄,直接从包里拿出一个笔记本摊开,上面画着一张她之前做过的课程草图。林夏凑过去看了几眼,然后抬头看了看霜凝冰,眼神里带着一点惊讶:"你妈的朋友,都这么直接?"
"她妈是方凝冰。"霜凝冰说。
林夏张了张嘴,然后点了点头:"懂了。"
沈念的加入让霜凝冰这边的团队又多了一个人。她擅长算法部分的教学设计,能把那些抽象的逻辑转化成孩子们能理解的故事。有一次她在课上讲二叉树的时候,用了一个"树洞传信"的比喻——每个节点是一个树洞,左边的洞住着比它小的动物,右边的洞住着比它大的动物。霜凝冰站在教室后面听的时候,想起很多年前程雪在沙溪用同样的方式讲递归——那时候她坐在那间破旧的教室里,用一只蚂蚁的寻路故事,把一个复杂的概念种进了一群孩子的心里。那些被种下去的概念穿过不同的气候和不同的土壤,最终都在同一片光线下长出了自己的叶子。
"你这个比喻,是谁教你的?"下课后霜凝冰问沈念。
沈念正在收拾教案,抬起头想了想:"没人教我。就是觉得这样讲孩子们好懂。"
霜凝冰没有接话。她站在教室门口看着沈念把教案一本一本叠好放回帆布包里,觉得那些不来自任何现成教案的比喻,本身就在替代码和其他事物之间架起一条新的链路。而那条链路不需要被完全理解,只需要被信任——信任它会把自己的含义传递到该去的位置。
第一百零八章:林夏和程舟的家
八月中旬的一个周末,林夏和程舟邀请霜凝冰去她们家吃饭。她们住在城北一片老小区里,楼层不高,窗台上摆着一排多肉。霜凝冰到的时候林夏正在厨房里炒菜,程舟在客厅里摆碗筷。厨房里正在飘出炝锅的香气,窗外的暮色正在把整片天空染成一种温润的淡紫色,像是有人正在用一个很大的范围框选所有的颜色,然后慢慢调整它们的饱和度。
"随便坐。"程舟指了指沙发,"林夏炒菜很快,马上就好。"
霜凝冰在沙发上坐下,环顾了一圈这个不大的客厅。书架占了一整面墙,上面排满了书,有些是她认识的,有些是没见过的。茶几上放着一盆正在开花的绿植,花瓣很小,是白色的,在暮色里泛着柔和的光。窗台上的那排多肉被养得很好,每一盆的叶子都很饱满,像是有人定期在替它们量土壤的湿度和光线的角度。
"你们养了好多植物。"霜凝冰说。
程舟在餐桌旁坐下来:"林夏养的。她说看到绿色的东西心情会好。"
霜凝冰想到自己家里那盆从程雪传下来的多肉,觉得它们之间隔着一整个国家的距离,却在暮色中共享着相同的养护习惯——每天早晨的日光、每隔几日的浇水,和那些在叶片边缘慢慢积累的细小灰尘。它们不需要见到对方,也能用同一套变量名记录自己的生长。
吃饭的时候林夏从厨房里端出一大锅炖菜,放在桌子中间,热气腾腾的。三个人围着那张不大的餐桌坐着,程舟给每个人盛了一碗饭。霜凝冰低头吃了一口,炖菜的味道很浓,香菇和鸡肉的香气混在一起,像是已经被火候熬了很久,每一种味道都落到了该落的位置上。
"你们每天都自己做饭?"霜凝冰问。
"大部分时候。"林夏夹了一块鸡肉放进程舟碗里,"有时候太忙了就点外卖。但周末会做一顿好的。"
程舟低头吃着碗里的那块鸡肉,没有说谢谢,也没有抬头,但她夹了一块香菇放进林夏的碗里。那两双筷子在餐桌上方交错了一个很短的瞬间,像是两条在同一段逻辑中交替运行的路径,各自完成了自己的任务。霜凝冰看着那两双筷子回到各自的位置,低头继续吃自己的饭。
"你们打算一直待在北京?"霜凝冰问。
林夏和程舟对视了一眼,那个眼神很短,短到如果不是一直在看几乎会错过——像是在一条已经运行了很长一段时间的循环里,不需要检查返回值,也知道每一次都返回相同的值。
"目前是。"林夏说,"等过几年也许换个地方。但还没想好。"
霜凝冰想起程舟说过的那句话——"你已经知道了"——那些不需要被重新确认的东西,正在这个不大的客厅里被两盏台灯的光映照着,被两双在餐桌上方短暂交错的筷子一次次确认着,不需要签名,不需要版本号,只需要继续运行。
那天晚上她走出林夏和程舟的家时,北京的夏夜正在慢慢降下它的温度。她走在路灯下面,看到自己的影子被拉得很长很长,在路面上向前延伸着,像是正在被这整座城市重新编译成一版更长、更完整的程序。她走在那条路上,那些在各个城市、各个时区里运行的代码片段正在以不同的速度抵达同一个终点——每一行都需要被放置在正确的位置上,才能一起编译出一个稳定的、能持续运行的系统。所有的报错和警告都有它们的意义,那棵被移植到窗台上的多肉正在缓慢地向光伸展,像是一段没有被正式命名却依然在运行的进程,在程序的边缘处安静地输出着自己的结果。
远处的地铁正从高架桥上驶过,车窗里的灯光连成一条移动的线,像是一行正在被连续读入的数据流,持续不断地向下一站传递着它的负载。她低下头,把双手插进外套的口袋里,继续往前走。路灯从她头顶依次掠过,每一盏亮起时她的影子都会重新出现一次,以同样的长度和同样的方向——像是每经过一盏灯,她就被重新确认一次,然后被重新传向下一盏。
第一百零九章:秋天的重逢
九月的一天,霜凝冰收到了周然的消息:"我到北京了。"
霜凝冰愣了一下,然后回了一句:"你来干什么?"
"省选过了。来面个试。"周然的语气隔着屏幕都能听出那股藏不住的笑意,"顺便来看看你。"
她们在霜凝冰办公室楼下的咖啡店见面。周然比上次见面的时候瘦了一些,头发剪短了,穿着一件新买的格子衬衫,整个人看起来比在沙溪的时候精神了不少。她坐下来第一句话是:"我过了。省队第4名。"
"恭喜。"霜凝冰把她的咖啡推过去,"那面试呢?"
"应该能过。是北京的一家公司,做教育产品的。"周然端起咖啡喝了一口,"如果过了,我明年就能来北京了。"
霜凝冰看着她,想起两年前在沙溪那个冬天,周然坐在小屋门口剥了一地的瓜子壳说"如果还不行,我就来陪你"。现在她不用"如果还不行"了。她拿着省队第4名的成绩,穿了一件新衬衫坐在北京九月的阳光里,像是终于绕过了那道她绕了四年的弯,停在了一个她可以暂时坐下歇脚的地方。
"那要是没过呢?"霜凝冰问。
"没过就再考。"周然放下杯子,转头看着窗外。窗外的梧桐叶子正在变黄,从叶尖的位置开始,慢慢地往叶柄的方向蔓延,"反正我已经学会怎么绕了。"
霜凝冰看着周然的侧脸,想起在沙溪那个晚上她说"绕着走"时的表情——那时候她不确定自己还能绕多久,但她还是在绕,用她的方式,保持着那些被多次重定向的请求,直到它们终于抵达了正确的端口。
那天下午周然去面试了,霜凝冰在办公室里等她。过了两个多小时她收到一条消息:"面完了。过了。"
霜凝冰看着那行字,在对话框里敲了三个字:"那明年见。"她发出去之后想了一会儿,又在后面加了一句:"你住的地方,我来找。"
周然回了两个字和一个感叹号:"行!"
霜凝冰放下手机,靠着椅背。窗外的阳光正在变斜,在桌面上投下一道被拉长了的金黄色光带,那些被她目送过的、也被目送着走向更远处的人,正在以各自的方式落回同一张地图上。而她们都还在这条路上,以不同的速度、沿着不同的分支,朝着同一个可以再次见面的位置前进。她不知道下一个循环会从哪里重新调用这段关系,也不知道在这个循环结束前她们还会并行多久——但只要那段代码还没有被注释掉,那些被写入日志的签名就依然有效。她侧过头,看着窗外的树影正在秋风中慢慢收拢成更短的线条,像是在为下一段即将开始的循环准备入口。
第一百一十章:周然的到来
周然正式搬到北京的那天,霜凝冰去火车站接她。周然拖着两个行李箱从出站口走出来,头发比夏天的时候又短了一些,穿着一件黑色的卫衣,帽子上印着一行小字:"Failed to compile."
霜凝冰看到她那个卫衣就笑了:"你故意的?"
"面试的时候穿的。"周然把行李箱推给她一个,"面试官看到这个笑了好久。"
她们打车回霜凝冰帮周然找好的住处——一间离办公室不远的小单间,窗户朝北,但阳光从楼缝里折射进来的时候还是能把房间照亮大半。周然把行李箱靠在墙边,在房间里转了一圈,然后说:"够住了。"
"你要是嫌小,可以再换。"
"不用。"周然蹲下来打开行李箱,"我在沙溪那个房间比这小多了。"
霜凝冰站在门口看着她蹲在地上整理东西的样子,周然的侧脸在午后的光线里显得比平时柔和一些,但她嘴角那道弧度还和以前一样——带着一种不管落在哪里都能把那里变成自己领地的笃定。霜凝冰想起在沙溪那个冬天,周然坐在小屋门口剥了一地的瓜子壳,说"如果还不行我就来陪你"。现在她不用陪了,她只是换了一个城市,继续走她的路,而那条路刚好和霜凝冰的路线重合了一段。
"你那个工作,什么时候入职?"霜凝冰靠在门框上问。
"下周一。"周然拿出一摞衣服放进衣柜,"还有三天,可以逛逛北京。"
"那你想去哪儿?"
周然停下手里的动作,转过头看着她:"我想去看你以前集训的地方。"
霜凝冰愣了一下:"那个训练基地?"
"嗯。你以前在那儿待了一个月,我想去看看。"
霜凝冰想了想:"那边现在可能进不去了。"
"那就站在外面看一眼。"周然转过身继续收拾东西,"看一眼就行。"
她们在周然入职前的那个周末,坐了一个多小时的地铁去了北京郊区的那片训练基地。基地的大门关着,门口的铁门已经有些生锈了,门卫室里没有人。霜凝冰站在那扇铁门外面,隔着栏杆看到里面那栋灰白色的楼,楼顶上那排空调外机还在那里,有几台已经锈得看不出原来的颜色了。楼前的空地长了一些野草,在初秋的风里轻轻晃着。
"就是这儿?"周然站在她旁边。
"就是这儿。"
周然没有说话。她站在那扇铁门前看了一会儿,然后拿出手机拍了一张照片。霜凝冰侧过头看着她拍完照把手机收起来的样子,没有问她为什么要拍这张照片——有些路不需要被解释,只需要被走过,被记住,然后在某天被翻出来看一眼,确认它还在。
她们在那扇铁门前站了不到十分钟,然后转身往回走。回去的地铁上周然靠着车厢壁闭着眼,像是睡着了又像是没有。霜凝冰坐在她旁边,看着窗外隧道壁上的广告灯箱一块一块地往后滑,那些快速移动的光影在车窗玻璃上留下断续的痕迹,像是一段被压缩了的时间正在以更高的帧率重播,里面藏着另一群在相同座位上坐过的人。
第一百一十一章:沈念与程舟的对话
沈念来了北京之后,和程舟走得越来越近。她们经常在中午一起吃饭,有时候是食堂,有时候是外面那家面馆。霜凝冰有几次路过的时候看到她们面对面坐着,沈念在说话,程舟在听,偶尔放下筷子回应几句,像是正在交换着某种不需要被第三方记录的信息。
有一天中午霜凝冰在茶水间接水的时候,听到林夏和程舟在隔壁的休息室里说话。林夏的声音很轻,像是怕被别人听到:"沈念是不是喜欢你?"
程舟那边沉默了一下:"不知道。"
"你不知道?"
"我知道她喜欢我。"程舟的声音还是那样平和,像是在陈述一件已经被确认过的事实,"但我还没想好怎么回应。"
林夏没有再追问。霜凝冰端着水杯站在原地,水已经接满了但她的手指没有移开杯沿,那些溢出来的水正沿着杯壁慢慢往下淌,在桌面聚成一小圈湿润的印记。她在心里过了好几遍要不要把水端走,但最后还是站在那里等着她们的话全部落下来,像在等一段完整的日志记录写入完成。
后来几天霜凝冰发现程舟和沈念之间的距离发生了一些微妙的变化——她们依然一起吃饭,但说话的频率变少了。沈念还是和以前一样,但程舟的回应变得更加谨慎,像是正在把每一句话都放在一个更高的精度下检查,确认它会在正确的节点被接住。霜凝冰没有问她们之间发生了什么,但她注意到林夏对这件事保持着一种很安静的关注,像是站在一个不远不近的位置上,没有介入,也没有完全移开目光。
有一天晚上加班,办公室里只剩下霜凝冰和程舟。程舟正在整理资料,霜凝冰在改一份教案。安静了一会儿之后程舟忽然开口,像是在把那句话从心里移到一个不需要再等待确认的位置:"我还没跟林夏说过,但我想先问问你。"
霜凝冰停下来看着她:"问什么?"
"你觉得,喜欢一个人和喜欢很多人,有区别吗?"
霜凝冰想了一下:"我不知道。但我猜对林夏来说,区别很大。"
程舟看着她,没有反驳也没有继续追问。她只是低下了头,像是一段被搁置在待处理队列中的任务,正等待一个不会影响主线流程的时机。霜凝冰没有再多问,她低下头继续改教案,觉得这个夜晚正在变得比预想中更漫长一些,像是程序被卡在一个意外的断点处,需要有人先决定跳过还是补全。
第一百一十二章:沈念的决定
十月末的一个下午,沈念敲开了霜凝冰办公室的门。她站在门口,手里拿着一封信,表情平静但那种平静底下像是正在运行着一组尚未稳定的线程。
"我跟程舟说了。"沈念坐下来,"她说她需要时间。"
霜凝冰看着她:"那你打算怎么办?"
"我等。"沈念把那封信放在桌上,"等她想好了,告诉我结果。不管是什么结果,我都接受。"
霜凝冰看着那封信,信封是白色的,上面没有写名字。沈念没有拆开它,只是把它放在了桌角,那个动作像是在传递一个已经被确认过完整性的数据包,等待接收方自行解压。她不知道自己该说什么。她想说"你很勇敢",但觉得那句话太轻了。她想说"也许她会选你",但她不确定那是不是对的。最后她只是说了一句:"那你等的时候,还在北京吗?"
"在。项目还没做完。"沈念站起来,"而且,我也没别的地方想去。"
沈念走之后霜凝冰坐在办公室里,看着桌角那封信。她没有碰它,但她知道它在那里,像是一个正处于等待状态的任务,正在被某个她看不见的调度器默默排列着,等待着它被唤醒的那个时刻。
那天晚上她回去之后给方凝冰打了一个电话,告诉她沈念的事。方凝冰听完沉默了一会儿,然后说了一句:"沈念一直都是这样的人。决定了的事,就会等到底。"
"那程舟呢?"
"程舟我不知道。"方凝冰的声音从电话那头传来,"但我认识林夏。她知道该怎么做。"
霜凝冰没有追问。她把手机放在桌上,靠着椅背看着窗外,觉得这些正在发生的事正在慢慢形成一个新的结构——那些她以前以为只是单线程运行的故事,原来都在以各自的频率并行着。每一个线程都在等待自己的锁被释放,都在用不同的优先级争夺同一个资源,而调度器正在以不可见的方式替它们寻找平衡。霜凝冰关掉台灯,在黑暗中坐了一会儿,那个被安置在桌角的信封正在程序外部等待,像是一行被注释掉的语句,还没有被编译,但已经写好了完整的分号。
第一百一十三章:林夏和程舟的对话
十一月的一个周末,霜凝冰接到了林夏的电话。电话那头林夏的声音听起来有些不一样,像是一段正在被重构的代码,结构还没定下来,但边界条件已经隐约成型了:"你在家吗?"
"在。"
"我能来坐一会儿吗?"
"来吧。"
林夏到的时候手里拎着一袋橘子,放在茶几上然后坐下来。她没有说话,只是安静地坐着,像是在等待自己先组织好那些话的结构,再用正确的顺序把它们逐个放出来。霜凝冰坐在她对面,没有催她。
过了很久,林夏开口了:"程舟说她喜欢沈念。"
霜凝冰看着她,等她继续。
"她说她也还喜欢我。"林夏拿起一颗橘子开始剥,像是在借助那个动作让自己继续说下去,"她问我能不能接受。"
"那你怎么说?"
林夏剥完了那颗橘子,掰了一瓣放进嘴里,嚼了很久才咽下去:"我说我不知道。我说我需要时间想。"
霜凝冰没有回答,只是安静地坐着等她把橘子吃完。林夏吃了一瓣又一瓣,直到那颗橘子全部吃完之后才抬起头来:"你说,两个人在一起七年,还能不能接受第三个人?"
霜凝冰想了想:"我不知道。但我觉得,不管你能不能接受,都不代表你之前的七年是错的。"
林夏没有说话。她把橘子皮放在桌上,又沉默了很久,然后说了一句:"谢谢。"她站起来,走到门口的时候停了一下,没有回头:"我先回去了。"
霜凝冰站在门口看着她走下楼梯。楼梯间里的声控灯亮了一下又灭了,像是一段短暂的信号被发送出去之后,正在等待对方的确认帧。
第一百一十四章:程舟的选择
那之后的一段时间里,办公室的气氛变得微妙。林夏和程舟依然一起上下班,依然在同一个会议室里讨论方案,但她们之间的话变少了。那种减少不是因为冷漠,更像是一种正在被重新校准的距离——像是两台正在协商连接参数的设备,正在用逐步试探的方式确认彼此的版本号是否兼容,调整着共享内存的大小和超时时间,直到确认信号强度足够稳定才会继续向前推送。
沈念依然每天来办公室,但她不再和程舟单独吃饭。霜凝冰有时候看到她们在走廊里擦肩而过,沈念会先停一下,像是要说什么,但最后只是点一下头,然后继续往前走。那种欲言又止的瞬间像是一段已经被格式化的文本,在读入前就被截断了,只留下一个不完整的头部。
有一天晚上霜凝冰加班到很晚,出来的时候看到程舟一个人坐在楼梯间的台阶上。程舟手里没有拿手机,也没有看书,只是安静地坐着,像是在等某段还没有返回结果的请求,等那个状态从"pending"变成"resolved"。霜凝冰在她旁边坐下,没有问她怎么了。她们并排坐了一会儿,楼梯间的灯时亮时灭,像是有人在远距离地控制它的状态。
"我选了。"程舟忽然开口。
霜凝冰侧过头看着她。
"我选了林夏。"程舟的声音很轻,但每一个字都像是已经被反复确认过多次,"不是因为她更好,是因为她已经在我的代码里待了七年,我已经习惯了和她的变量名同步——即使中间插入了新的模块,根目录的调用关系也无法被重写。"
霜凝冰没有说话。她坐在那级台阶上,看着程舟的侧脸被楼梯间的灯光照得明暗交错,像是在用整个身体承载着一行还未被正式执行的语句。程舟转过头看着她:"你能帮我跟沈念说一声吗?"
"你自己说。"
"我开不了口。"
霜凝冰想了一会儿,然后说:"那你写一封信。写完我帮你送。"
程舟看了她一眼,没有说好也没有说不好。那盏声控灯又灭了,她们在黑暗中坐了一会儿,直到脚步声从楼下传来,灯重新亮起。
第一百一十五章:沈念的信
霜凝冰把程舟的信送到沈念手里的时候,她正在办公室里整理教案。沈念接过信,看了一眼信封上的字迹,没有当场拆开。她只是把信放进了抽屉里,然后说了一句:"我知道了。"
霜凝冰站在她面前,觉得应该再说点什么。但沈念先开口了,她说:"不用安慰我。我已经想过了,不管她选谁,我都能接受。只是需要一点时间。"
霜凝冰点了点头,转身走回自己的工位。走到一半她停下来,回过头看着沈念的背影。沈念正坐在那里低头看教案,和平时没有任何区别。但她一直没有打开那个抽屉。
第二天早上霜凝冰到办公室的时候,沈念已经在了。她坐在自己的工位上,面前摊着那封信,已经拆开了,信纸放在桌面上,边角被压得很平整。她看到霜凝冰走进来,抬头说了一句:"我没事。"
霜凝冰走到她旁边,看了看那封信。信纸上的字不多,她隔着一小段距离能看到几行——"对不起"、"谢谢你"、"希望还能是朋友"。沈念把信折好放回信封里,放进了那个她用来装文件的风琴包里,像是把它归档到了应该存放的位置。
那天中午沈念去食堂吃饭的时候,路过程舟的工位,经过的时候停了一下,然后继续走了过去。霜凝冰看到程舟的手指在键盘上停了一拍,然后又继续敲下去。像是那条短暂停的指令正在被执行,在这段重新连接的通道中,等待双方的确认包到达之前先行进入一个低功耗的待机模式,直到下一个唤醒信号抵达。
第一百一十六章:林夏的橘子
又过了一周,有一天下午霜凝冰路过会议室的时候,看到林夏和程舟正坐在里面。林夏在剥一颗橘子,程舟坐在旁边看着。她们没有说话,但林夏剥完之后把橘子分成两半,把大的那一半递给了程舟。程舟接过去低头吃了一瓣。那个动作和她们在一起的时候一模一样,像是中间那些犹豫的环节都已经被跳过了,执行体直接回到了最初正确的分支。
霜凝冰站在门口没有进去,走开了。她知道有些东西不需要被确认,就像那两扇已经重新对齐的窗,即使曾经被错位地打开过,它们闭合的位置仍然会重叠于同一道窗框。程舟的变量名已经被检查了一遍,她决定保留主分支。沈念的请求被写入了日志,以失败状态结束,但那个被注释掉的函数调用仍然存在于代码库中,等待某一天再次被编译。而林夏的橘子,正在用同样缓慢的方式把那段已经被错误改写的状态恢复成最初的版本。
那天晚上霜凝冰收到了沈念的消息,只有一句话:"我下个月回上海。这边项目结束了,我那边还有事。"
霜凝冰看着那行字,打了几个字又删掉,最后只回了一句:"那到时候送你。"
沈念回了一个"好"。
霜凝冰放下手机,走到窗边。外面的风已经把落叶吹出了新的形态,每一片都正沿着自己的轨迹缓慢变形、褪色、最终沉进泥土。她不知道沈念回去之后还会不会再回来,但她知道她说过的话已经在那个风琴包里被归档了,正在以不可逆的方式被新数据覆盖。而那些被覆盖过的扇区,即使被新数据填满,表面已经看不出旧痕迹,但只要用足够深的扫描方式,依然能追踪到残留的磁信号。它们不会消失,它们只是以更低的可读性存在于系统的底层。她不确定下一次有人试图读取那个地址时,还能不能顺利解码出完整的信息,但她知道那片区域已经被写保护了。
第一百一十七章:新的循环
周然入职之后,来办公室的次数渐渐多了起来。她的公司离得不远,午休的时候偶尔会过来蹭饭。有一次她带了一袋自己烤的饼干,分给办公室里的每一个人。林夏接过饼干的时候说了一句"你还会烤饼干",周然说"在沙溪跟霜凝冰学的",然后指了指霜凝冰:"她教我的。"
霜凝冰正在改文档,抬起头来:"我只教过你烤焦的。"
"那也比没有强。"
季航有时候也会来。他来的频率不高,但每次都会待一个下午,坐在窗边看资料。有一天霜凝冰走过去的时候看到他在看一本关于手语和编程语言交叉研究的书,她在旁边站了一下,季航抬头看了她一眼:"你对这个感兴趣?"
"有点。"
"那这本书看完借你。"
她们坐在窗边的那张桌子两侧,季航看他的书,霜凝冰改她的教案。窗外的光线正在慢慢变斜,把桌面上的书页晒得微微发烫。楼下那棵槐树的叶子在风里翻动着,像是在一页一页地翻着那本霜凝冰还没有读到的书。
那天晚上林夏提议大家一起去吃火锅。她们去了学校附近一家老店,店面不大,但锅底很香。围着圆桌坐了一圈,林夏和程舟坐在一边,霜凝冰和陆远坐在另一边,周然坐在霜凝冰旁边,季航坐在陆远旁边,沈念坐在季航旁边——像是被随机排列但最终恰好收敛的坐标,各自在正确的节点上。锅里的汤正在翻涌,热气升起来模糊了对面的人脸,那些正在被烫熟的食物像是新的数据点,正在等待被采样、被标注,然后被送进那台看不见的模型里进行下一轮训练。
"沈念,你走之前,咱们再聚一次。"林夏夹了一片毛肚放进程舟碗里。
沈念低头吃了一口菜:"行。等你们有空。"
"下周末怎么样?"
"好。"
霜凝冰坐在陆远旁边,看着她们在热气中交谈。那些声音隔着锅里的咕嘟声传来,有时清晰有时模糊,像是正在被锅底的热量重新编码。她侧过头看了看陆远,他正在低头往锅里下菜,动作不紧不慢,像是正在用一段很熟悉的函数处理一个很常规的输入。时间在她们之间缓缓流动,带着新的循环不断进入,也带着旧的数据不断退出。但锅底始终保持着正确的温度,它知道什么时候该翻滚,什么时候该静置,什么时候该在新的菜叶落下去之前,先把上一次的残渣清理干净。
霜凝冰夹起一片烫好的土豆放进自己碗里,低头吃了一口。那种熟透的软糯在舌尖散开,带着锅底里所有食材混合后的余味。那些余味正在被人记录、整理、压缩,等着被写入下一段日志,而那棵槐树还在窗外——在她看不见的地方继续长着,以一种她可能永远无法完全理解的方式,向光伸展着每一片新叶,像是它的内部正在运行着一个不需要报错、不会中断、从第一次通电就从未停止过的长循环。而她正坐在那个循环的边缘,用筷子夹起一片被烫得刚刚好的土豆,在这个循环还没有抵达下一个节点之前,先把自己这一行输出记录完毕,然后等着它再次回到这个位置。窗外有风经过,她感觉到那片新叶正在以极慢的速度向外展开它的第一页。
第一百一十八章:楚南弦
那年冬天,霜凝冰的团队接了一个新项目——和一所北京郊区的学校合作,给那里的学生上编程课。学校在昌平,坐地铁要一个多小时,出了站还要走一段路。霜凝冰第一次去的时候是跟着林夏一起的,到了校门口看到那栋三层的教学楼,外墙有些旧了,但操场很大,阳光照在塑胶跑道上把整片地面晒得暖融融的。
合作学校那边的对接人是一个年轻的男生。霜凝冰到的时候他正站在操场边上打电话,远远地看到林夏就挂了电话走过来。他看起来年纪和她们差不多,戴着一副细框眼镜,穿着一件浅灰色的羽绒服,外套拉链拉到一半,露出里面的白色毛衣。他走过来第一句话是:"你们好,我是楚南弦,洛谷ID MrChu2145_AkIOI。"
霜凝冰听到那个ID的时候愣了一下。她以前在洛谷上见过这个名字,印象中是某次月赛的榜首,代码风格干净利落,题解写得也清楚。但她没想到他会出现在这里——北京郊区一所合作学校,穿着一件半拉开的羽绒服,站在冬天的阳光下跟他们打招呼。
"你认识我?"楚南弦看着她的表情,笑了一下。
"洛谷上见过。"霜凝冰说,"你月赛那套题解写得很好。"
"那套题我改了三遍才发。"楚南弦转身领她们往教学楼走,"你们做教育的?我听林夏提过。"
霜凝冰跟在他身后走进教学楼,走廊里很安静,光线从窗户照进来把地面照得发亮。楚南弦边走边给她们介绍学校的机房配置、学生的基础情况和上课时间安排。他的语速不快不慢,偶尔侧过头确认她们有没有跟上,像是已经习惯了在两种身份之间切换——一个是竞赛圈里写出漂亮题解的选手,一个是站在教学楼的走廊里替别人铺路的老师。
"机房在三楼,有二十台电脑,大部分还能用。"楚南弦推开一扇门,"你们看看合不合适。"
霜凝冰走进机房扫了一圈。电脑确实有些年头了,但屏幕还能亮,键盘的触感也还能接受。她走到窗边看了看外面的操场,阳光从窗户照进来在她的笔记本上落下一块明亮的方形光斑。她转回身,看到楚南弦正在弯腰检查一台电脑的主机,动作不急不躁,像是在用自己的节奏为接下来的所有工作搭建一个稳定的基底。
"你觉得怎么样?"林夏问她。
"挺好的。"霜凝冰说,"可以开始。"
第一百一十九章:关于楚南弦的事
楚南弦不只是对接人。
他每周会来和他们一起上课,不是作为旁听,而是作为助教。他坐在教室后排,学生有不懂的地方他会上前弯下腰,指着屏幕轻声解释。霜凝冰有一次下课之后在走廊里看到他正蹲在一个学生旁边,那个学生写了一段代码一直跑不通,楚南弦没有直接帮他改,而是一行一行地问她"你觉得这一步想做什么""那下一步应该是什么"。那个问法和她自己习惯的方式很像——不是替对方走完路,是陪他们一起找到路在哪。
有一次周末办公室只有霜凝冰一个人在加班。她正在改教案,忽然听到门口有声音,抬头看到楚南弦站在门口,手里拎着两杯咖啡。
"路过。"他把一杯放在她桌上,"顺便看看你们办公室什么样。"
霜凝冰看了一眼那杯咖啡,杯壁上写着她的名字,字迹端正,像是特意写了上去的:"你怎么知道我在这儿?"
"林夏说的。"楚南弦在旁边的椅子上坐下来,环顾了一圈办公室,"这地方不错。"
"还行。就是冬天有点冷。"
楚南弦没接话。他坐在那张椅子上安静地看了一会儿窗外的树,冬天的光秃枝丫在灰白的天空里显得格外清晰。霜凝冰低头继续改教案,但余光偶尔会扫到他坐在那里安静地坐着的轮廓,像是一段不需要占用太多资源的后台进程,正在安静地等待下一轮调度。
"你以前在洛谷上,写过一篇关于'回声'题的题解。"霜凝冰忽然开口。
楚南弦侧过头看着她:"你看到了?"
"看到了。写得很好。"
"那篇题解,我是看了你妈的题才写的。"楚南弦说,"方糖那篇'回声'题,我一直觉得是我见过的最好的构造题。"
霜凝冰停下笔,抬头看着他:"你认识我妈?"
"不认识。但我在OI圈子里听过她的名字。"楚南弦的目光落在窗外的树枝上,"那篇题解写完之后,我本来想联系她问几个问题,但后来想想觉得可能会打扰。没想到有一天会在昌平的教室里遇到她女儿。"
他的目光从树枝上移开,落在霜凝冰的桌面上,像是在用一道很轻的、不需要被加载完全的请求替那个没有发送出去的消息完成最后一次编译:"你比你妈写代码的时候温和一些。她的风格比较锋利,你是圆润的。"
霜凝冰不知道该怎么接这句话。她低着头把那杯咖啡端起来喝了一口,杯沿的温度透过纸杯传到她指尖,像是窗外那些还没化完的冬雪正在隔着杯壁向她渗透着冬天深处的凉意和余温。
第一百二十章:昌平的课
昌平的课在每周三下午。霜凝冰和楚南弦会在校门口碰面,然后一起走到三楼的机房。十一月的风已经很冷了,从地铁站出来到学校那一段路没有遮挡,每次走完霜凝冰的耳朵都会冻得发红。楚南弦有一天带了一副备用的耳罩给她,淡灰色的,绒布材质,放在纸袋里挂在机房门口的挂钩上。
"你耳朵冻红了。"他说。
霜凝冰看着那副耳罩,没有问"你什么时候买的"或"你怎么知道我会冷",只是拿起来戴上了。耳罩内侧的绒布很软,贴在耳朵上慢慢变得暖和。那种从耳尖开始蔓延的暖意像是一段正在被缓慢加载的缓存,正在把冬天的数据逐一写入正确的位置。
那天的课上得比往常顺利一些。学生们已经能独立写出简单的循环了,有一个男生甚至自己摸索着写了一段判断闰年的代码。霜凝冰站在他身后看他写完,楚南弦也走过来看了看屏幕,然后说了一句:"边界条件加一个负数的判断就更完善了。"那个男生点了点头,低头改了一下,再跑一遍,通过了。他抬起头的时候眼睛亮了一下,楚南弦拍了拍他的肩膀。
下课后她们一起走出学校。暮色正在降临,把操场的轮廓染成一种介于灰和蓝之间的颜色。霜凝冰戴着那副耳罩走在楚南弦旁边,两个人之间隔着一小段距离。远处的地铁高架桥正在暮色中亮起一盏一盏的信号灯,像是一串正在被依次赋值的变量,沿着铁轨的方向往下一站传递着相同的值。
"你每周跑这么远来上课,累不累?"楚南弦问。
"还好。"霜凝冰把耳罩往下拉了拉,"习惯了。"
"那要是以后不来了呢?"
霜凝冰侧过头看了他一眼。路灯已经亮了,在他的侧脸上投下一层暖黄色的光,把眼镜的边框镀成了很浅的金色,像是有人正在替那个轮廓装订一道不显眼但持续存在的索引。
"还没想那么远。"霜凝冰说,"先把这学期的课上完。"
楚南弦没有再说话。她们走到地铁站口的时候他停了一下,把一袋东西递给她。那袋东西不大,里面装着两个还带着余温的烤红薯,热气和纸袋的摩擦声正在从袋口往外渗。
"路过那家店买的。"他说,"冷了就不甜了。"
霜凝冰接过来的时候隔着纸袋摸到红薯的烫,那种温度恰好不会被灼伤,也不急着冷却,像是这段对话本身被保存在一个恰好不会溢出也不会崩溃的缓冲区里。她抬头看了他一眼。楚南弦没有等她道谢,已经转身沿着街道往另一个方向走了,步伐均匀,像是刚刚提交了一个不需要返回值的函数调用,然后继续执行下一行。路灯正在依次亮起,他的影子在每一盏灯下重新出现一次,以同样的长度向同样的方向延伸,直到下一盏灯再次把它重置。
霜凝冰站在地铁站口,手里握着那袋烤红薯。她低头看了看纸袋上被热气洇出的水痕,慢慢成了一圈浅褐色的印记,像是一笔已经干了、但还没被正式命名的签名。然后她走下台阶,那袋红薯在她手心里散发着稳定的温度,正在以均匀的速度沿着手掌的弧线把她整只手渐渐焐暖。
第一百二十一章:红薯的温度
那袋红薯被霜凝冰带回了办公室。她推开办公室的门,看到林夏还在里面改东西。林夏抬起头看了她一眼,目光落在那袋红薯上,语气里有掩饰不住的好奇:"你买的?"
"楚南弦给的。"
林夏的表情变得微妙起来,她放下笔,靠进椅背里,下巴朝那袋红薯的方向轻轻扬了一下,像是在用那个动作替她把还没说出口的话先标出来:"他给你带红薯,还送你耳罩?"
"耳罩是挂在机房门口的。"
"那红薯呢?"
霜凝冰想了想,在林夏对面坐下来,把红薯剥开一半递过去,林夏接过去咬了一口,嚼了嚼,点点头说:"甜。但他这个人,一般不会给人带东西。"她拿着红薯停顿了一下,"你跟他,认识了多久?"
"不到一个月。"
"那你大概不知道他以前什么样。"林夏看着窗外,像是在查一个很久没有调用的旧记录,"他以前在洛谷上只发题解不发动态,线下活动从来不参加,有人找他组队他会说'我再看看'然后就不回消息了。他在那个学校当对接老师已经一年了,但我从来没有见过他给任何人带过红薯。"
霜凝冰没有说话,低头看着自己手里剩下的那半红薯。热气还在从薯肉的切面升起来,在微凉的空气里凝成很细的白雾,像是正在用自己能看到的速度替代她来叙述那些还没有被正式记录的过程。林夏也没有再说下去,她吃完那一半之后拍了拍手:"行,我不问了。"她站起来走回自己的工位,路过霜凝冰身边的时候停了一步,像是想说什么但最后只是把手搭在她的椅背上轻轻按了一下,像是正在为那段还处于测试阶段的进程设置一个断点,让她自己在运行时决定是否要启用。
那天晚上霜凝冰回去之后,把耳罩放在书桌上,没有收进柜子里。那副淡灰色的耳罩安静地躺在台灯旁边,绒布表面在灯光下泛着温暖而均匀的光泽,像是一个已经被提交、正在等待代码审查的请求,没有被合并,也没有被退回,只是待在那里,等着某一天被她正式批准或拒绝。她不知道那道边界会在哪里被划定,但她能感觉到它正在被定义,以一种缓慢的、逐行的方式构建着。
第一百二十二章:陆远看到耳罩
陆远看到那副耳罩是在一个周末。他来霜凝冰家送资料,进门的时候目光在书桌上停了一下。那副淡灰色的耳罩放在台灯旁边,和键盘并排立着,像是一行没有被注释掉的常量声明,占用着很小但不可忽略的内存空间。他看了一眼没有问,把资料放在桌上,在沙发上坐下来,像是正在等待一个能够被自然引入的话题节点。
霜凝冰给他倒了一杯水,在他旁边坐下。陆远接过水杯,低头喝了一口,然后说:"新的?"
"嗯。楚南弦给的。"
陆远点了点头,没有追问。他端着那杯水安静地坐了一会儿,像是在等一个函数返回一个确定的值。霜凝冰坐在旁边,感觉空气里有一小段沉默正在缓慢地伸展,像是正在被编译器解析并寻找合适的中断点。她先开口了:"你想问什么?"
陆远把水杯放在茶几上,杯底与桌面接触时发出轻微而平稳的声响:"你们在一起了?"
"没有。"
"那他在追你?"
霜凝冰想了一下:"我不知道。但他给我带了红薯,还有耳罩。"
陆远的嘴角动了一下,像是一个被抑制住的短循环正在尝试重新初始化:"那他应该是在追你。"
霜凝冰侧过头看着他,他的侧脸在台灯的光里显得很清晰,下颌线的轮廓和多年前她在昌平的地铁站口看到他的时候相比没有太大变化,只是多了一些已经不需要再被解释的确定性。像是两个正在同一张图上运行的指针,各自沿着自己的路径往前遍历,偶尔在某个节点上短暂地相邻,但始终没有指向同一个地址。
"你呢?"霜凝冰问。
陆远没有说话。他低头看着自己放在膝盖上的手,指节微微弯曲着,像是在重复一个已经被执行了很多次的指令序列。过了一会儿他站起来:"我回去了。资料你慢慢看。"他走到门口的时候换好鞋,手搭在门把手上,停顿了一下:"他想追你,是他自己的事。你选谁,是你自己的事。"
他说完没有回头,推开门走了出去。霜凝冰坐在沙发上听着他的脚步声在走廊里越来越远,那脚步声沿着楼梯往下延伸,穿过每一级台阶,穿过一楼的门厅,直到彻底消失在外面的夜色里。她不知道自己刚才那段对话的返回值会是什么,她只知道他们都在等,而程序还没有进入那个分支。
第一百二十三章:跨年的邀请
十二月末,楚南弦在微信上给霜凝冰发了一条消息:"跨年有空吗?学校那边有一个小活动,我和几个朋友会去。你要不要也来?"
霜凝冰正在办公室里写年终总结,看到那条消息的时候手指停了一下。她把手机放在桌面上看了十几秒,直到屏幕自动暗下去,然后拿起手机回了一个字:"好。"
跨年夜那天北京很冷。霜凝冰到的时候天已经全黑了,那所学校周围的路灯稀疏,校门口挂着一串红色的小灯笼,在风里轻轻晃着,像是用不稳定的电压点亮了一行还在等待被赋值的字符串。楚南弦在门口等她,穿了一件黑色的羽绒服,围着一条深蓝色的围巾,手里没有提任何东西,只是在看到她的那一瞬间弯了一下嘴角。那一个弯起的角度刚好够她在路灯的光里辨认出来,像是在正式信号到来之前先发了一个短得几乎不会被注意到的握手包,确认双方的时钟已经同步。
"进来吧,里面暖和。"楚南弦侧身让开门。
活动在学校的活动室里,不大,但收拾得很温馨。墙上挂了一些彩带和气球,几张桌子拼在一起放着零食和饮料。霜凝冰认出了几个之前上课时见过的学生家长——她的脸在彩灯的映照下显得柔和而陌生,那些正在飘动的彩带像是正在被一个低延迟的进程持续刷新着位置,每一次微小的偏移都在更新整个页面的渲染结果。
"这些是你做的?"霜凝冰指着那些彩带。
"不是。是学生家长们布置的。"楚南弦递给她一杯热茶,"我就是提供场地。"
活动室里的气氛很松散,孩子们在角落里玩桌游,大人们在另一侧聊天。霜凝冰端着那杯热茶站在窗边,暖气从脚下的地暖渗透上来,包裹着她的脚踝。楚南弦站在她旁边,隔着大约一臂的距离,像是一段正在等待用户指令的模态对话框,不会主动弹出,但也不会自动关闭。
"你以前跨年都怎么过?"楚南弦问。
"大多时候在家。有时候和周然她们聚一下。"
"那今年怎么想来这儿?"
霜凝冰侧过头看着他。彩灯的光落在他的侧脸上,把他的轮廓染成一种温暖的、不刺眼的颜色。她想了想,然后说:"因为你说有活动。"
楚南弦没有接话。他安静地站了一会儿,没有转向她,只是保持着那个姿势,像是正在等待那段刚刚被写入的对话被确认。然后他伸出手,碰了一下她放在窗台上的指尖。那个动作很短,短到她几乎没有来得及判断那是有意还是无意的,像是一段被压缩到了极致的信号,只传递了一个比特的信息就终止了。她的手没有动,但她的心跳在那一个比特的位置停了一下,像是正在等待后续的帧来确认整个包的内容是否完整。
活动结束的时候已经快凌晨一点了。霜凝冰和楚南弦走在校门外那段没有路灯的路上,月光很淡,勉强能看清路面。楚南弦走在靠外侧,把她护在内侧。她们走了一会儿,楚南弦开口了:"我问你一个问题,你别急着回答。"
"好。"
"你之前那副耳罩,还在用吗?"
霜凝冰停了一下,然后说:"在用。"
楚南弦没有继续问。他像是刚刚收到了一个他想要的确认,只需要一个确认。她们继续走完那段路,到了地铁站口。他站住,霜凝冰也站住。她们之间隔着不到一步的距离,像是正在测试两个指针在相邻地址上的读写权限。
"我送你下去。"楚南弦说。
"不用了,你回去吧。"
楚南弦看着她,没有坚持。他点了点头,然后在她转身往楼梯下走的时候说了一句:"那明年见。"
霜凝冰在楼梯上停了一下,侧过头看了他一眼。他站在路灯下面,手插在口袋里,围巾被风吹起来一点,又落下去。她站在台阶上,光线恰好把她的轮廓切出一道细长的边缘,像是有人正在用一个低精度的阈值把她从背景中分离出来,再存进一个独立的图层。
"明年见。"她说。然后她走下台阶,进了地铁站。地铁的车厢里空荡荡的,她靠着车门站着,玻璃窗外的隧道壁正在以稳定的速度向后滑去。她低头看了看自己的手指——刚才被楚南弦碰过的那只——和任何一只手指没有任何区别,但她觉得那根手指现在正在以极慢的速度向掌心收拢,像是正在悄悄完成一个本不需要被执行的指令。
第一百二十四章:周然的分析
周然知道这件事的时候,已经是元旦后了。霜凝冰在办公室跟她说起跨年夜的事,周然听着听着放下手里的饼干,表情变得专注,像是在解析一段结构复杂但逻辑可预期的输入数据。
"他碰你的手了?"
"嗯。"
"你收回来没有?"
"没有。"
"那就对了。"周然重新拿起饼干咬了一口,"你没收回来,他就知道可以继续。"
霜凝冰坐在她对面,靠着椅背:"继续什么?"
"继续追你啊。"周然嚼着饼干,语气里有种事不关己的坦荡,"不然你以为他为什么要给你带红薯、送耳罩、跨年邀请你去他那边?他不就是想离你近一点。"
霜凝冰没有反驳。她低下头,看着自己放在桌面上的手指,像是正在检查一段已经写完但还没有运行过的代码,看它在被编译之前还会不会出现新的报错。
"那陆远呢?"周然放下饼干,"他知道吗?"
"知道。他看到耳罩了。"
"他什么反应?"
"他说那是他自己的事。"
周然看了她一眼,眼神里多了一层正在分析边界条件的意味:"他这是在等。他不想逼你,但也不想退出。"
霜凝冰没有说话。办公室里很安静,只有暖气在墙角发出低沉的嗡鸣。窗外正在下小雪,细碎的雪粒贴在玻璃上,化成水珠,沿着窗面慢慢往下淌。那些水珠正在沿着各自不规则的路径汇入同一道窗槽,像是每条路径最终指向的出口都是相同的,只是途经的坐标各有不同。
"那你呢?"周然问,"你选谁?"
霜凝冰看着窗外那片正在变白的天空,想起陆远在楼梯间里那句"你选谁是你自己的事",也想起跨年夜楚南弦碰她手指时的温度。后者像一条还没有执行但已经被写进代码分支的调用,前者则像一个已经被声明但尚未赋值的变量,正以两种不同的初始化方式在同一个命名空间里等待编译器的裁决。
"我没选。"她说。
"那你打算什么时候选?"
霜凝冰转过头看着周然。周然正在用纸巾擦手指上的饼干屑,动作不紧不慢,像是那道边界条件她已经从外部确认过了,正在等核心逻辑自己做出判断。
"等我先想清楚自己想要什么。"霜凝冰说。
周然把纸巾丢进垃圾桶:"那你可得快点。那两个人都不是会一直等的人。陆远不会催你,但他会在某个时候自己走开。楚南弦不会逼你,但他也会在某天停下来,不再靠近。"
她说完站起来走到窗边,背对着霜凝冰,看着窗外那些正在不断落下的雪粒:"我不是让你选谁。我是让你别让两个人一起走了。"
第一百二十五章:楚南弦的课堂
那之后的一周,霜凝冰和楚南弦的相处方式没有太大变化。她们每周三还是会在昌平的校门口碰面,还是一起走到三楼的机房。但霜凝冰注意到了一些以前没有留意的细节——比如楚南弦走在外面侧的时候会放慢脚步等她跟上来,比如他会在她低头看教案的时候先一步推开门,比如他在上课的时候偶尔会侧过头看她一眼,那一眼很短,短到不仔细看根本不会注意到,但它确实存在,像是一段被定时轮询的进程,每隔一段时间就会检查一次某个值是否发生了变化。
有一天课间,一个学生跑过来问楚南弦问题。楚南弦蹲下来和那个学生平视,听她说完之后拿起笔在纸上画了一个简图。霜凝冰站在不远处看着他和那个学生说话的侧脸,看着他认认真真地画完一条路径之后抬起头问那个学生"你觉得这样对吗",声音温和而有耐心。那个学生点了点头,楚南弦笑了一下,把纸折好递给她:"那你自己再写一遍。"
那个学生跑开之后霜凝冰走过去在他旁边坐下来。他侧过头看了她一眼,目光落在她耳朵上——那副耳罩她已经戴上了,淡灰色的绒布衬着她外套的颜色,像是有人替她选过才带出来。
"暖和吗?"楚南弦问。
"暖和。"
楚南弦没有再说话。他低头继续在纸上写东西,笔尖在纸面上发出的细碎声响和窗外风吹过树枝的声音混在一起。霜凝冰坐在他旁边,看着窗外那些正在晃动的枝条,又侧过头看了看他的侧脸,他正低头写东西的轮廓在那间安静的机房里看起来比平时更柔和一些,光线落在他的镜片上,反射出一小块白色的光斑,像是一个被格式化但还没有被写入数据的扇区。
她想起周然说的那句"你得快点"。但她没有加快速度。她只是坐在那间机房里,和楚南弦一起看着窗外风正在把那些光秃的树枝形状反复修改,看着那些被修改的形态在冬天的光线里缓慢地解冻、分化、长出新的分叉——像是整棵树正在用我们看不见的方式,提前存储着春天需要的数据。
第一百二十六章:陆远的沉默
冬天快结束的时候,陆远开始不常出现了。他不再周末来霜凝冰家送资料,不再在微信上发那些简短的消息。霜凝冰有一次在办公室楼下遇到他,他正从便利店出来,手里拿着一瓶水。他看到霜凝冰,停了一下,然后点了点头,像是对一个熟人做一个简短的状态确认,然后继续往前走。
霜凝冰站在原地,看着他走远的背影。他走路的节奏没有变化,速度没有变化,背挺得很直,像是正在用一段已经稳定运行了很久的代码,持续输出相同的值,不报错,不警告,只是安静地执行着。霜凝冰发现自己有那么一会儿读不出那段代码的意图了。
那天晚上她给陆远发了一条消息:"你最近在忙什么?"消息发出去之后过了很久,久到她以为不会收到回复了,屏幕才重新亮起:"在忙一个开源项目。想趁着这段时间把内核模块重写一遍。"霜凝冰看着那行字,觉得这不是她想要的回复,但她不知道她想要的回复是什么样的。她打了几个字又删掉,最后只回了一个"好"字。
那之后不久,林夏在一次吃午饭的时候问霜凝冰:"你和陆远怎么了?"
"什么怎么了?"
"他很久没来我们这边了。"林夏夹了一块鱼放进自己碗里,"以前他隔三差五就会来一次,现在好像消失了。"
霜凝冰低头吃饭,想了想该怎么回答:"他没消失,只是……可能在忙。"
林夏看了她一眼:"他在忙他自己的事,这件事我明白。但他在忙什么,你心里清楚。"
霜凝冰没有接话。她低头看着碗里的饭,米粒在灯光下泛着细碎的光点,像是正在被一个她看不见的算法逐一访问、提取特征,然后写入一个新的日志条目。林夏也沉默了下来,霜凝冰知道陆远在等什么——他在等她给一个答案,哪怕那个答案是他不想听到的。而楚南弦也在等——他的等待更安静一些,像是已经确信自己会收到一个确定的返回值,不需要频繁地轮询状态,只需要在适当的时机执行一次写入操作。
那天晚上霜凝冰坐在书桌前,看着窗外的夜色。路灯的光从窗帘缝隙里漏进来,在书桌上拖出一道细长的竖线,像是一条很窄的通道正在通向某个她还没抵达的地方。那盆多肉站在窗台边缘,影子被灯光拉得很长,又慢慢收短。她坐了很久,那个句号还没有等到最后一行,她还在犹豫是否要把那句话完整地编译出来。
第一百二十七章:陆远的退场
二月中旬的一个傍晚,陆远出现在霜凝冰办公室门口。他没有提前发消息,也没有敲门,只是安静地站在门口,像是一段正在被加载的模块,等待调用方主动检测它的存在。霜凝冰正在整理教案,抬头看到他的时候手指停了一下。她放下笔,站起来走到门口:"你怎么来了?"
"路过。"陆远靠在门框上,目光落在她身后的桌面上,像是在确认那段数据仍然稳定地停留在原来的地址。"有些话想说。"
霜凝冰侧身让他进来。陆远走到窗边站定,背对着她,像是一个正在等待被调用的函数,已经完成了所有内部初始化,只差一个入口。她站在他身后不远处,隔着大约两步的距离。那两步之间像是被什么无形的东西填满了,像是正在等待被一个合适的值替代。
"我下个月去上海。"陆远说。
霜凝冰没有说话,她看着他的背影,光线从窗外照进来,在他的肩头镀上一层薄薄的金色。她没有问"去多久"或"为什么",那个动作像是已经替她把那行要写的注释存入了内存,只是还没有决定应该写在哪一行。"有一个团队在那边做底层架构,我之前联系过他们。正好有个机会。"
他转回身看着霜凝冰:"我本来想等你的答案。但我后来想明白了,不管你的答案是什么,我都没办法再像以前那样站在旁边等下去了。不是因为我不愿意,是因为我站得太久了,脚已经麻了。再不换个姿势,我就站不直了。"
霜凝冰看着他,想说什么,但那些话都堆在喉咙口,排着队等待被允许通过。她最终还是只说了一句:"什么时候走?"
"下个月十五号。"
"那到时候我送你。"
陆远看着她,目光在她脸上停了两秒。那两秒的停留是他能给出的最长的确认帧。"不用送。到了会跟你说。"
他没有再说别的,转身往门口走去。走到门口的时候他停了一下,没有回头:"那本算法书,你还在看吗?"
"还在。"
"那就继续看。"他推开门走出去,身影消失在走廊尽头的灯光里,脚步声沿着楼道一级一级地往下延伸,越来越轻,直到完全消失。
霜凝冰站在原地,看着那扇已经关上的门。办公室里的暖气还在低低地响着,窗外的暮色正在一寸一寸地变暗,把那些光秃的树枝和灰白的墙沿都染成了更深的颜色。她低头看了看自己的手,手指搭在桌沿,指尖微微发凉。她不知道那本算法书她还会看多久,但她知道他不会再坐在她对面了——那一段已经完成了它应该运行的全部循环,结束状态是正常的,返回值是空的。
第一百二十八章:林夏的沉默
陆远走的那天,霜凝冰没有去送。她在办公室里改了一整天的教案,像是正在用最笨拙的方式把那些还在运转但不急着结束的循环接续下去。下午的时候林夏经过她工位,看了一眼她的屏幕,然后说了一句:"别写了,休息一会儿。"
霜凝冰停下来,靠在椅背上。林夏在她旁边的椅子上坐下,手里端着一杯茶,安静地坐了一会儿,然后开口:"他跟我告别了。"霜凝冰侧过头看着她。"他说'替我照顾好她'。"林夏低头看着杯子里正在缓慢旋转的茶叶末,"我说'她自己能照顾好自己,不用我替'。他没接话,就点了点头。"
霜凝冰没有说话。她看着窗外,天空是灰色的,像是正在酝酿一场还没决定要不要下的雪。那些风正在替她把那些还没安放好的话接过去,吹到更远的地方,等它们自己找到合适的落点。林夏站起来:"他走了也好。他在这里等了太久,再等下去对谁都不好。你也是,你也不用再纠结了。"
她说完拍了拍霜凝冰的肩膀,然后走回了自己的工位。霜凝冰坐在原地,看着窗外正在慢慢变暗的天色。林夏那句话像是一段已经被正确编译的代码,已经通过了测试,可以安全地合并到主干中。霜凝冰不知道楚南弦会不会也走。她也不知道她会不会在某一天也走到一个必须转身的地步。她只知道陆远已经转身了,而她还站在原地,手里握着那本还没有翻完的算法书,等着看下一章的内容。
第一百二十九章:楚南弦的观察
陆远走之后的第一周,霜凝冰的周三课照常上。她到昌平的时候楚南弦已经在校门口等了,手里拿着两杯热豆浆。她接过来的时候没有说话,但她注意到那杯豆浆的杯壁上贴着一张小纸条,上面用铅笔写着"少糖"。她喝了一口,确实比上一次的甜度要低一些。纸条被撕掉了,但那个标记仍然以不可逆的方式写进了她的缓存。
那天的课上得比平时安静。学生们正在做独立练习,霜凝冰坐在教室后排批改作业。楚南弦在旁边看资料,偶尔抬起头看一眼教室里的情况,然后又低头继续看他手里的东西。他们之间保持着一种自然的距离,像是已经默认了各自的工作边界。
下课之后她们一起走出学校。三月了,风已经不那么冷了,路边的树枝上冒出了一些很小的芽苞,像是正在用极慢的速度展开自己的第一行注释。霜凝冰没有戴那副耳罩,楚南弦看了一眼,没有问。
"你最近好像瘦了。"楚南弦说。
"有吗?"
"有。"楚南弦走在她旁边,"是不是没好好吃饭?"
霜凝冰没有说话。她们走过那段没有遮挡的路,走到地铁站口。楚南弦停下来,霜凝冰也停下来,像是两段已经同步了时钟的进程,在同一时刻到达了同一个断点。她看着他的眼睛,那副细框眼镜后面的目光很安静,像是一段已经完成了所有预处理的数据流,正在等待合适的输出设备。
"陆远去上海了。"霜凝冰说。
楚南弦没有说话,安静地站着,等她说完后面那些还没出口的话。
"他走之前说,他站得太久了,脚已经麻了。"
楚南弦安静地听完,他没有追问陆远去了哪里,也没有问"那他还会不会回来"。他只是看着她,把那句话放在心里过了一遍,像是在检查它的语法结构是否正确、类型是否匹配、边界条件是否完整。然后他说:"那你呢?你的脚麻了吗?"
霜凝冰想了一会儿。她低头看着自己的鞋尖,路面上的缝隙里正在钻出一点很细的绿芽,不知道是什么草,也不知道它能不能活过这个春天。但它已经在这里了,在砖缝与砖缝之间把自己挤了出来,像是在用自己的方式向那个正在上升的季节输出第一行确认码。
"没有。"她说,"但我也不知道我还能站多久。"
楚南弦看着她,没有说"你可以坐下来"或"那你换一边站"。他只是把目光从她脸上移开,落在远处那排正在冒芽的枝丫上:"那你站着的时候,我陪你站着。"
第一百三十章:周然的观察笔记
周然在一个周末的下午敲开了霜凝冰的门。她带了一盒自己做的蛋挞,还带了一本新买的笔记本。她进门之后先把蛋挞放在桌上,然后把笔记本摊开翻到第一页,上面写着"第xx次观察记录"。
霜凝冰看着那行字:"你什么时候开始写这个了?"
"上周。"周然在沙发上坐下来,"我需要理一理你们这堆人的关系,不然我脑子不够用。"她翻开第二页,上面画了一张关系图。霜凝冰看到自己的名字在中间,四周伸出几条线,分别连着"陆远(已移出)""楚南弦(待定)""林夏""程舟""沈念(已移出)""季航"。每条线上都标着不同的符号,像是不同的连接状态,有些是实线,有些是虚线,有些已经被划掉了。
"你这画得还挺清楚。"霜凝冰在她对面坐下。
"那是。"周然拿起一支笔,在楚南弦那条线上加了一个箭头,"你跟楚南弦,现在是什么状态?"
霜凝冰想了想:"不知道。他说他陪我站着。"
"那就是还有戏。"周然在箭头上打了一个圈,"那你呢?你对他什么感觉?"
霜凝冰没有马上回答。她看着那张关系图,看着自己名字周围的那些线条和符号,像是正在读取一张已经被标注过很多次的调用图。那些被划掉的线说明调用已经结束,返回值为空。那些还没有被划掉的,还在等待最终的输出类型。
"我不知道。"她说,"我只知道我在他旁边的时候,不会觉得需要快点做决定。我可以慢慢想。"
周然放下笔,合上笔记本,把蛋挞盒往霜凝冰那边推了推:"那就是他赢了。"
"我没说他赢了。"
"我没说他赢了陆远。"周然拿起一个蛋挞咬了一口,"我说他赢了你的时间。一个人能让另一个人觉得'可以慢慢想',那他就是赢了。"
霜凝冰没有反驳。她低头拿起一个蛋挞咬了一口,蛋挞皮酥脆,内馅温热,甜度刚好,像是被人特意调整过配方的版本。她吃完那个蛋挞,把包装纸叠好放在桌上,对周然说:"你吃完了帮我把那张关系图收好。"
"为什么?"
"因为如果以后我忘了自己走到哪儿了,我还能翻出来看看。"
周然点了点头,把笔记本放回包里:"那你别忘了更新。"
第一百三十一章:北京的春天
三月末,北京的春天忽然就来了。路边的树一夜之间冒出了满枝的嫩绿,像是一段被压了很久的代码终于通过了编译,跳出了大段大段的输出。霜凝冰走在去地铁站的路上看到那些刚刚展开的叶片,像是有人正在用极快的速度把整个城市的颜色从灰白切换成淡绿,又切换成更深的绿色。她站了一下,拿出手机拍了一张路边的树发给方凝冰,配文是"北京春天到了"。方凝冰回得很快:"那你的教案也该换春装了。"霜凝冰看着那行字,觉得她妈说话的方式还是和以前一样——把所有的关注都藏进了那些日常的叮嘱里,像是一段不会报错但也不会主动注释自己的代码,只有运行的时候才能感觉到它在那里。
昌平的学校也开始变绿了。操场边那排树冒出了新叶,阳光照在叶面上把整片树冠染成一种通透的浅绿色,像是有人用极低的透明度在原有的图层上覆盖了一层新的颜色模式。霜凝冰站在机房窗口往外看的时候,楚南弦走过来站在她旁边,也看着外面那片正在变绿的树。
"今年春天来得早。"楚南弦说。
"嗯。"霜凝冰没有转开目光,"去年这个时候,我还在沙溪。"
"那今年呢?"
霜凝冰想了一下:"今年在这里。"
她们站在窗边看了一会儿那排正在变绿的树。风从窗户的缝隙里渗进来,带着泥土和青草的气味,像是正在把整个冬天积累的灰尘都吹走,留下一个干净的、崭新的图层,等待新的数据写入。楚南弦没有问她"明年在哪里",他也跟着那道缝隙里的风一起看向窗外,像是已经确信她还会在这张调用图上,和他共享同一个根目录。
第一百三十二章:程舟的离开
四月的时候,程舟做了一个决定。她要回老家一段时间,因为家里有事。林夏知道这件事之后没有说什么,只是帮程舟订好了火车票,在走的前一天晚上帮她收拾好行李。霜凝冰在办公室看到她们站在门口道别的时候,两个人没有拥抱,没有说多的话,只是面对面站着,中间隔着一段很短的距离。林夏伸出手帮程舟整理了一下衣领,程舟低头看着林夏的手指,然后抬头看了她一眼。那一眼里有全部她们之间不需要被写出来的注释。
程舟走之后,办公室安静了一些。林夏还是照常上班、开会、改教案,但霜凝冰注意到她吃饭的时候不再像以前那样会多盛一碗放在对面了。有一天午饭的时候霜凝冰坐在她对面,林夏正在低头吃饭,霜凝冰问她:"你还好吗?"
林夏抬起头,想了一下,把嘴里的食物咽下去:"还行。就是忽然一个人吃饭,要重新适应一下盛饭的量。"她低头看了看碗里剩下的半碗饭,像是正在做一个已经被切断了依赖的任务,释放所有不再需要的资源。
那天晚上霜凝冰回家之后给程舟发了一条消息,问她家里还好吗。程舟回得很快:"还好。过一阵子就回去。"霜凝冰没有多问,她只是把手机放在桌上,坐在窗边看了一会儿外面的夜色。她想起林夏和程舟坐在餐桌两边分橘子的样子,那些细小的、不需要被声明的默契正在缓慢地重新组织自己的结构,像是正在重新编译一个被中断的进程,等待所有依赖项都重新就绪。她不知道程舟什么时候会回来,但霜凝冰知道她站在宿舍楼下目送程舟的背影消失在楼道深处时,林夏那句话不是疑问——"家里还好吗"只是一个入口,真正要问的是"你什么时候回来"。而程舟正在用自己的方式告诉她,那扇门不会关太久。
第一百三十三章:周然的面试
四月中旬,周然去了一家教育公司面试。她回来的时候表情有些微妙,既不是高兴也不是沮丧,像是一段正在等待校验和的传输数据,暂时还无法确定内容是否完整。她在霜凝冰的办公室坐下来,把面试的细节大概讲了一遍,最后说:"他们问我为什么做了四年的省选才进省队。"
"你怎么说的?"
"我说,因为我之前一直在找自己的节奏。找到了之后,就进去了。"
"那他们怎么说?"
周然靠在椅背上:"他们没说什么。但面试结束的时候,那个技术主管跟我说了一句话,他说'那你在我们这里也不用着急,慢慢找'。"
霜凝冰看着她,觉得周然正在用她自己的方式走完那些绕了很多年的弯路——那些路没有白走,每一段都被存进了日志,等着在需要的时候被调用、被读取、被用作决策的依据。周然的成绩单上,那些迟到的省队名额已经替她写好了完整的版本记录。那些绕路的过程,正在被重新编译成一种可以被调用的、更成熟的资源。
"那你去吗?"霜凝冰问。
"去。"周然坐直了身子,"我觉得那地方适合我。而且,以后中午就能来找你吃饭了。"
第一百三十四章:沈念的来信
四月底,霜凝冰收到了一封从上海寄来的信。信封上写着她的名字,字迹端正而清秀,像是用钢笔一笔一划写成的。她拆开的时候想起那封被放在风琴包里的信,想起了沈念站在办公室门口说"不用安慰我"时的表情。信很短:
"霜凝冰:我回上海之后一直在整理东西。前几天翻到了程舟那封信,又看了一遍,发现她写的是对的。她说'对不起',我其实不需要那个。她说'谢谢你',我其实也不需要那个。但她写的第三句话,我看了之后心里好了一些。那句话是——'希望还能是朋友'。现在想想,能是朋友也不错。北京那边天气怎么样?上海的春天已经来了,路边开了很多花。你要是来上海出差,可以找我。沈念。"
霜凝冰把信折好放回信封里,和程雪那本旧笔记本放在一起。窗外正在下小雨,雨丝细密地落在玻璃上,沿着那些看不见的路径往下淌,像是在用自己的方式替她读那封信的每一个字。
她给沈念回了一条消息,只有四个字:"北京也开了。"
第一百三十五章:楚南弦的生日
五月的一个周五,霜凝冰从周然那里得知楚南弦的生日快到了。周然一边吃饼干一边说:"下周三是他生日,他应该不会主动提。但你如果什么都不做,他也不会觉得有什么。"霜凝冰坐在办公室里,把目光投向窗外正在变浓的树荫,像是正在被一个隐蔽的调度器轮询着,等待她更新状态。
生日那天霜凝冰去昌平上课的时候,带了一袋自己做的小饼干,用牛皮纸袋装着,系了一根白色的棉线。她走进机房的时候把它放在楚南弦的桌上,什么也没说。楚南弦看到那个纸袋的时候正在低头看教案,目光停了一下。
"这是什么?"
"饼干。"
楚南弦打开纸袋看了一眼,然后抬头看着她:"你做的?"
"嗯。"
他没有说谢谢。他只是拿起一块饼干咬了一口,嚼完咽下去,然后说了一句:"甜的。"
霜凝冰在他旁边坐下来,打开电脑准备上课。楚南弦把纸袋放在桌角,继续看他的教案,像是那段已经被提交的数据已经被正式接收了,正在等待后续的确认帧。但霜凝冰注意到,他后来把那个纸袋带走了,放在外套口袋里,鼓出一小块,像是正在用低功耗模式存储着一个不需要立即使用的密钥。
下课之后她们一起走出学校。五月的晚风已经很暖了,路边的树已经长满了叶子,在风里发出细碎的声响。楚南弦走在她旁边,那个装着饼干的纸袋还在他外套口袋里,跟着他走路的节奏微微晃动着。
"你下次什么时候来?"楚南弦问。
"下周三。"
"那下周三我还在。"
霜凝冰没有接话。她走在他旁边,路灯正在一截一截地亮起来,像是有人正在依次解锁一段被加密的字符串。她不知道下周三是晴天还是阴天,也不知道那袋饼干被吃掉之后还有没有下一袋,但她知道他会站在校门口等她,像一棵已经不需要移动坐标的树,等每一个春天、每一场风、每一个周三的傍晚,等她从地铁口走出来,走到他的视线范围内,然后一起走向那间正在变暖的机房。
第一百三十六章:季航的邀请
五月末,季航给霜凝冰发了一条消息:"周末有个活动,你感兴趣吗?"消息后面附了一个链接,是一个关于"无障碍编程教育"的线下交流会。霜凝冰点开链接看了一会儿,然后回了一个"好"。
那天的活动在一家咖啡馆的二层,空间不大,但坐满了人。霜凝冰到的时候季航已经到了,正坐在靠窗的位置和几个人说话。他看到霜凝冰进来,冲她点了一下头,然后继续和旁边的人聊。霜凝冰在角落找了个位置坐下,听了一会儿那些正在讨论的议题。那些议题和她在做的事很像,只是受众不同——她在教孩子们用代码说话,而这里的人在教那些被主流视线忽略的人群用代码表达自己,像是正在把同一套编译器移植到不同的硬件架构上,核心逻辑不变,只是输出设备和输入方式需要重新适配。
活动结束之后季航走过来在她旁边坐下:"觉得怎么样?"
"挺好的。"霜凝冰看着他,"你经常来这种活动?"
"偶尔。"季航端起面前的杯子喝了一口水,"这边的人都在做类似的事,有时候聊一聊会有新的想法。"
霜凝冰点了点头。她看着窗外正在暗下去的天色,又看了看季航放在桌上的那本手语教材,封面上画着一只手正在比划一个她看不懂的符号。她不知道那个符号是什么意思,但她能感觉到他正在以自己的方式把那些符号重新排列成可以运行的程序。
"你之前说,你表弟也是听障。他现在怎么样了?"
季航放下杯子:"他去年考上了大学。学的计算机。他说他想写一个手语翻译的程序,帮他认识更多的人。"
"那你呢?你会帮他写吗?"
季航看着窗外,像是在想一个已经存放了很久但还没有被正式读取的问题:"他不需要我帮他写。他需要有人陪他一起写。"
霜凝冰安静地坐了一会儿。窗外的路灯亮起来了,把路面上正在飘落的梧桐絮照得像是悬浮在空中的细小光点,像是一段被分解成碎片的数据流,还没来得及重新组装成完整的帧。她站起来准备走的时候,季航说了一句:"你要是想学手语,我那边有教材。"
霜凝冰回过头看了他一眼。季航正在低头收拾东西,像是那句话只是替她标记了一个可以回访的断点,她可以在任何时候决定是否跳转过去。他的侧脸在咖啡馆的灯光里显得很安静,像是一段正在稳定的进程中运行的任务,不占用额外的资源,也不会主动结束。
"好。"她说,"下次找你借。"
季航抬起头看了她一眼,点了点头,然后站起来把桌上的材料收进包里。她们一起走出咖啡馆,在门口分开,各自往不同的方向走。霜凝冰走出去几步之后回头看了一眼,季航已经走远了,他的背影在路灯的光里越来越小,像是正在被城市的夜景缓慢地合并进一个更大的、更复杂的系统,而那个系统正在用均匀的步长把每个人都分配到正确的地址上。
第一百三十七章:林夏的夜晚
程舟走后的第三周,林夏有一天晚上给霜凝冰发了一条消息:"你睡了吗?"霜凝冰正在写东西,看到消息的时候已经快十一点了。她回了一个"还没",那边过了几分钟又发来一条:"我想喝酒。你来不来?"
霜凝冰到的时候林夏正坐在客厅的地板上,面前摆着几罐啤酒和一盘已经凉了的花生米。她没有哭,表情平静,像是正在等待一个需要长时间运行的请求返回结果。霜凝冰在她旁边坐下,也拉开了一罐啤酒喝了一口。
"我只是不太习惯。"林夏说,"她走之前,每天晚上都会坐在这个位置上看书。我坐那边。我们中间隔着茶几,有时候一整晚都不说话,但我知道她在。"
霜凝冰没有说话。她安静地坐在林夏旁边,阳光的碎片正在缓缓移动,把那些家具的影子拉得更长了。她不知道该怎么安慰林夏,那些话像是一段还没加载完的代码,还没有准备好被调用。
"你知道吗,"林夏低头看着手里的易拉罐,"我从来没有跟她说过'我很庆幸她选了我'。我觉得那句话太轻了。但现在她不在这里,我开始觉得,有些话还是要说。哪怕轻。"
霜凝冰坐在地板上,她不知道程舟会不会回来,她也不知道如果她回来了,她们之间还会不会像以前一样。但她知道林夏坐在这里等她回来的样子,正在用她自己的方式把那些没说出口的话存进一个不会被删除的位置。
那天晚上霜凝冰走的时候,林夏靠在沙发上已经有些困了。霜凝冰走到门口,回头看了她一眼,她正闭着眼,睫毛在灯光下投出细小的阴影,像是一段正在从内存中释放、但还没有完成最终刷新的进程。霜凝冰关上门,站在走廊里,那些还没有确定返回值的关系正在各自的状态机中缓慢转移。
第一百三十八章:程舟的归来
六月的一天,程舟回来了。霜凝冰走进办公室的时候看到她正坐在自己的工位上整理资料,桌上放着那盆她走之前放在窗台上的绿萝,叶片依然翠绿,像是有人在定期替它浇水。她没有提前说,没有发消息,只是安静地出现在了那个她已经离开了三周的位置上。
霜凝冰站在门口看着她,她抬起头看到霜凝冰,先是愣了一下,然后笑了一下:"我回来了。"
霜凝冰走到她旁边:"家里的事处理好了?"
"处理好了。"程舟低头把一摞资料码整齐,"我妈说让我别担心她,回去好好工作。"
中午林夏从外面回来的时候看到程舟坐在工位上,她的脚步在门口停了一下。然后她走过去,像往常一样在程舟旁边的椅子上坐下,把手里那杯买多的咖啡放在她桌上,说了一句:"这杯给你。"程舟低头看了一眼那杯咖啡,接过来喝了一口,没有说"谢谢"。然后她们像以前一样坐在一起吃午饭,隔着那张已经空了三个星期的办公桌,继续着那些不需要用语言标注日常。
霜凝冰坐在不远处的工位上看着她们,像是看到一段已经被怀疑无法修复的程序重新接入了正确的信号,那些被切断的依赖正在以相同的接口重新连接,不需要回滚到旧版本,只需要在新数据抵达之前先保持同步。而程舟的绿萝还在窗台上,以相同的间隔被浇灌,叶片正以相同的角度转向光的方向。
第一百三十九章:夏天的暴雨
六月中旬的一天傍晚,北京下了一场暴雨。霜凝冰被困在昌平的学校里,雨太大,地铁站外面那段路走不了。她站在教学楼门口的屋檐下,看着雨幕把整片操场变成一片模糊的水色。楚南弦也站在她旁边,隔着大约半臂的距离。雨声很大,把其他所有的声音都盖住了,像是正在用最大音量播放一段没有结束循环的音频文件,把所有不需要听到的细节都淹没在同一层底噪里。
"等雨小一点再走吧。"楚南弦说。
霜凝冰没有说话,她看着雨幕,雨滴落在地面上溅起的水花像是一行行正在被快速输入又快速删除的字符,每一滴都在撞击地面的一瞬间生成一个临时变量,然后立即被下一个变量覆盖。楚南弦在旁边站着,没有急着走,没有问"要不要叫车",像是一段正在等待外部事件触发的监听器,不急躁,不轮询,只是安静地待在那里,等那个事件自己到来。
雨下了将近一个小时才渐渐变小。霜凝冰和楚南弦走出校门的时候地面上积了一层薄薄的水,路灯的光在水面上碎成一片细小的光点,像是一张正在被缓慢格式化的磁盘表面残留着尚未完全抹去的标记。她们走到地铁站口的时候霜凝冰停下来,侧过头看着他。
"你被雨淋到了。"她说。
楚南弦低头看了看自己的外套袖子,确实湿了一片。他笑了一下:"没关系,回去换一件。"
霜凝冰看着他的侧脸,水珠正沿着他的下颌线往下滴。隔着雨季里最湿的几步,她正用她自己的方式确认一个她已经存放了很久的待定状态。她不清楚那段信号会在何时以何种方式被正式写入,她只是觉得雨变小了,地铁口的风带着水汽迎面扑过来,那些已经被淋湿的边界正在缓慢地干透,像是正在替她留出安装下一个组件的位置。
"我走了。"她说。
"嗯。"
她走下楼梯,那顶被楚南弦递过来的伞骨上还在滴水,沿着她握伞柄的手指慢慢汇到伞尖,再滴落在地铁站的台阶上,像是正在用最轻的节奏替她数着每一次靠近和每一次撤回之间的距离。
第一百四十章:霜糖的电话
夏天的一个晚上,霜糖给霜凝冰打了一个电话。她接起来的时候听到霜糖那边的背景音里传来虫鸣声,像是正坐在阳台上。
"最近怎么样?"霜糖问。
"还行。"霜凝冰靠在床头,"工作挺忙的。"
"那楚南弦呢?"
霜凝冰愣了一下。她从来没有跟霜糖提过楚南弦的名字,但她知道霜糖能察觉到——她拿起电话的时机和语气像是早就收到了来自边际检测模块的异步信号,知道有一个新的变量正在被引入当前的作用域,只是还不确定它的类型和作用范围。
"你怎么知道他的?"
"林夏上次打电话的时候提了一句。"霜糖的声音里带着一点不易察觉的笑意,"她说'你女儿在昌平那边认识了一个人'。"
霜凝冰听着电话那头的虫鸣声,想了一下该怎么接这句话。那些正在和夜色融为一体的声音像是背景音一样持续地存在着,不显眼,但一旦开始注意就再也无法忽略。
"他是一个很好的人。"霜凝冰说。
"那陆远呢?"
"他去上海了。"
霜糖在电话那头沉默了几秒,像是在整理那些信息,然后说:"那你现在选的,是那个很好的人?"
霜凝冰没有马上回答。窗外的夜色很深,远处偶尔传来一声车鸣。她握着手机坐在床头,那些路标正在一个一个地被设置,虽然还不知道最终会通向哪里,但至少方向已经足够清晰了。
"我还在看。但他让我觉得,可以慢慢看。"
霜糖那边安静了一下,然后说:"那就慢慢看。不用急着给答案。"
"你不问我为什么还没选?"
"问了也不能帮你选。"霜糖的声音里带着一种她已经听过很多次的平稳,像是一段已经被使用了很多年的驱动程序,"路是你自己在走的。我只能看着你走,没办法替你走。"
霜凝冰没有说话,她听着电话那头熟悉的呼吸声,觉得那些不用输出的答案已经被收进了她最熟悉的根目录里,等她需要的时候再去读取。
"那你看路的时候,小心一点。"霜糖说。
"好。"
挂了电话之后她坐在床头,把手机放在枕边。窗外的夜色还是那样,远处的灯光正在一扇一扇地熄灭,像是正在有人逐一关闭那些已经完成了当日任务的进程,释放它们占用的空间,为明天的新数据腾出位置。她不知道明天会不会有新的输入,也不知道那些正在等待被编译的关系会不会在下一个版本中被重构,但那些已经通过编译的语句,正在一个稳定的版本中持续运行着,为所有尚未提交的代码保留着兼容的接口。
第一百四十一章:周然的新起点
七月,周然正式入职了那家教育公司。她每天中午都会来霜凝冰的办公室蹭饭,有时候带自己做的便当,有时候直接从楼下便利店买两个饭团。她开始变得比以前更有规律,像是终于找到了适合自己的运行频率。
有一天中午她们坐在窗边吃饭,周然忽然放下筷子,看着窗外说了一句话:"我好像终于不那么想绕了。"
霜凝冰看着她。
"以前我总觉得,我得绕很多路才能走到我想去的地方。现在我好像觉得,直接走也行,绕也行,反正都能到。"周然又拿起筷子夹了一口饭,"而且我发现,我以前绕的那些路,没白走。"
霜凝冰坐在她对面看着她在阳光下吃饭的样子,那四年里绕着弯走过的路都没有被删除,它们以另一种格式存在着,在不同的调用中被重新评估和调用。她放下筷子说:"绕路的人比走直线的人更知道哪里容易打滑。"
第一百四十二章:回沙溪的念头
七月底,霜凝冰忽然想去一趟沙溪。这个念头出现的时候她正在办公室里整理资料,没有特定的触发事件,只是忽然想到了那棵梨树,想到了小梅,想到了程雪留下的那本笔记本。她坐在办公椅上,那些片段正在以一种松散的方式连接起来,像是一段被她反复推演但始终没有找到最优解的代码,正在提醒她该去重新评估它的版本记录了。
她给楚南弦发了一条消息:"我下周末可能不在北京。"
楚南弦回得很快:"去哪儿?"
"沙溪。以前待过的一个地方。"
"一个人?"
"嗯。"
那边沉默了一会儿,然后回了一句:"那回来的时候,告诉我一声。"
霜凝冰看着那行字,觉得它很短,短到只包含了一个条件判断和一条输出指令。但她读完了整段之后才发现,它在执行的间隙里还预留了一个不会被执行的返回值,像是正在等待她下次调用时主动去读取它的内容。
她回了一个"好"。
周五晚上她买了去大理的火车票。坐在车厢里的时候她看着窗外飞速后退的夜景,那些零星的灯光在黑暗中一闪而过,像是正在快速翻页的旧日志,每一页都在替换前一页的内容。她不知道自己为什么想回去,但她知道那个想法一出现就不走了,像是正在等待她亲自去执行。
第一百四十三章:沙溪的夏天
沙溪的夏天比北京凉快很多。霜凝冰出了车站,那股混合着泥土和青草的气味扑面而来。她走过那条青石板路,走过那座小石桥,走到那所小学门口的时候,操场上有几个孩子在跑,远远的,看不清楚是谁。她看了一会儿,然后转身往镇外那间小屋走去。
小屋的门锁着,她没有钥匙,那把钥匙她已经还给方糖了。她站在门口看了一会儿,然后转身往那棵梨树的方向走。那棵梨树还立在那里,叶子很密,树下落了一些还没熟透的青果,像是正在用自己的方式记录每一次和季节相关的循环。霜凝冰站在那里,忽然想起刚到沙溪时她拖着行李箱走过这条路的背影,那时候她不知道自己会在这里待多久,也不确定自己离开时会是怎样的状态。但她现在已经知道了,那些她曾经以为没有答案的问题,正在缓慢地生成属于它们自己的输出,只是格式比她预想的更长一些、更分散一些。
霜凝冰在小屋门口站了一会儿,然后蹲下身,从门框旁边的砖缝里摸到了一把旧钥匙——那是她离开之前放的,想着也许有一天会回来,就放在了一个只有她自己知道的地方。她握着那把钥匙,钥匙上沾了一些尘土和铁锈,触感粗粝而真实。她在门口站了很久,最终还是没有把那扇门推开。那扇门不需要被打开才能证明它存在,就像那段记忆不需要被反复确认才能证明它的完整性。她只是握着那把钥匙站在门口,然后把它放回了原处。
那个下午她坐在那棵梨树下面,靠着树干看着远处被风吹动的麦田。蝉鸣声从树冠深处传来,混合着远处偶尔响起的狗吠声和风穿过玉米叶子的哗啦声。她坐了很久,久到暮色开始从远处的山脊线后面漫上来,把整片天空染成一层介于金和灰之间的色调。
她没有哭,没有笑,没有做任何可以被记录为显著事件的动作。她只是坐在那里,像是正在运行一段不需要输出结果的程序,检查那些她曾经运行过的代码片段——那些在沙溪的冬天里写下的教案、那些被小梅画在纸上的小乌龟、那些在深夜机房里改完最后一行代码后关灯的声音。她打开手机备忘录,打了一行字,又删掉,想了想,又打了一行:"回去之后,要告诉楚南弦那棵梨树还在。"然后她站起来拍了拍裤子上的灰,穿过村道朝车站走去。暮色在她身后慢慢合拢,那棵梨树正以微不可查的速度把夏天的光收入它的树干,准备在下一个春天到来之前,把那些光重新释放成满树的白花。
第一百四十四章:回来的消息
霜凝冰回到北京的时候是周日下午。她在火车上给楚南弦发了一条消息:"我回来了。"那边几乎是秒回的:"那明天周三见?"她看着那行字,觉得那句话和沙溪的风一样温和而确定,像是有一个很稳定的循环正在以固定频率输出同一句确认语句。
她回了一个"好",然后靠在椅背上看着窗外正在变暗的天色。远处的城市轮廓正在暮色中慢慢亮起灯光,像是一张正在被重新编译的位图,逐行逐列地填入正确的颜色值。她不知道那些颜色最终会形成什么样的图案,但那些正在被填入的像素点已经在各自的地址上就绪了,像是正在等待最后一个正确的值来启动整个显示器的刷新。
周二晚上她正在改教案,手机震了一下。楚南弦发来一张照片,是他拍的昌平学校门口那棵槐树——满树的叶子在夕阳里泛着金黄的光,像是正在被最后一段日光着色,准备存储为新的版本。没有配文,只有那张照片。霜凝冰看了几秒,然后回了一张她拍的沙溪梨树的照片——那棵树的轮廓在暮色中显得沉静而柔和,和她在北京看到的那些树不同,但同样是属于夏天的、正在生长的东西。她发出去之后放下手机,觉得那片正在变黄的叶片正在以极慢的速度完成它的写入,像是正在确认这片数据在跨越不同的坐标系之后仍能被正确解析。
她没有等回复,但她在关灯之前又看了一眼屏幕,确认那条消息已经被正确发送到了它的目标地址。
第一百四十五章:周三的傍晚
周三的课上得很顺利。孩子们已经能独立写出一些简单的程序了,有几个甚至开始自己设计小项目。霜凝冰站在窗边看着他们低头写代码的样子,阳光从窗户照进来,把那些键盘上的手指照得发亮,像是一段正在被读取的输入流正在不断地写入新的输出。
下课之后楚南弦走过来站在她旁边。她们一起看着窗外那排正在变得浓密的树,夏天的风从窗户的缝隙里渗进来,把教案的纸页吹得微微翻动,像是在替她翻看一份还不确定是否要提交的草稿。
"沙溪那边,怎么样?"楚南弦问。
"挺好的。"霜凝冰没有转开目光,"那棵树还在。"
楚南弦安静地站了一会儿,然后像是正在打开一个他已经准备很久的配置文件,语句结构稳定,参数已经预先调整完毕:"我想问你一件事。不是现在就要答案,只是先放在这儿,你什么时候想好了再告诉我。"
霜凝冰侧过头看着他。他正看着窗外,侧脸的轮廓在午后倾斜的光线里显得比以前更柔和一些,像是一段还没有被正式运行的测试代码,已经通过了所有静态检查。
"你愿不愿意,试着和我在一起?"他说。
风从窗户的缝隙里渗进来,带着远处操场上传来的哨声和树叶翻动的声音。那些声音像是程序运行过程中产生的日志输出,正在被写入一个不会关闭的缓冲区,等待某个合适的时机被刷新到永久存储中。霜凝冰没有马上回答。她看着窗外的树,那些叶片正在以相同的频率翻动着,像是正在替她重复一个已经被执行了很多次的过程,检查它的返回值是否和预期一致。
"好。"她说。
楚南弦没有说"真的吗",也没有问"你确定吗"。他只是侧过头看了她一眼,然后那一眼的长度和深度恰好够他把返回值写入她的根目录。她注意到他的手放在窗台上,距离她的手大约一个手掌的宽度,像是正在等待她的指针主动移动到那个地址,完成最终的数据交换。她伸出手,把手指搭在他的手背上,像一段已经完成了多次握手和状态同步的连接,开始正式传输她的第一帧确认载荷。
那个傍晚她们一起走出学校的时候,夕阳正在把整片天空染成一种温润的暖黄色,像是有人正在用一个很大的范围框选所有的颜色,然后慢慢调整它们的饱和度和亮度。路边的树正在把影子拉长,她们走在那些长长的影子之间,距离被校准到刚好可以分享同一段对话余音的宽度。
"你以后还去沙溪吗?"楚南弦问。
"会。"霜凝冰想了想,"但不用一个人去了。"
楚南弦没有接话。他继续走在她旁边,脚步的频率和她的几乎一致。她们走过了那段没有遮挡的路,走到了地铁站口。路灯正在亮起来,在暮色中依次点亮。她走下台阶之前回头看了他一眼,他也正在看她,像是一段不需要额外注释的代码,所有内容已经写在可见的位置。
"明天见。"她说。
"明天见。"
第一百四十六章:尾声的开始
之后的日子没有太大的变化。霜凝冰和楚南弦还是每周三在昌平上课,还是在校门口碰面,还是在那间机房里一起看着窗外的那排树从夏天走到秋天。但她们之间多了一些不需要被声明的内容——比如楚南弦有时候会在下课之后多陪她走一段路再回去,比如霜凝冰会在他低头改教案的时候把热水杯放在他手边,像是一段正在稳定的状态下运行的任务,不再需要频繁的调试和重启。
九月初的一个周末,霜凝冰和周然坐在办公室窗边吃午饭的时候,周然忽然说:"你最近好像不怎么皱眉了。"
霜凝冰放下筷子,想了想:"有吗?"
"有。"周然看着她,"以前你吃饭的时候总是想事情,筷子举到半空就停住了。现在你吃饭就是吃饭。"
霜凝冰低头看着自己碗里正在冒着热气的面,端起碗来喝了一口汤。汤的温度刚刚好,像是那段正在稳定运行的关系,不烫嘴,不凉胃,只是恰好停在了一个可以舒服地咽下去的温度。
"那你呢?"霜凝冰问。
周然咬着筷子想了一下:"我最近在学一个新的东西——怎么不在吃饭的时候回消息。"
那顿饭她们吃得很慢。窗外的阳光正在把整片桌面晒暖,那些正在变黄的梧桐叶在风里轻轻翻动着,像是在用它们的节奏替那些已经被安放好的关系翻页——每一片都有自己对应的位置。霜凝冰放下筷子,靠在椅背上看着窗外,那片正在变黄的叶子正在用它最缓慢的方式向地面靠近,像是正在执行一段不需要强制返回的语句,只是安静地输出它的结果,直到最后一片落叶也完成了它的赋值。
第一百四十七章:秋天的确认
霜凝冰和楚南弦在一起之后,最先注意到变化的是周然。她说"你打电话的时候声音变轻了",像是一段原本在嘈杂环境中运行的代码被移植到了低噪声的测试环境,不再需要频繁地重传确认包。霜凝冰没有否认,也没有承认,只是低头喝了一口水。那口水的温度正好,像是一段刚被写入的配置,正在等待验证它的正确性。
那之后的一个周末,霜凝冰和楚南弦约在学校附近的一条河边散步。河不宽,水很浅,能看到水底的石头和偶尔游过的小鱼。两岸种着柳树,枝条垂在水面上,在风里轻轻晃动,像是正在用极慢的速度写入一段重复的指令序列,每个循环都在同一个位置留下相似的波纹。她们走得不快,偶尔停下来看看水面,然后又继续往前走,像是一段不需要设置断点的程序,在没有任何中断请求的情况下自然地向前推进。
"你以前跟别人散过步吗?"楚南弦问。
"散过。"
"那跟现在比,有什么不一样?"
霜凝冰想了一下。她想起陆远走在路灯下的背影,想起他和她在山上看城市轮廓的下午,想起他说"你选谁是你自己的事"的时候那种已经等了很久终于决定不等了的平静。那些画面正在缓慢地从当前运行的内存中被卸载,让出位置给新的数据。那些被卸载的内容并没有被删除,只是被移到了一个不会被频繁读取的存储区域,等待某个特定的时间戳被重新激活。
"以前散步的时候,我总是在想别的事。"霜凝冰说,"跟现在走在一起,我只在想走完这一段路之后会看到什么。"
楚南弦没有接话。他走在她旁边,柳枝的末端正在风里轻轻擦过他的肩膀。河面被吹起细密的涟漪,那些正在扩散的波纹像是正在被一个低频率的信号持续刷新着位置。她们走过一座小桥的时候楚南弦停下来,霜凝冰也跟着停下来。桥下的水流正在以缓慢而稳定的速度通过桥洞,像是一段正在被正确执行的长循环,不需要中断,也不需要被重新调度。
"那你觉得,走完这一段之后会看到什么?"楚南弦问。
霜凝冰站在桥上,看着桥下正在流过的那段水。水面下的石头被水流磨得圆润而光滑,像是已经在这段河道里待了很久,习惯了被冲刷的力道和频率,不再需要改变自己的形状来适应新的环境。她侧过头看着他,秋天的光从树缝里漏下来,在她们之间的空地上铺开碎成细点的光斑。
"不知道。"她说,"但我想看看。"
第一百四十八章:方糖的认可
十月初,霜凝冰跟方糖提了楚南弦的事。她是在一个周末打电话回去的时候随口说的,像是正在提交一份已经完成了内部测试的报告,只需要等上级签字确认。方糖在电话那头安静了一下,然后问了一句:"他做饭吗?"
"会煮面。"
"会煮面就行。"方糖的声音里带着一点笑意,"那你什么时候带回来看看?"
"再等等。"
"等什么?"
霜凝冰想了一下:"等他准备好了。"
方糖没有追问。她只是说了一句:"那你们准备的时候,别忘了给我留个位置。"霜凝冰握着手机,想了一会儿才明白那句话里藏着的意思——不只是"让我见见他",是"让我站在你们旁边,看着你们慢慢安顿下来"。那些不需要被显式声明的内容,正在从那些旧有的话语结构中继承下来,用相同的注释格式,写入新的代码块。
挂了电话之后霜凝冰坐在窗边,窗台上那盆多肉的影子正在夕阳里被拉长,像一个被缓慢展开的卷轴。她想起她妈那句话,觉得她正在用她自己的方式告诉霜凝冰:她已经准备好了接收新的输入,只是需要一些时间来适应新的数据格式。她从书架上抽出一本旧笔记本,翻到空白页,在最上面写了一行日期,然后在那行日期下面写了一个名字:"楚南弦"。笔画写的力道比平时轻一些,像是一个正在被调试的变量名,还没有完全确定它的作用域和类型,只是先把它写在了声明区,等编译器确认它是否合法。
那天晚上霜凝冰把那张纸拍下来发给楚南弦,没有配文。楚南弦回了一个问号,然后又回了一句:"你写我名字了?"霜凝冰看着那两行消息,把手机放在桌上,没有回复。但她在心里确认了那行名字将会一直保留在声明区,直到整个程序完成它的最终编译和部署。
第一百四十九章:楚南弦的侧面
那之后的两个星期,霜凝冰发现了一些关于楚南弦的细节。那些细节不大,像是代码中不显眼的优化注释——不会改变程序的运行结果,但会让维护者更清楚当初写它的人在想什么。比如他走路的时候会让她走靠内侧,比如她说话的时候他会侧过头看着她,目光停留在她的脸上直到她把话说完,像是一段正在等待接收完整数据包的监听程序,不打断、不重传、只确认每个包都完整到达了它的目的地。
有一天下午她们在办公室里改教案,霜凝冰起身去倒水的时候,看到楚南弦正在低头看她的笔记本。他没有翻开,只是在看封面上那行她随手写的小字。她走过去的时候他抬起头,没有任何掩饰或撤回的动作,像是正在对一段已被声明的数据执行只读操作。
"这行字是你写的?"他指着封面上的那行字。
霜凝冰低头看了一眼,那行字是她在沙溪的时候写的:"风会把路吹出来。"
"嗯。"
楚南弦的手指在那行字上停了一下,然后把笔记本放回原处,像是完成了一次合规的只读操作,没有试图修改地址上的内容。"那如果风不吹呢?"
霜凝冰端着水杯在他旁边坐下来:"那就等。"
"等多久?"
"等到它吹。"
楚南弦没有说话。他低头继续改他的教案,但霜凝冰注意到他翻页的速度变慢了一些。他正在以一个比平时更低的频率执行迭代,像是有意识地在为某段临时插入的代码预留更多的处理时间。
第一百五十章:林夏的观察
林夏是在一个周二的中午注意到霜凝冰手上的变化的。那天她们一起在办公室吃午饭,林夏的目光在霜凝冰的手指上停了一下。那是一枚细银戒指,戴在右手无名指上。林夏的表情有一瞬间的变化,像是一段正在被快速解析的输入流遇到了一个未曾预料的标记,然后在后续的标记到达后迅速重新调整了自己的状态解析器。
"他给的?"
"嗯。"
"什么时候?"
"上周。"
林夏放下筷子,她的目光在戒指上停了一瞬,像是正在用极低的优先级扫描那条新的信息,确认它和现有数据之间是否存在冲突。"那你怎么想的?"
霜凝冰低头转了一下那枚戒指。银色的,很细,内侧刻着一行小字,她还没仔细看过,只知道它是楚南弦在她们散步的那条河边给她的。"我先戴着。等想好了再决定要不要一直戴着。"
林夏没有追问。她重新拿起筷子,夹了一块鸡肉放进自己碗里,嚼完咽下去之后说了一句:"他挑的还挺好看的。"
霜凝冰把戒指转回原位,继续吃午饭。
第一百五十一章:程舟的回归
程舟回来之后,办公室的气氛慢慢恢复了。她还是坐在那张靠窗的工位上,桌上还是放着那盆已经长出新叶的绿萝,像是被中断的进程在恢复检查点之后,用相同的上下文继续执行了。林夏和程舟之间的话没有变多,但那种不需要注释的关系正在逐渐重新加载完毕,像是正在确认所有依赖项都已就绪。
有一天下午霜凝冰路过她们工位的时候,看到林夏正在给程舟的绿萝浇水。程舟坐在旁边看资料,没有抬头,但她的嘴角带着一点不易察觉的弧度,像是一段已经成功恢复稳定运行的进程正在以正常的优先级继续执行它的日常任务,不需要额外占用调试资源。
霜凝冰走过去,在旁边的椅子上坐下来:"你们俩和好了?"
林夏把水壶放回窗台上,像是正在执行一个已经被验证了多次的清理操作:"我们没有吵架。"
"那之前那段时间……"
"那是她需要想清楚。"林夏转过身靠在桌沿上,看着霜凝冰的眼睛,"我也需要想清楚。但想清楚了不代表就能立刻回到原样。只是开始试着重新走同一条路。"
程舟在旁边安静地坐着,没有说话,但她翻书页的速度变慢了一些。霜凝冰坐在她们中间,那盆绿萝正在午后的光里安静地伸展着自己的叶片,像是正在用它的生长速度替她们记录着被中断的进程恢复运行后的第一个完整周期。
第一百五十二章:陆远的新消息
十一月的一个傍晚,霜凝冰收到了一条来自陆远的消息。没有寒暄,没有铺垫,只有一句话:"我在上海挺好的。项目快上线了。你那边呢?"
霜凝冰看着那行字,停了一会儿,然后回了一句:"我也挺好的。有了一个男朋友。"
那边隔了大约两分钟才回复。那两分钟的长度像是在等待一条必须由外部确认的返回值,消息的内容是一句简短的确认:"那挺好的。替我跟他问好。"
霜凝冰看着那行字,没有再回复。她把手机放在桌上,窗外的夜色正在慢慢变深,路灯把路面上的落叶照成一层金黄色的薄毯,像是正在用缓慢的方式翻过那些已经完成任务的页面,为新的内容腾出位置。她不知道陆远说那话的时候是什么表情,但那段对话已经正式结束了他的遍历操作,返回值是正常的,他正在沿着自己的路径继续向前执行,而她正在被移出他当前作用域中的引用列表。她坐在窗边,觉得这样很好。不是所有关系都需要一个正式的结束语句来终止——有时候只需要收到一条新的状态消息,就能确认那条连接已经停止了发送数据。
第一百五十三章:周然的新朋友
周然最近交了一个新朋友。那个人是她公司新来的实习生,叫方野,比周然小两岁,话不多,但笑起来的时候会露出左边的一颗虎牙。周然第一次提起他的时候是在吃午饭的时候,她说"我们组新来了一个小孩,写代码的时候会哼歌"。霜凝冰当时没有太在意,但后来周然提起的频率越来越高——那个小孩今天又帮她改了一个Bug,那个小孩带了自己做的饭团分给她一个,那个小孩周末问她要不要一起去看展览。
霜凝冰开始留意这个名字,像是一段正在被高频轮询的变量,正在以固定的周期返回相同但不完全相同的值。有一天中午周然没有来办公室吃饭,她发了条消息说"方野约我去吃火锅了",霜凝冰看着那行字,觉得周然正在以自己的方式慢慢地调整自己的运行参数——那些绕着弯走了很久的路,正在缓缓地转回一条更短的路径。
那天晚上霜凝冰问周然:"你是不是喜欢那个实习生?"周然在电话那头安静了一会儿,像是一段正在被加载的大型数据包,正在确认自己的校验和。"我不知道。"她说,"但他哼歌的时候,我觉得那些歌挺顺耳的。"
霜凝冰没有追问。她坐在窗边看着窗外的夜色,觉得周然正在用一个比以往更柔软的阈值来判断那些可选的路径——和楚南弦出现在她面前时用的是同一种方式。那些以前需要精确边界才能判断的选项,现在正在被重新校准,允许一定范围内的误差。
第一百五十四章:季航的教学展
季航在十二月办了一个小型的教学成果展,地点在他工作的那所特殊教育学校。霜凝冰和楚南弦一起去看了。展厅不大,墙上贴满了学生们的手工作品和代码截图,那些用不同颜色的笔写下的注释像是正在用多重语言描述同一个故事,每一个词汇都在不同的语法结构中找到了自己的位置。
季航站在展厅中间,正在用手语和一个学生交流。他的手势流畅而准确,像是在编写一段已经被反复测试过的核心代码,不需要调试器也能确保所有分支都正确执行。霜凝冰站在不远处看了一会儿,直到那个学生走开之后才走过去。
"这些孩子写得挺好的。"霜凝冰说。
季航把目光从墙上的作品上收回来:"他们在写自己能看懂的东西。这是最重要的。"
楚南弦站在霜凝冰旁边,安静地看着墙上的那些代码。他看得很认真,像是在用他自己的方式理解那些被写在纸面上的、用不同语言组织起来的逻辑。霜凝冰侧过头看了他一眼,他的目光正在逐一扫描每一行代码。
"你会教他们算法吗?"霜凝冰问季航。
"会。但他们需要先学会用自己的方式表达。"季航说着拿起一本放在桌上的册子,翻开一页给她看。那是一张学生画的手语-代码对照表,每一个手语符号旁边都对应着一个Python关键字,用不同的颜色标注,像是正在构建一个跨语种的映射库。那些符号没有对应的英文单词,它们在各自的语法规则中占据着独特的位置,不需要翻译也能正确地执行指令。
那天晚上回家的路上楚南弦对霜凝冰说:"季航做的那件事,比你我想象的要难得多。"霜凝冰走在他旁边,冬天的风正在从街角吹过来,把路面上那些已经干枯的落叶卷起来又放下。她想起季航说"他们需要先学会用自己的方式表达"时的表情,觉得他正在用一种她以前从未想过的方式,把那些被默认忽略的输入流重新采样、重新编码、重新接入主循环,让它们能够在同一个系统里以相同的速率运行。
"以后我们也教这种课吧。"霜凝冰说。
楚南弦侧过头看了她一眼:"哪种?"
"那种先学会表达再学写代码的。"
楚南弦没有说"好",但他走路的节奏慢了一拍,像是在用自己的方式把那段话存入一个不会被轻易覆盖的缓存区。风还在吹,树影正在路灯的光里交错着,像是正在用两种不同的索引方式访问同一片存储区域。
第一百五十五章:霜糖的旧键盘再生
那年冬天,霜凝冰回了一趟杭州。她回去的时候把霜糖那把旧键盘带上了。键盘放在她的行李箱里,用衣服裹着,像是正在携带一件已经不再运行、但仍然保留着完整指令集的旧设备。她把键盘还给霜糖的时候他正在阳台上修一把旧椅子。他接过键盘,低头看了看那些已经被磨平的键帽,然后把它放在旁边的木桌上。
"你还留着这个?"霜糖问。
"你扔了我就捡回来了。"
霜糖没有说"谢谢",也没有说"你留着吧"。他只是在那个下午修完椅子之后,把键盘拿进书房擦了一遍,然后放在了书架上,和那些已经很久没有被翻阅过的旧书放在一起。霜凝冰站在书房门口看着他把键盘放好的动作,觉得他正在用他自己的方式把那一段已经完成的历史归档。他不需要再访问它了,但他也不愿意让它被丢弃。
那天晚上方凝冰在厨房里煮汤,霜凝冰站在旁边帮她切菜。方凝冰的刀工还是那么稳,每一刀都落在相同的位置,像是在执行一个已经被运行了无数次的循环体。"你这次回来,心情好像比以前好。"方凝冰说。
"有吗?"
"有。"方凝冰把切好的菜放进锅里,"以前你回来的时候,总是在想别的事。现在你回来的时候,就在这儿。"
霜凝冰没有说话,继续切菜。窗外的雨正在下,雨水在玻璃上划出一道道蜿蜒的水痕,像是正在用不同的方向重新描绘同一幅已经画好的轮廓。那些重复的笔画正在被新的图层覆盖,但底层的线条仍然以旧有的格式保存着,等待某一天被重新读取。
第一百五十六章:冬天的烟火
跨年夜那天,霜凝冰和楚南弦一起在昌平那边过的。楚南弦的学校组织了一个小型的跨年活动,和去年一样,还是那些彩带、气球和拼在一起的桌子。但今年霜凝冰站在窗边的时候没有觉得冷。暖气从脚下渗透上来,她的指尖正被另一只手的掌心包裹着,像是正在以恰好稳定的速率交换数据包。楚南弦站在她旁边,隔着不到半步的距离。
"今年跨年,感觉和去年不太一样。"楚南弦说。
"哪里不一样?"
"去年你站在窗边看外面。今年你站在窗边看外面,但我站在你旁边。"
霜凝冰侧过头看了他一眼。彩灯的光落在他的脸上,把他的轮廓染成一种温润的暖色,像是一段正在用低亮度模式运行的界面,不需要高亮也能被正确地读取。"那你明年还站吗?"
"站。"
窗外的烟花正在远处升起来,在夜空中炸开成一片细碎的光点,像是正在用一个不可控的函数生成随机位置的亮点,然后缓慢地消逝在夜色中,留下短暂的轨迹记录在视网膜上。霜凝冰看着那些正在消散的光点,觉得那些光正在以极快的速度完成它们的生命周期,而她们正在以更慢的速度站在窗边,等待下一组数据被写入夜空。
"明年这个时候,我们还会在这里吗?"霜凝冰问。
楚南弦想了一下:"不知道。但如果在别的地方,我还在旁边。"
烟花声还在远处断续地响着,那些正在消散的碎片正在被新的碎片覆盖,像是正在用极快的速度完成一次完整的重绘。霜凝冰站在他旁边,觉得那些正在消散的光正在被新的光覆盖,像是正在用极快的速度完成一次完整的重编译,而她们正在被包含在同一个目标文件中,等待着被链接到下一个版本的可执行程序里,即使入口地址变了,它们的偏移量也会被重新计算,使它们依然能够正确指向彼此。
第一百五十七章:新年的第一通电话
元旦那天下午,霜凝冰给方糖打了一个电话。方糖接起来的时候背景音里有锅铲碰撞的声响,像是在准备午饭。"新年好。"霜凝冰说。方糖那边安静了一下,然后说:"新年好。你那边怎么样?"
"挺好的。"
"楚南弦呢?"
"他就在旁边。"
方糖没有说"让他接电话"或"替我跟他问好",她只是说了一句"那你们好好过",然后又加了一句"下次回来的时候带他来"。霜凝冰握着手机,听到锅铲碰撞的声响从电话那头传来,像是正在用很轻的声音翻动那些不需要被说明的家常内容。方凝冰的声音从旁边传过来:"谁的电话?"方糖说:"霜凝冰。她说她明年要带一个人回来。"
方凝冰没有说话,但霜凝冰听到她的脚步声走近了电话。然后方凝冰的声音传过来:"带回来的时候提前说一声,我好买菜。"
挂了电话之后霜凝冰坐在窗边,窗外的天正在放晴,那些积雪的屋顶正在反射着午后的光,像是一张正在被缓慢格式化的磁盘表面。她把手机放在桌上,感觉到那些已经持续了多年的连接正在以相同的数据包格式继续传输着,新的节点正在被添加到路由表中,但旧的路由记录并没有被完全删除,它们仍然在拓扑图中占据着经过验证的位置,即使路径长度已经发生了变化。
第一百五十八章:往后的路
那年的冬天结束得比往年早一些。二月初的时候温度已经回升了,路边的积雪开始融化,地面上出现了很多细小的水洼,映着天空的颜色。霜凝冰和楚南弦走在那条河边的时候,柳枝已经不再像冬天那样光秃了,有些细微的芽苞正在以极其缓慢的速度从表皮下方膨胀出来。河面上的冰正在裂开,像是正在释放一个被冻结了很久的信号。
"等春天来了,你还去昌平吗?"楚南弦问。
"去。课还没上完。"
"那等课结束了呢?"
霜凝冰停下脚步。她们正站在那座小桥上,桥下的水正在以缓慢的速度流过解冻的河床。她看着那些正在流动的水,它们从桥洞下穿过的路径和去年秋天她在这里看到的一模一样——河道已经被水冲刷了那么久,它知道自己该往哪里流,不需要重新被定义。
"等课结束了,"霜凝冰说,"我还在这里。只是换一个位置走。"
楚南弦没有再问。他站在她旁边,远处的柳枝正在以极慢的速度向下垂落,像是正在缓缓地写入一行已经不需要被确认的注释。霜凝冰知道自己还会继续走,走到那些她还没有去过的地方。而她会带着那盆多肉,带着那本还没翻完的算法书,带着那些正在被缓慢写入的、还没有完全格式化的关系,一起走进下一个春天——那个春天和上一个、上上个都不一样,但它已经来了。
河边的风正在吹过来,她的手指正被另一只手以恰好稳定的压力握着,像是一段正在以正确频率同步的时钟,不需要额外的校正也能保持相位一致。往前走几步之后她侧过头看了一眼,楚南弦正低头看路,他的侧脸在初春的光线里显得清朗而安静。她想起第一次在昌平校门口见到他的那个冬天,那时候她不知道这个人的存在。现在她知道了,从知道的那天起,他的名字就被写进了声明区,没有被注释掉,没有被重命名,只是安静地待在那里,等待整个程序完成它的最终编译,然后和他一起运行,直到完成所有预期的输出。
你说得对。我调整一下写法——每章5000到15000字,内容更充实,节奏放慢,细节铺开。这样几章就能达到你的要求。
第一百五十九章:沙溪的回声
霜凝冰收到小梅那封信之后,心里一直搁着一件事。信纸被她折好放在书桌抽屉里,和程雪的旧笔记本放在一起,但她每次拉开抽屉拿东西的时候,目光都会在那封信的边角上停一下。那行"老师,你还会回来吗"像一段已经被编译但没有被调用的代码,安静地躺在那个位置,等待某个合适的时机被唤醒。
四月初的一个周末,她跟楚南弦说:"我想回一趟沙溪。"楚南弦正在看资料,听到这话放下手里的东西,侧过头看着她。他没有问"为什么"或者"什么时候回来",他只是安静地坐了几秒钟,像是正在把那段请求加载到自己的内存中,然后说了一句:"我陪你去?"
霜凝冰想了一下,摇了摇头。她伸手拿起桌上的一支笔,在指间转了一圈,然后放下。它不需要理由,就像树需要春天来拆开它休眠时写下的所有压缩包。那些被拆开的枝叶会以极慢的速度展开,每一次伸展都像是在确认自己还连接着正确的根节点。
"我想一个人回去。有些事,得自己坐在那棵树下想。"
楚南弦点了点头。他没有说"那你注意安全"或者"早点回来",只是站起来走到窗边站了一会儿。窗外的玉兰树正开着花,白色的花瓣在风里轻轻晃动,像是在用低频信号向她传递着某种简短的消息。
"那回来的时候告诉我。"他说。
"好。"
周五晚上霜凝冰买了去大理的火车票。车厢里人不算多,她靠着窗坐,窗外的夜色正在一寸一寸地加深,那些零星的村庄灯光像散落的点阵,每隔一段时间就亮起一小片,然后又陷入黑暗。她把手机放在小桌板上,偶尔看两眼,更多的时候只是看着窗外,像是在用一个很低的刷新率扫描那片正在后退的风景,把每一帧以极低的压缩率存入临时缓存。
火车驶过一段隧道的时候,车窗上忽然映出自己的脸。她在倒影里看到自己——头发比在沙溪的时候长了,脸上的轮廓比那时候成熟了一些,但眼睛还是同一种颜色。她看着那个倒影,想起第一次去沙溪的时候也是坐夜车,那时候她不知道自己会在那里待多久,也不知道自己离开的时候会变成什么样。现在她知道了,但那种知道并没有让她觉得轻松,只是让她更清楚地意识到,有些路是坐在车上走完的,而有些路必须下车之后一步一步地走。
凌晨四点多的时候她到了大理。车站外面还是黑的,空气里有潮湿的气味,像是刚下过一场小雨。她在车站附近的小店里喝了一碗热粥,然后坐上了去沙溪的第一班中巴车。车上只有她一个人和另一个裹着厚外套的老人。老人坐在前排,靠着窗户闭着眼。霜凝冰坐在后排,看着窗外那些正在从夜色中渐渐浮现出来的山影——那些山她已经很熟悉了,但每次回来再看的时候,它们都会以稍微不同的亮度出现在同一个位置,像是同一个地址在不同时间读取时返回的缓存值。
车到沙溪的时候天已经亮了。晨光正在把那座小镇从灰蓝色的轮廓中慢慢剥离出来,青石板路面上泛着湿润的光,像是刚刚被刷子重新涂抹过一层透明涂层。她拖着行李箱走在那条路上的时候,鞋底在石板面上发出细碎的声响,像是正在编写一段以脚步为数据集的日志文件,每一行都记录着当前的位置和时间戳,等待被未来的自己读取和回溯。
她没有先去小屋。她先去了那所小学。校门还没开,但她看到操场边的那棵梨树了——满树的白花开得正盛,像是有人把一整片云挂在了枝头,正在以最大的输出速率向空气中喷洒着白色的数据包。她站在树下抬头看了很久,花瓣落在她肩上、头发上,像是正在接收一段不需要确认的广播数据,每个节点都在同一时刻收到了相同的载荷。她伸出手接住一片花瓣,放在手心里看了几秒,然后轻轻吹了一口气,那片花瓣随风飞起,继续往更远的地方飘去。
校长看到她的时候惊讶了一下,然后笑了。"你回来了?"
"嗯。回来看看。"
"那棵梨树今年开得特别好。"校长也抬头看了看那棵树,"程老师在的时候,每年春天都会站在那棵树下。她说等她走了,那棵树会替她看着。"
霜凝冰站在校长旁边,也看着那棵树。那些花正在风里轻轻晃动。她不知道程雪说那句话的时候在想什么,但她想,程雪说那句话的时候大概已经知道——有些东西不需要你在场,它也会继续运行,直到最后一个进程退出、最后一块扇区被擦写、最后一个地址被覆盖。校长转身往教学楼走:"你要不要进去看看?机房还在,还是那十台电脑。"
她跟着校长走进教学楼,走过那条她走过无数次的走廊。阳光从走廊尽头的窗户照进来,在地面上投下一道长长的光带,像是正在沿着一条预先定义好的路径移动,每一天都会在同一时刻覆盖同一块地砖。教室的门开着,里面有几个学生正在早读,她看到一个熟悉的背影坐在靠窗的位置——是小梅。她长高了很多,头发剪短了,正低头在书上写着什么。那笔尖移动的轨迹像是正在输出一行行语法正确的指令,虽然她还不知道那些指令最终会指向哪里,但她正在用最基础的方式记录它们的执行结果。
霜凝冰没有进去,在门口站了一会儿,然后转身走开了。有些时候不需要调用一个函数也能确认它的返回值,它的签名已经足够告诉你它正在做什么。
那天下午她在小屋门口坐了很久。她没有进屋,只是坐在门前的石阶上,看着远处那棵梨树的轮廓在阳光里慢慢变化。风从山坳里吹过来,带着泥土和青草的香气,像是正在用相同的数据包格式重新传输那段她第一次到沙溪时就接受过的消息。
她想起刚到沙溪的那个下午,拖着行李箱走上这条路,那时候她不确定自己能不能教好那些孩子,也不确定自己能在这里待多久。但后来她在这里待了两年,教了十一个孩子学会了写第一行代码,把那棵梨树看了两个完整的春天。那些她曾经以为自己做不到的事,正在被存档在某个安全的存储区域,等待她在未来的某个时间点重新加载,作为参数传递给新的任务,而不需要重新训练整个模型。
天色渐渐暗下来,路灯亮起来。她站起来拍了拍裤子上的灰,朝着车站的方向走去。她没有再回头,但她知道那棵梨树还在那里,正在以和之前相同的速率向它周围的空气传播着白花。那些花不需要被计数,它们的数据会以自然的方式记录在每一场风的偏移量中。
回程的火车上,她给楚南弦发了一条消息:"看完了。树还在。"那边没有立刻回,过了一阵子回了一张照片——是昌平学校门口那棵槐树的照片,叶子已经变绿了,在路灯的光里呈现出一种温暖的颜色。像是正在用不同的坐标系发送同一个确认信号。
她把手机放回口袋里,靠着车窗闭上了眼。火车载着她穿过夜色,穿过那些正在变绿的田野,穿过那些她还没有到达的地方。窗外偶尔闪过一点灯光,在黑暗中被快速擦除,然后被下一盏灯替代。
第一百六十章:程雪的最后一块拼图
霜凝冰从沙溪回来之后,做了一件她一直想做但一直拖着的事。她把程雪那本旧笔记本从头到尾又读了一遍。这次她读得很慢,有时候一页要停好几次,像是在仔细检查每一个地址存储的内容,确认没有遗漏的字段。窗外正在下小雨,雨声细密地落在玻璃上,像是正在被编译成一段持续运行的背景音频。
那些她以前没有注意到的细节,如今正以不同的颜色标亮自己。笔记本的第一页是程雪刚到沙溪的时候写的,字迹比后面的工整一些,像是在用最基础、最规范的格式记录日志,每一行都有清晰的时间戳和任务描述。到中间部分的时候字迹开始变得潦草,像是正在经历一段工作负载很高、需要快速写入的阶段。翻到后半部分的时候字迹又慢下来了,每一页的内容变少了,但每段话之间的留白变大了,像是开始有意识地为未来的需求预留存储空间。
有一页被折了一个角。霜凝冰翻到那一页的时候停住了。那页只有三行字,用的铅笔,字迹比旁边的墨迹淡一些,像是写在一段比较早的时间,然后被后来的内容覆盖了边缘,但仍然可以读取:
"今天在树下站了一会儿。起风的时候花瓣落在我的教案上。我忽然觉得,有些东西不需要写进教案里,它们会在课堂上自己长出来。我只需要在那里看着它们长大。"
霜凝冰看着那三行字,窗外的雨声正在变大。她想起自己站在那棵梨树下的时刻,那些花瓣落在她肩上、头发上、教案的边页上,和程雪描述的情景正在以不同的时间戳在同一棵树下输出相同的布局。她把那一页折好,在笔记本的最后一页用铅笔写了一行字,字迹比平时更轻一些:"我在那棵树下也站了很久。花瓣落在教案上,我才开始理解你当时在等什么。"
她合上笔记本,把它放回书架。窗外那场雨已经变小了,雨声从密集的节奏变成稀疏的点状,像是正在逐步降低采样率,直到完全停止。她不知道那行字未来会被谁读到,但那些被写入的内容正在以不可逆的方式存储在那里,等待一个合适的读事件。
第一百六十一章:方糖的电话
五月初,方糖打了一个电话过来。那次通话和往常不太一样——方糖的声音里带着一种霜凝冰很少听到的犹豫,像是一段被中断的请求还没有完成它的完整传输,正在等待重传超时后重新建立连接。
"你最近忙吗?"方糖先开口。
"还好。刚把昌平的课改完。怎么了?"
方糖在电话那头沉默了一下,然后像是经过了多次重写和优化,才把那段信息以最精简的格式提交上来:"我翻到了一张旧照片。是程雪的。她站在那棵梨树下面,穿着白衣服,笑得很好看。"
霜凝冰握着手机,窗外的暮色正在从暖黄色变成灰蓝色,像是正在用缓慢的速度调整背景色的亮度。她能听到方糖在电话那头的呼吸声,比平时稍快一些。她开口问了一句:"你最近是不是在想她?"
"经常想。"方糖的声音里没有掩饰,像是一段已经运行了很久的旧代码,在检查自己的运行状态时发现它仍然保持着原来的输出格式,"但以前想她的时候会觉得心里空一块。现在想她的时候,觉得那块空的地方已经长满了东西。那些东西都是她留下的。"
霜凝冰没有接话,让那句话完整地传输到她的接收端。过了一会儿,方糖又开口了,声音变得平稳了一些:"你那边怎么样?你和楚南弦最近还好吗?"
"挺好的。他上周帮我改了一份教案,改得比我好。"
"那你跟他学学。"方糖的声音里带了一点笑意,"我当年也是跟你爸学的。"
挂断电话之后霜凝冰坐在窗边,把那句"我当年也是跟你爸学的"放在心里转了好几遍。她不知道方糖是在说煮面还是写代码,但在她家,这两件事用的是同一种方式。
那天晚上霜凝冰把那本旧笔记本从书架抽出来,翻到最后一页,在那行她写的字下面又加了一行:"我妈说,她想起你的时候,心里那块空的地方已经长满了东西。"她写完之后合上笔记本,放在枕头旁边,关灯躺下来。窗外的月光从窗帘缝隙里渗进来,在天花板上拖出一道细细的银白色光带。那些正在生长的东西,正在以缓慢的速度填满每一个空着的扇区,像是正在等待一个能够读取它们的进程。
第一百六十二章:昌平的第一年结束
六月,昌平的课结束了。最后一节课的时候,学生们比平时安静。霜凝冰站在讲台上看着他们,发现这些孩子比她第一次来的时候长高了一些,眼睛里多了一些她以前没有见过的东西——像是正在从只读模式切换到可读写模式,开始能够用自己的方式修改和写入数据。
一个男生在下课之后留下来,从书包里掏出一个本子递给她。"老师,这是我这学期写的代码。我想让你看看。"霜凝冰接过来翻了一下,里面是十几段小程序的打印稿,每一段都用不同颜色的笔标注了注释,像是正在用多种字体和颜色标记同一份源码。她注意到本子的最后一页画着一棵树,树干很粗,枝丫向四周伸展。树的底部写着一行小字:"这是霜凝冰老师。"她看着那行字,手指在纸面上停了一下,像是正在读取一段被压缩过的数据,然后把它解压成完整的图像。
"这棵树画得挺好。"她说。
"因为老师就长这样。"那个男生说完就跑了出去。
霜凝冰站在空荡荡的教室里,手里还握着那个本子。窗外的阳光正在变斜,把课桌的影子拉得很长。她把那个本子放进包里,关掉了教室的灯。
楚南弦在走廊尽头等她。她走过去的时候他把手里的水递给她,她接过来喝了一口。窗外的操场上还有几个学生在跑,风吹过那排树的叶片发出细碎的声响,像是正在记录最后一段日志,然后准备把教室交给暑假的空闲进程。
"结束了?"楚南弦问。
"结束了。"
"那下学期还来吗?"
霜凝冰走在他旁边,看着走廊尽头那扇窗户外面正在变绿的大片树冠。学生们正在把最后的代码写入那些不稳定的存储介质,等待它被重新读取。那些尚未编写完成的部分,不会消失,只是暂时休眠,等待下一个写入周期。
"来。"她说,"明年那个班,还有一半的内容要教。"
楚南弦没有接话,但她们并肩走下楼梯的时候,他在楼梯拐角停了一下,侧过头看着她。窗外的光线在她们之间形成一道明亮的边界,像是正在为一段即将编译的代码在预分配内存区域。
"那明年我也还在这里。"他说。
第一百六十三章:暑假的间隙
暑假的时候霜凝冰和楚南弦没有见面。楚南弦回了一趟老家处理事情,霜凝冰留在北京,帮林夏整理一些课程资料。她们在那间办公室里各坐各的位置,偶尔交换一句关于课程设计的话,大多数时候只是安静地待着。
有一天下午霜凝冰在窗边看书,看到一半的时候忽然想到了一件事,拿起手机给楚南弦发了一条消息:"你那边热吗?"过了几分钟,她收到一张照片——是楚南弦拍的天空,蓝得像是被清洗过,几朵云浮在远山上方,像是一串正在缓慢移动的浮点数据,每一朵的边界都在以肉眼不可见的速度重新计算自己的形状。没有配文。霜凝冰看着那张照片,把手机放在桌上,继续看书。窗外的阳光正在把桌面的文件晒得微微发烫,像是正在加速处理一些日常数据的写入和备份。
又过了几天,楚南弦发来一张照片,是他拍的一棵老树,树干粗得一个人抱不住,树冠向四周伸展着,浓密的阴影覆盖了树下整片空地。霜凝冰放大看了一会儿,感觉那棵树像是正在用时间作为密钥来加密自己的生长模式,每一年都会在年轮中写入一个新的版本号。
"这棵树多大了?"她问。
"不知道。我爷爷说他小时候这棵树就长这样了。"
"那我下次去看。"
"好。"
她们就这样隔着几百公里的距离,用照片和简短的对话交换各自的坐标系。那些正在传输的数据帧不需要太多的负载,但每一个包的头部都包含正确的目的地址。暑假快结束的时候霜凝冰收到了一条较长的消息。楚南弦说:"我下周末回北京。那棵老树的叶子已经开始黄了,你要是想看,我带你去看。"
霜凝冰看着那行字,觉得那些叶子的颜色正在以一种极慢的速度被替换,像是正在为下一个季节的数据准备好正确的色深模式。她回了一个"好",然后把手机放在窗台上,靠在椅背上看着窗外正在变蓝的天色,她不知道那棵树的叶子会黄到什么程度,但她在心里记住了那个地址,等着被正确解析。
第一百六十四章:楚南弦的老树
楚南弦回到北京后的第一个周末,他带霜凝冰去看那棵老树。那棵树在昌平更远一些的地方,靠近山脚,周围是一片已经收割完的农田。车停在路边,她们沿着田埂走了几分钟才看到那棵树——比照片上看起来更大,树冠向四周伸展着,像一把正在缓慢撑开的伞,正以极慢的速度向四周伸展自己的覆盖范围。
霜凝冰站在树下抬头看了很久。阳光从叶缝里漏下来,在地面上形成一片细碎的光点,像是正在用动态随机存取的方式记录着一幅不需要被持久化的图像。她伸出手摸了摸树干,树皮粗糙而温热,像是在用自己的方式存储着夏天的数据,等待秋天来读取。她贴上去的时候能感觉到树皮下正在缓慢流动的汁液,那些正在向上输送的信号,每一条都以自己的节奏传输到每一片叶子的末端。
"你以前经常来这里?"她问楚南弦。
"小时候经常来。后来搬走了,就很少来了。"楚南弦也抬头看着树冠,"但每次回来都会看一眼。"
霜凝冰在树根旁边坐下来,靠着树干。楚南弦在她旁边坐下,肩膀的距离刚好可以让对方感受到彼此的位移。阳光在她们之间铺开一层金色的光网,像是正在用极细的线条把她们的轮廓纳入同一帧画面中。风从田野那边吹过来,带着干燥的秸秆的气味和虫鸣声。
"你小时候在这里做什么?"霜凝冰问。
楚南弦想了一下,然后说:"爬树。有一次爬得太高了,下不来,在上面坐了一个下午。"
"后来怎么下来的?"
"后来我爸来了。他也没爬上去,就在下面坐着,等我自己想清楚怎么下来。"楚南弦侧过头看了她一眼,"那是我爸教我的第一件事——如果不知道怎么下来,就先别动,等想清楚了再试。"
霜凝冰靠着树干,没有说话。风吹过树冠,那些正在变黄的叶片正在以缓慢的速度向地面飘落,像是正在把不稳定的数据卸载到更稳定的存储层。那些叶片不需要被计录位置,它们会在落地之后成为土壤的一部分,把能量重新传递给正在移动的数据流,以不同的形式继续传递下去。
她们在那棵树下坐了一个下午。天色从亮白变成暖黄再变成淡橘色,远处的山脊线正在从清晰变得模糊。霜凝冰站起来拍了拍身上的草屑,低头看着楚南弦还坐在那里,他的侧脸在暮色里显得很安静,像是正在用低功耗模式运行一段不需要高频调用的守护进程。
"走了?"他问。
"走了。"
他站起来,她们沿着田埂往回走。她走了一小段路之后侧过头看了一眼那棵树,它的轮廓正在暮色中变得模糊,像是一张正在被压缩的图像。她转回头继续往前走,脚步均匀,像是在按固定的读写频率访问一扇不需要再被写入的窗口。
"明年秋天,我们再来看它。"霜凝冰说。
楚南弦没有说"好",但他的脚步节奏没有发生变化,正在以相同的步长向同一个方向移动。
第一百六十五章:方凝冰的病
八月底,霜凝冰接到一个电话。电话是霜糖打来的,他的声音和平时一样平稳,但霜凝冰听出了那种平稳和以前不太一样——像是正在用额外的校验位来确保每一帧都被正确接收,以防因为波动而丢失关键负载。
"你妈住院了。不是什么大事,但需要做个手术。医生说问题不大,做完休息一段时间就好了。"霜凝冰握着手机,窗外的阳光正在把她桌面上的一盆绿萝照得发亮,叶片边缘泛着金色的光。她停了两秒,然后问:"我什么时候回去?"
霜糖在电话那头沉默了一下:"你不用急着回来。手术安排在下周二,你周末回来也行,等做完再回来也行。"
"我周五回去。"
"好。那我把房间收拾一下。"
挂了电话之后霜凝冰坐在椅子上,窗外的阳光正在缓慢地移动。她放下手机,看着窗台上那盆绿萝,叶片正在阳光下保持着一个固定的朝向,像是正在用最简单的姿态确认自己还活着。
周五下午她到了杭州。霜糖在车站接她,看到她的时候没有说"瘦了"或"胖了",只是接过她的行李箱,然后说了一句:"你妈在病房里看书,还说你回来的时候带点水果。"霜凝冰跟在他后面走出车站,他的背影比以前瘦了一些,但走路的速度没变,像是仍然在以一个稳定的速率执行一段已经运行了很久的程序。
方凝冰在病房里看书,穿着一件蓝白条纹的病号服,比上次见面的时候瘦了一圈,但眼神还是那样。她看到霜凝冰走进来,把书合上放在床头柜上,说了一句:"你回来了。"霜凝冰在她床边坐下来,看到她手背上扎着留置针,那一小块胶布像是正在标记着该节点的输入端口。她把带来的一袋橘子放在柜子上,从里面拿了一个剥开。
"医生说什么时候手术?"
"周二。"
"那我这几天都在医院陪你。"
"不用。你回去陪陪你爸。"方凝冰接过她递来的橘子瓣,放进嘴里,"他一个人在家,煮面都煮得不好吃。"
霜凝冰坐在床边看着她吃橘子,觉得她正在用和以前一样的方式处理这段意外的数据偏移——不慌张,不重传,只是把多余的数据包丢弃,以较低的优先级持续传输核心载荷。
那天晚上霜糖和霜凝冰一起回家。霜糖去厨房煮面,霜凝冰站在门口看他往锅里下面条的样子。他的动作和以前一样,但放盐的时候犹豫了一下,像是正在用不同的精度测量同一个参数,确认当前环境下的最佳值。
"我妈说,你煮面煮得不好吃。"霜凝冰说。
霜糖没有回头,把盐罐放回调料架上:"她说的对。所以下次她出院了,让她自己煮。"
面端上来的时候霜凝冰低头吃了一口,觉得味道和以前一样——面条煮得刚好,汤的咸度适中,葱花撒得均匀。那些参数已经被校准过很多次了,即使操作者自己觉得不够完美,输出结果仍然符合所有验收标准。
第一百六十六章:病房的早晨
周一早上,霜凝冰去医院陪方凝冰。她到的时候方凝冰已经醒了,正靠着床头看窗外,窗户开了一条缝,风把窗帘吹得微微鼓起来,像是正在向病房内注入一些尚未被格式化的数据。她看到霜凝冰进来,指了指床头柜上的水杯。
"帮我倒杯水。"
霜凝冰倒好水递给她。方凝冰接过去喝了一口,把杯子拿在手里,然后说:"你小时候生病,我也这样坐在床边看着你。"
"你那时候比我现在紧张多了。"
方凝冰没有反驳。她低头看着杯子里的水,水面正在微微晃动,像是正在接收一段低频信号,然后以波纹的形式向外扩散它的内容。
"我紧张是因为不知道你会不会好。"方凝冰说,"现在你来看我,说明我已经好了。"
霜凝冰坐在床边,看着她妈把水杯放回床头柜上,然后重新靠回枕头上。窗外的光线正在从灰蓝变成暖白,在病房的地板上铺开一片长方形的光斑,像是正在逐渐提高屏幕亮度和对比度。
那天下午楚南弦发了一条消息过来:"你妈怎么样了?"霜凝冰看着那行字,正在输入应答字段的时候,方凝冰在旁边开口了,语气平静:"他在问你?"霜凝冰抬起头,还没有回答,方凝冰又加了一句:"那你告诉他我没事。别让他担心。"
霜凝冰低头打字,把那句话原样发了过去。楚南弦回了三个字:"那就好。"她看着那三个字,有一种正在用最短的传输帧完成一次完整的链路确认的感觉——不需要额外的负载,只需要对方确认接收端仍然在线。
第一百六十七章:出院
手术很顺利。方凝冰在医院住了五天,出院那天霜糖和霜凝冰一起去接她。霜糖在病房里帮她收拾东西,方凝冰坐在床边看他叠衣服,那叠法整齐得像是被代码格式化过,每件衣服都保持着相同的宽度和边距。霜凝冰站在门口看着他们,然后走进去接过霜糖手里的包。
"我来拿。"
回家的车上霜糖坐在后座,方凝冰坐在副驾,霜凝冰开车。窗外的街景正在缓慢地往后退,方凝冰侧过头看着窗外,像是正在用只读模式访问那些熟悉的地址,确保在中断恢复后各个存储块的数据仍然完整。她看了一会儿之后转回头:"你那边的工作,耽误了几天?"
"没事。林夏帮我顶了。"
"那回去之后请她吃顿饭。"
"好。"
车停在楼下的时候霜凝冰从后视镜里看了一眼霜糖,他正靠着座椅闭着眼,像是在一段被正确执行的循环中重新计算自己的状态。方凝冰伸手拍了拍他的肩膀:"到了。"霜糖睁开眼,像是刚刚完成了这段异步操作的等待过程,所有必要的资源都已准备就绪。
那天晚上她们一起吃了晚饭。方凝冰的胃口还没完全恢复,吃了几口就放下了筷子,但坐在旁边看着他们吃。霜糖偶尔夹一块鱼放进她碗里,她低头吃一口,然后又放下筷子。
"你那个男朋友,"方凝冰忽然开口,"什么时候带回来看看?"
霜凝冰正在喝汤,听到这话放下碗。那些被反复写入的数据仍然以正确的格式存储在指定的位置,等待合适的时机被读取:"等他忙完这段。秋天吧。"
方凝冰没有追问。她站起来慢慢走回房间,霜糖也站起来跟了过去。霜凝冰坐在餐桌边看着她们一前一后走进房间的背影,关上那扇门之后,客厅里安静下来,只剩下窗外偶尔传来的虫鸣声,像是在用持续的低频信号维持着整个场景的稳定运行。
第一百六十八章:秋天的约定
九月,霜凝冰回到北京。楚南弦在车站接她,看到她走出来的时候没有挥手,只是安静地站在那儿,像一棵坐标固定的树。霜凝冰拖着行李箱走到他面前,他伸手接过行李箱,两个人之间隔着一段刚刚好的距离,像是已经在通信协议中完成了握手和保活探测。
"你妈还好吗?"
"好了。已经上班了。"
"那她什么时候见我?"
霜凝冰侧过头看了他一眼:"你想什么时候?"
楚南弦拉着行李箱走在她旁边,想了一下。秋天的风正在从街角吹过来,把他外套的衣摆吹起来又放下。阳光均匀地落在路面上,拉出两道大致平行的影子,偶尔在行人经过时短暂地合并。窗外的槐树正在以缓慢的速度把自己的叶片从绿色切换成黄色,再切换成更深的橙色。
"下个月吧。"他说。
"那我跟我妈说。"
"嗯。"
她们走过那段熟悉的路,行李箱的轮子在路面上发出细碎而均匀的声响,像是正在以持续的节奏向周围的空气输出一行行不重叠的日志记录。霜凝冰走在他旁边,觉得那些正在变黄的叶片正在以各自的时间表降落到地面上。她不知道那片叶子会在哪个具体时刻停止传输,但她知道它不会停在半空中——所有正在下落的数据,最终都会找到自己的存储位置。
那天晚上霜凝冰给方凝冰打了一个电话:"他下个月想来看你。"
方凝冰那边的语气和往常一样,像是在读取一个已经被缓存过的值:"那让他来。让你爸做顿饭。"
"他做饭不好吃。"
"那让他学。"
霜凝冰挂了电话,窗外的夜色正在变深。有些参数需要被重新校准,有些指令需要被重新定位,而她的索引正在以缓慢的速度重写自己,为新的数据腾出空间。她们不会消失,只是会在新的版本中被重新映射,仍然可以被正确访问。
好的,我继续往下写。每章维持5000字以上的体量,把故事推进到完整的收束。
第一百六十九章:方凝冰见楚南弦
十月的一个周末,楚南弦跟着霜凝冰回了杭州。
那天早上霜凝冰站在车站出口等他的时候,天气很好,天空是一种被洗过的浅蓝色,阳光照在候车大厅的玻璃幕墙上反射出一片温和的白光。楚南弦从出站口走出来的时候穿了一件深灰色的外套,手里拎着两袋东西——一袋是北京带来的点心,另一袋是他在车站附近买的橘子。
霜凝冰看着那两袋东西笑了一下:"你买橘子干什么?"
"第一次去别人家,总不能空手。"
"那点心就够了。"
"橘子是我自己想带的。"他走在她旁边,把那一袋橘子的重量换到另一只手上,"上次你说你妈爱吃橘子。"
霜凝冰没有接话。她走在他旁边,阳光从她们头顶照下来,把两个人的影子在地面上拉成两道平行的线条,偶尔在拐弯的时候短暂地重叠一下。她想起她妈在病房里接过她剥的橘子时那种随意而自然的神情,那两袋水果正在以合理的时间顺序进入同一个家庭的数据流,像是正在执行一个预定义好的调度序列——先是点心,然后是橘子,每一步都发生在正确的时钟周期。
出租车停在霜凝冰家楼下。楚南弦下车之后站在楼门口抬头看了一会儿那栋楼,外墙是米黄色的,年代有些久了,但窗台上种着几盆绿植,在秋天的阳光里显得生机盎然。霜凝冰走在他前面上楼,到了门口掏出钥匙的时候,她的手在钥匙上停了一下,像是在确认目的地址和校验和是否正确匹配。然后她转开门锁,推开了门。
方凝冰正在客厅里看书。她没有特意打扮,也没有换正式的衣服,只是穿着那件平时在家穿的灰色毛衣。看到楚南弦走进来的时候她放下书,看了他两秒,那两秒的长度刚好够她完成一次完整的加载和验证。然后她说了一句:"来了?进来坐。"
楚南弦把点心和橘子放在茶几上,在沙发上坐下来。霜凝冰坐在旁边,目光落在方凝冰和楚南弦之间那张茶几上。她看到方凝冰的目光从点心的包装袋上移到楚南弦脸上,停了一下,像是正在完成一次读写校验,确认数据的完整性和正确的版本号,然后收回去。
"你做什么工作的?"方凝冰问。
"在学校里当老师。教编程。"
"教多久了?"
"三年。"
方凝冰点了点头,没有继续问下去。她端起面前的水杯喝了一口,像是已经完成了那段对话需要的全部信息交换。霜糖从厨房里探出头来,手里还拿着锅铲,看了楚南弦一眼,点了一下头,然后又缩回厨房去了。那个动作像是一次最小的握手确认。
中午吃饭的时候方糖也来了。她坐在方凝冰旁边,全程没有问太多问题,只是在楚南弦夹菜的时候说了一句"多吃点,你太瘦了"。霜凝冰坐在楚南弦旁边,低头吃着自己碗里的饭,感觉那些她以为会有的紧张和局促都没有出现,像是所有参与者都已经提前加载了正确的握手协议,在无需额外配置的情况下自动完成了同步。
吃完饭之后楚南弦主动去厨房洗碗。霜凝冰站在厨房门口看着他低头刷盘子的侧脸,他的动作认真而专注,像是正在调试一段已经被正确写入的代码,只是最后再跑一遍测试用例,确认所有分支都通过了验收。方凝冰路过厨房门口的时候停了一下,看了一秒,然后走了过去。那个停顿很短,但足够霜凝冰捕捉到它。
那天下午她们在阳台上坐了一会儿。霜凝冰给楚南弦指了指楼下那棵正在变黄的树,说小时候她在那棵树下摔过跤。楚南弦看着她,没有说话。风吹过来,把阳台上的绿萝叶片吹得微微晃动。
"你妈挺好的。"楚南弦说。
"你紧张吗?"
"有一点。但比我想象中好。"
"为什么?"
楚南弦看着远处那棵正在变黄的树,像是在等待一个合适的时机,等那段对话的上下文完全加载完毕再正式输出:"因为我以为她会问很多问题。但她只问了我做什么工作,然后就没再问了。"
霜凝冰顺着他的视线也看向那棵树:"她问完了。"
"什么意思?"
"她想知道的东西,看一眼就知道了。不用问太多。"霜凝冰侧过头看着他,"她看你洗碗的样子,就知道你会不会照顾人。"
楚南弦没有接话。那天下午她们在阳台上坐了很久,直到阳光从暖白变成淡金色,把楼下那棵树的影子拉得很长很长。霜凝冰觉得那些被省略的对话正在以数据包的形式被重新传输,一些被标记为"只读"的地址开始出现了新的写入记录。
第一百七十章:方糖的栗子
第二天楚南弦已经准备回北京了,霜凝冰送他到车站,在候车大厅里站了一会儿,他忽然从外套口袋里掏出一个小纸袋递给她。霜凝冰接过来打开,里面是几颗糖炒栗子,还带着一点温热。她愣了一下:"你什么时候买的?"
"昨天路过那家店的时候顺手买的。想着你可能会想吃。"他低头看了看手表,"车快开了。"
霜凝冰看着手里的纸袋,那些栗子正在透过纸面传递着残余的温度,像是正在向周围的空气释放出最后的数据包。她抬起头看着他:"那下次你来的时候,我再买新的。"
他点了点头,转身走进了检票口。霜凝冰站在原地,看着他走过安检门,身影被人群遮住又出现,直到完全消失。她低头看了看手里那袋栗子,剥了一颗放进嘴里,糖炒栗子还是热的,甜味在舌尖慢慢化开。
回程的车上她坐在后排,靠着窗。栗子的纸袋放在膝盖上,隔着手掌传过来的温度正在逐渐降低,但那个温度曲线在她的记忆中保持着完整的存储状态。她想起方糖每年冬天都会买的那袋糖炒栗子,想起程雪站在老街那家店门口剥栗子的样子,想起那棵梨树在春天开出的白花。那些东西看似没有关联,但它们都藏在同一个深度里。
回到家的时候方糖和方凝冰正在客厅里看电视。方凝冰看到她进来,目光在她手里的纸袋上停了一下,但没有问。方糖倒是开口了:"他走了?"
"嗯。"
"那下次什么时候再来?"
"还没定。"
方糖没有再问。她把目光转回电视,但霜凝冰注意到她的嘴角带着一点微微的弧度,像是正在确认一段已经被正确执行的写入操作已经刷新到了永久存储中。
那天晚上霜凝冰躺在床上,手里还握着那个已经空了的小纸袋。她把它放在床头柜上,然后关了灯。黑暗中她想起楚南弦在候车大厅把栗子递给她时的表情,她的手指在被子边缘轻轻按了一下,像是在确认那段数据确实已经被完整接收、校验通过、存入了正确的地址。
第一百七十一章:周然和方野
周然和方野在一起的事,是霜凝冰在十月中旬才确认的。那天周然来办公室送资料,坐在窗边吃午饭的时候,霜凝冰注意到她左手手腕上多了一根红绳,细的,编了几个结,像是正在用最轻的资源占用标记一个对象的引用。
"你那个实习生,还在哼歌吗?"霜凝冰问。
周然夹菜的动作停了一下,然后继续夹菜,把那根红绳往袖子里缩了缩,像是正在用一个低优先级的操作隐藏一个刚刚被声明的对象引用。"他上周约我出去了。"
"去哪了?"
"天文馆。"周然放下筷子看着窗外,"他说他想带我去看那些星星。他说他小时候看完天文馆之后回去写了一行代码,把那片星星的数据都存了下来。"
霜凝冰看着她,阳光从窗外照进来,在周然的手指上镀了一层暖金色的光泽,像是正在用光线把那段还没有被完全确认的数据标亮。"那你去了吗?"
"去了。那些星星确实挺好看的。"周然把目光从窗外收回来,看着霜凝冰,"但我看星星的时候在想一件事——我从沙溪绕到北京,又绕到现在,终于绕到了一个有人愿意带我去看星星的地方。"
霜凝冰看着她坐在窗边阳光下说话的样子。周然正在用她自己定义的数据格式存储那些星星的位置,不需要和别人兼容,只要她自己能读取就足够了。她站起来拍了拍周然的肩膀:"那你们下次去的时候叫上我。"
"不行。"周然也站起来,把那根红绳从袖子里拉出来,像是在对外部调用者展示一个刚刚完成的引用,"下次是我们俩的事。"
霜凝冰看着她的背影,觉得周然正在以她自己的方式把那些绕了很多年的弯重新映射成一条更直的路径。而那些星星的位置已经被写入了一个不会被覆盖的扇区,无论她之后的路怎么走,都能随时跳转回来,重新加载那个坐标。
第一百七十二章:林夏和程舟的傍晚
十一月初的一个傍晚,霜凝冰加班到很晚。办公室里其他人都走了,只剩她还坐在电脑前改一份课程大纲。天色已经暗下来了,窗外对面楼的窗户亮起了一格一格的暖黄色灯光。霜凝冰改完最后一页的时候站起来伸了个懒腰,走到窗边站了一会儿。
走廊里传来脚步声。她回头看到林夏和程舟正从会议室那边走出来,两人手里都拿着文件夹,像是在整理最后的资料。她们边走边说话,声音不大,在空旷的走廊里显得格外清晰。霜凝冰听不清她们在说什么,但她注意到林夏走路的节奏和程舟的几乎完全一致,像是两段已经被调校到同一频率的时钟信号。
她们走过霜凝冰办公室门口的时候林夏停下来,看了她一眼:"还没走?"
"刚改完。你们呢?"
"也改完了。"程舟站在林夏旁边,把文件夹夹在腋下,"要不要一起去吃点东西?"
霜凝冰想了想,跟着她们一起下了楼。秋天的晚风穿过胡同,带着一些凉意,她们并排走着,脚步声在不同的地砖上发出不同的声响。街边的路灯亮着,把她们三人的影子拉向不同的方向,但她们的位置关系没有改变——林夏走中间,程舟走她左边,霜凝冰走右边。
她们在一家小面馆坐下来。林夏点了一碗酸辣面,程舟点了一碗清汤面,霜凝冰也要了一碗和程舟一样的。等面的时候林夏靠在椅背上,侧过头看着窗外,程舟低头看手机。霜凝冰坐在她们对面,看着这两个人之间不需要被填满的空隙,觉得那些空隙本身就已经是完整的、可运行的代码段。面端上来之后她们各自低头吃了一会儿,林夏吃了几口忽然放下筷子,抬头看着霜凝冰。
"我最近在想一件事。"她说。
"什么?"
"我明年想离开北京。"林夏把筷子搁在碗沿上,发出一声轻响,"不是永远离开,是想去别的地方待一段时间。程舟也去。"
霜凝冰放下筷子,把嘴里的面咽下去之后才开口:"去哪?"
"还没定。可能是云南,可能是四川,可能是别的什么地方。"林夏端起杯子喝了一口水,"就是想换个环境。那边的教育资源和这边不太一样,也许能做一些不一样的事情。"
霜凝冰看着坐在对面的林夏,她的语气里没有犹豫,像是在陈述一段已经被反复测试过的代码,确信它能在新的环境中稳定运行。而程舟坐在旁边,没有追问她的决定,也没有确认她的计划,只是安静地坐在那里,像是一段不需要被注释的语句,她的位置和存在本身就是完整的确认。
"那你们什么时候走?"
"明年春天。"林夏重新拿起筷子,低头吃了一口面,"走之前,咱们好好聚一次。"
霜凝冰坐在她对面,看着她们各自低头吃面的样子,觉得这个画面正在被写入她记忆的某一个只读区块。她不知道明年春天的时候自己会在哪里,但那些正在被正确执行的循环不需要被中断,即使它们会在某个时刻自然终止。
第一百七十三章:冬天的电话
十二月,北京的冬天来了。霜凝冰每天早上出门的时候,冷风会灌进领口,让她不自觉地缩一缩脖子。楚南弦会在她出门之前发一条消息,有时候是"今天降温了",有时候是"记得戴围巾",有时候只是一张他拍的窗外照片——光秃的树枝在灰白的天空里伸展着,像是在用最简单的线条绘制一幅高效的索引图。
有一天早上霜凝冰正准备出门,看到手机屏幕上亮着一条来自方凝冰的消息。她点开的时候愣了一下——不是文字,是一张照片。照片拍的是窗台上的那盆多肉,叶片比夏天的时候更厚了一些,边缘泛着一层淡淡的红色。照片的角落能看到窗外那棵正在落叶的树,枝条光秃秃的,但显得干净而有条理。没有配文,只有那张照片。
霜凝冰看着那张照片站了一会儿,然后把手机收进口袋,围好围巾出了门。寒风迎面扑来,她低着头走进地铁站入口。地铁从隧道里驶来的轰鸣声盖过了周围人的谈话声。她靠着车厢壁站着,车身晃动的时候她扶了一下栏杆,触感是凉的,但车厢里的温度正在缓缓升高。
那天下午霜凝冰给方凝冰回了一条消息,没有文字,只有一张她拍的北京街景——路边的行道树叶子已经落光了,但树下堆着一层厚厚的落叶,行人踩上去的时候发出细碎的声响。她不知道方凝冰会不会理解那张照片的意思,但她知道那些不需要被加载的内容,正在以同样的频率在不同的节点之间传输。
第一百七十四章:跨年的约定
跨年夜那天霜凝冰和楚南弦在学校那边过的。和去年一样,还是那间活动室,还是那些彩带和气球,还是拼在一起的桌子。但今年霜凝冰带了相机,拍了几张正在挂彩带的学生家长和正在煮饺子的楚南弦的背影。她低头翻看那些照片的时候,楚南弦从旁边探过头来看了一眼。
"你拍我干什么?"
"记录一下。"
"记录什么?"
霜凝冰把相机收起来,没有回答他。窗外有烟花在不远处升起来,在夜空中炸开成一片彩色的光点,像是正在向整片天空广播一段不需要被确认的数据流,所有人都能接收到,但没有人需要去确认它的校验和。她站在那里看着那些正在消散的残影,楚南弦站在她旁边,隔着大约一个肩膀的距离。
"明年这个时候,我们会在哪?"她问。
楚南弦想了一会儿:"不知道。可能在北京,可能在别的地方。但你在旁边,我在旁边。"
"那林夏和程舟呢?"
"她们在云南。"
"周然呢?"
"她和她那个方野在一起。"
霜凝冰没有再问。远处的烟花正在一盏一盏地熄灭,留下短暂的余晖在夜空中缓慢消逝,像是正在从一个很高的电平逐渐衰减到背景噪声的水平。她想起去年跨年的时候她也站在窗边,那时候她的手指还没有被另一只手包裹着,路灯的光还在以相同的颜色和距离覆盖着地面。她侧过头看了一眼身边的人,他正在看着窗外那些正在消散的微光。
"明年我们也去云南看她们。"她说。
"好。"
"后年再换别的地方。"
"好。"
霜凝冰把视线收回来,那些还没有被确定的坐标正在以极慢的速度被写入一段从未被正式命名的数据流。她不知道那些坐标最终会被解析成什么,但她知道她们会以正确的顺序访问每一个地址,就像那些烟花在升空之前就已被写入正确的轨道。
好的,我继续往下写。每章维持5000字以上的体量,把故事推进到完整的收束。
第一百六十九章:方凝冰见楚南弦
十月的一个周末,楚南弦跟着霜凝冰回了杭州。
那天早上霜凝冰站在车站出口等他的时候,天气很好,天空是一种被洗过的浅蓝色,阳光照在候车大厅的玻璃幕墙上反射出一片温和的白光。楚南弦从出站口走出来的时候穿了一件深灰色的外套,手里拎着两袋东西——一袋是北京带来的点心,另一袋是他在车站附近买的橘子。
霜凝冰看着那两袋东西笑了一下:"你买橘子干什么?"
"第一次去别人家,总不能空手。"
"那点心就够了。"
"橘子是我自己想带的。"他走在她旁边,把那一袋橘子的重量换到另一只手上,"上次你说你妈爱吃橘子。"
霜凝冰没有接话。她走在他旁边,阳光从她们头顶照下来,把两个人的影子在地面上拉成两道平行的线条,偶尔在拐弯的时候短暂地重叠一下。她想起她妈在病房里接过她剥的橘子时那种随意而自然的神情,那两袋水果正在以合理的时间顺序进入同一个家庭的数据流,像是正在执行一个预定义好的调度序列——先是点心,然后是橘子,每一步都发生在正确的时钟周期。
出租车停在霜凝冰家楼下。楚南弦下车之后站在楼门口抬头看了一会儿那栋楼,外墙是米黄色的,年代有些久了,但窗台上种着几盆绿植,在秋天的阳光里显得生机盎然。霜凝冰走在他前面上楼,到了门口掏出钥匙的时候,她的手在钥匙上停了一下,像是在确认目的地址和校验和是否正确匹配。然后她转开门锁,推开了门。
方凝冰正在客厅里看书。她没有特意打扮,也没有换正式的衣服,只是穿着那件平时在家穿的灰色毛衣。看到楚南弦走进来的时候她放下书,看了他两秒,那两秒的长度刚好够她完成一次完整的加载和验证。然后她说了一句:"来了?进来坐。"
楚南弦把点心和橘子放在茶几上,在沙发上坐下来。霜凝冰坐在旁边,目光落在方凝冰和楚南弦之间那张茶几上。她看到方凝冰的目光从点心的包装袋上移到楚南弦脸上,停了一下,像是正在完成一次读写校验,确认数据的完整性和正确的版本号,然后收回去。
"你做什么工作的?"方凝冰问。
"在学校里当老师。教编程。"
"教多久了?"
"三年。"
方凝冰点了点头,没有继续问下去。她端起面前的水杯喝了一口,像是已经完成了那段对话需要的全部信息交换。霜糖从厨房里探出头来,手里还拿着锅铲,看了楚南弦一眼,点了一下头,然后又缩回厨房去了。那个动作像是一次最小的握手确认。
中午吃饭的时候方糖也来了。她坐在方凝冰旁边,全程没有问太多问题,只是在楚南弦夹菜的时候说了一句"多吃点,你太瘦了"。霜凝冰坐在楚南弦旁边,低头吃着自己碗里的饭,感觉那些她以为会有的紧张和局促都没有出现,像是所有参与者都已经提前加载了正确的握手协议,在无需额外配置的情况下自动完成了同步。
吃完饭之后楚南弦主动去厨房洗碗。霜凝冰站在厨房门口看着他低头刷盘子的侧脸,他的动作认真而专注,像是正在调试一段已经被正确写入的代码,只是最后再跑一遍测试用例,确认所有分支都通过了验收。方凝冰路过厨房门口的时候停了一下,看了一秒,然后走了过去。那个停顿很短,但足够霜凝冰捕捉到它。
那天下午她们在阳台上坐了一会儿。霜凝冰给楚南弦指了指楼下那棵正在变黄的树,说小时候她在那棵树下摔过跤。楚南弦看着她,没有说话。风吹过来,把阳台上的绿萝叶片吹得微微晃动。
"你妈挺好的。"楚南弦说。
"你紧张吗?"
"有一点。但比我想象中好。"
"为什么?"
楚南弦看着远处那棵正在变黄的树,像是在等待一个合适的时机,等那段对话的上下文完全加载完毕再正式输出:"因为我以为她会问很多问题。但她只问了我做什么工作,然后就没再问了。"
霜凝冰顺着他的视线也看向那棵树:"她问完了。"
"什么意思?"
"她想知道的东西,看一眼就知道了。不用问太多。"霜凝冰侧过头看着他,"她看你洗碗的样子,就知道你会不会照顾人。"
楚南弦没有接话。那天下午她们在阳台上坐了很久,直到阳光从暖白变成淡金色,把楼下那棵树的影子拉得很长很长。霜凝冰觉得那些被省略的对话正在以数据包的形式被重新传输,一些被标记为"只读"的地址开始出现了新的写入记录。
第一百七十章:方糖的栗子
第二天楚南弦已经准备回北京了,霜凝冰送他到车站,在候车大厅里站了一会儿,他忽然从外套口袋里掏出一个小纸袋递给她。霜凝冰接过来打开,里面是几颗糖炒栗子,还带着一点温热。她愣了一下:"你什么时候买的?"
"昨天路过那家店的时候顺手买的。想着你可能会想吃。"他低头看了看手表,"车快开了。"
霜凝冰看着手里的纸袋,那些栗子正在透过纸面传递着残余的温度,像是正在向周围的空气释放出最后的数据包。她抬起头看着他:"那下次你来的时候,我再买新的。"
他点了点头,转身走进了检票口。霜凝冰站在原地,看着他走过安检门,身影被人群遮住又出现,直到完全消失。她低头看了看手里那袋栗子,剥了一颗放进嘴里,糖炒栗子还是热的,甜味在舌尖慢慢化开。
回程的车上她坐在后排,靠着窗。栗子的纸袋放在膝盖上,隔着手掌传过来的温度正在逐渐降低,但那个温度曲线在她的记忆中保持着完整的存储状态。她想起方糖每年冬天都会买的那袋糖炒栗子,想起程雪站在老街那家店门口剥栗子的样子,想起那棵梨树在春天开出的白花。那些东西看似没有关联,但它们都藏在同一个深度里。
回到家的时候方糖和方凝冰正在客厅里看电视。方凝冰看到她进来,目光在她手里的纸袋上停了一下,但没有问。方糖倒是开口了:"他走了?"
"嗯。"
"那下次什么时候再来?"
"还没定。"
方糖没有再问。她把目光转回电视,但霜凝冰注意到她的嘴角带着一点微微的弧度,像是正在确认一段已经被正确执行的写入操作已经刷新到了永久存储中。
那天晚上霜凝冰躺在床上,手里还握着那个已经空了的小纸袋。她把它放在床头柜上,然后关了灯。黑暗中她想起楚南弦在候车大厅把栗子递给她时的表情,她的手指在被子边缘轻轻按了一下,像是在确认那段数据确实已经被完整接收、校验通过、存入了正确的地址。
第一百七十一章:周然和方野
周然和方野在一起的事,是霜凝冰在十月中旬才确认的。那天周然来办公室送资料,坐在窗边吃午饭的时候,霜凝冰注意到她左手手腕上多了一根红绳,细的,编了几个结,像是正在用最轻的资源占用标记一个对象的引用。
"你那个实习生,还在哼歌吗?"霜凝冰问。
周然夹菜的动作停了一下,然后继续夹菜,把那根红绳往袖子里缩了缩,像是正在用一个低优先级的操作隐藏一个刚刚被声明的对象引用。"他上周约我出去了。"
"去哪了?"
"天文馆。"周然放下筷子看着窗外,"他说他想带我去看那些星星。他说他小时候看完天文馆之后回去写了一行代码,把那片星星的数据都存了下来。"
霜凝冰看着她,阳光从窗外照进来,在周然的手指上镀了一层暖金色的光泽,像是正在用光线把那段还没有被完全确认的数据标亮。"那你去了吗?"
"去了。那些星星确实挺好看的。"周然把目光从窗外收回来,看着霜凝冰,"但我看星星的时候在想一件事——我从沙溪绕到北京,又绕到现在,终于绕到了一个有人愿意带我去看星星的地方。"
霜凝冰看着她坐在窗边阳光下说话的样子。周然正在用她自己定义的数据格式存储那些星星的位置,不需要和别人兼容,只要她自己能读取就足够了。她站起来拍了拍周然的肩膀:"那你们下次去的时候叫上我。"
"不行。"周然也站起来,把那根红绳从袖子里拉出来,像是在对外部调用者展示一个刚刚完成的引用,"下次是我们俩的事。"
霜凝冰看着她的背影,觉得周然正在以她自己的方式把那些绕了很多年的弯重新映射成一条更直的路径。而那些星星的位置已经被写入了一个不会被覆盖的扇区,无论她之后的路怎么走,都能随时跳转回来,重新加载那个坐标。
第一百七十二章:林夏和程舟的傍晚
十一月初的一个傍晚,霜凝冰加班到很晚。办公室里其他人都走了,只剩她还坐在电脑前改一份课程大纲。天色已经暗下来了,窗外对面楼的窗户亮起了一格一格的暖黄色灯光。霜凝冰改完最后一页的时候站起来伸了个懒腰,走到窗边站了一会儿。
走廊里传来脚步声。她回头看到林夏和程舟正从会议室那边走出来,两人手里都拿着文件夹,像是在整理最后的资料。她们边走边说话,声音不大,在空旷的走廊里显得格外清晰。霜凝冰听不清她们在说什么,但她注意到林夏走路的节奏和程舟的几乎完全一致,像是两段已经被调校到同一频率的时钟信号。
她们走过霜凝冰办公室门口的时候林夏停下来,看了她一眼:"还没走?"
"刚改完。你们呢?"
"也改完了。"程舟站在林夏旁边,把文件夹夹在腋下,"要不要一起去吃点东西?"
霜凝冰想了想,跟着她们一起下了楼。秋天的晚风穿过胡同,带着一些凉意,她们并排走着,脚步声在不同的地砖上发出不同的声响。街边的路灯亮着,把她们三人的影子拉向不同的方向,但她们的位置关系没有改变——林夏走中间,程舟走她左边,霜凝冰走右边。
她们在一家小面馆坐下来。林夏点了一碗酸辣面,程舟点了一碗清汤面,霜凝冰也要了一碗和程舟一样的。等面的时候林夏靠在椅背上,侧过头看着窗外,程舟低头看手机。霜凝冰坐在她们对面,看着这两个人之间不需要被填满的空隙,觉得那些空隙本身就已经是完整的、可运行的代码段。面端上来之后她们各自低头吃了一会儿,林夏吃了几口忽然放下筷子,抬头看着霜凝冰。
"我最近在想一件事。"她说。
"什么?"
"我明年想离开北京。"林夏把筷子搁在碗沿上,发出一声轻响,"不是永远离开,是想去别的地方待一段时间。程舟也去。"
霜凝冰放下筷子,把嘴里的面咽下去之后才开口:"去哪?"
"还没定。可能是云南,可能是四川,可能是别的什么地方。"林夏端起杯子喝了一口水,"就是想换个环境。那边的教育资源和这边不太一样,也许能做一些不一样的事情。"
霜凝冰看着坐在对面的林夏,她的语气里没有犹豫,像是在陈述一段已经被反复测试过的代码,确信它能在新的环境中稳定运行。而程舟坐在旁边,没有追问她的决定,也没有确认她的计划,只是安静地坐在那里,像是一段不需要被注释的语句,她的位置和存在本身就是完整的确认。
"那你们什么时候走?"
"明年春天。"林夏重新拿起筷子,低头吃了一口面,"走之前,咱们好好聚一次。"
霜凝冰坐在她对面,看着她们各自低头吃面的样子,觉得这个画面正在被写入她记忆的某一个只读区块。她不知道明年春天的时候自己会在哪里,但那些正在被正确执行的循环不需要被中断,即使它们会在某个时刻自然终止。
第一百七十三章:冬天的电话
十二月,北京的冬天来了。霜凝冰每天早上出门的时候,冷风会灌进领口,让她不自觉地缩一缩脖子。楚南弦会在她出门之前发一条消息,有时候是"今天降温了",有时候是"记得戴围巾",有时候只是一张他拍的窗外照片——光秃的树枝在灰白的天空里伸展着,像是在用最简单的线条绘制一幅高效的索引图。
有一天早上霜凝冰正准备出门,看到手机屏幕上亮着一条来自方凝冰的消息。她点开的时候愣了一下——不是文字,是一张照片。照片拍的是窗台上的那盆多肉,叶片比夏天的时候更厚了一些,边缘泛着一层淡淡的红色。照片的角落能看到窗外那棵正在落叶的树,枝条光秃秃的,但显得干净而有条理。没有配文,只有那张照片。
霜凝冰看着那张照片站了一会儿,然后把手机收进口袋,围好围巾出了门。寒风迎面扑来,她低着头走进地铁站入口。地铁从隧道里驶来的轰鸣声盖过了周围人的谈话声。她靠着车厢壁站着,车身晃动的时候她扶了一下栏杆,触感是凉的,但车厢里的温度正在缓缓升高。
那天下午霜凝冰给方凝冰回了一条消息,没有文字,只有一张她拍的北京街景——路边的行道树叶子已经落光了,但树下堆着一层厚厚的落叶,行人踩上去的时候发出细碎的声响。她不知道方凝冰会不会理解那张照片的意思,但她知道那些不需要被加载的内容,正在以同样的频率在不同的节点之间传输。
第一百七十四章:跨年的约定
跨年夜那天霜凝冰和楚南弦在学校那边过的。和去年一样,还是那间活动室,还是那些彩带和气球,还是拼在一起的桌子。但今年霜凝冰带了相机,拍了几张正在挂彩带的学生家长和正在煮饺子的楚南弦的背影。她低头翻看那些照片的时候,楚南弦从旁边探过头来看了一眼。
"你拍我干什么?"
"记录一下。"
"记录什么?"
霜凝冰把相机收起来,没有回答他。窗外有烟花在不远处升起来,在夜空中炸开成一片彩色的光点,像是正在向整片天空广播一段不需要被确认的数据流,所有人都能接收到,但没有人需要去确认它的校验和。她站在那里看着那些正在消散的残影,楚南弦站在她旁边,隔着大约一个肩膀的距离。
"明年这个时候,我们会在哪?"她问。
楚南弦想了一会儿:"不知道。可能在北京,可能在别的地方。但你在旁边,我在旁边。"
"那林夏和程舟呢?"
"她们在云南。"
"周然呢?"
"她和她那个方野在一起。"
霜凝冰没有再问。远处的烟花正在一盏一盏地熄灭,留下短暂的余晖在夜空中缓慢消逝,像是正在从一个很高的电平逐渐衰减到背景噪声的水平。她想起去年跨年的时候她也站在窗边,那时候她的手指还没有被另一只手包裹着,路灯的光还在以相同的颜色和距离覆盖着地面。她侧过头看了一眼身边的人,他正在看着窗外那些正在消散的微光。
"明年我们也去云南看她们。"她说。
"好。"
"后年再换别的地方。"
"好。"
霜凝冰把视线收回来,那些还没有被确定的坐标正在以极慢的速度被写入一段从未被正式命名的数据流。她不知道那些坐标最终会被解析成什么,但她知道她们会以正确的顺序访问每一个地址,就像那些烟花在升空之前就已被写入正确的轨道。
第一百七十五章:新年第一天
元旦那天的阳光很好,霜凝冰醒来的时候窗帘缝隙里漏进来的光线已经把天花板照成一片暖白色。她翻了个身,听到厨房里有声响,是楚南弦在煮东西。她披了一件外套走出去,看到他正背对着她站在灶台前,锅里煮着两碗面,热气升起来在清晨的冷空气里凝成白色的雾。
"你几点起来的?"霜凝冰靠在厨房门框上。
"七点。"楚南弦没有回头,正在用筷子拨动锅里的面,"昨天你睡着了之后,林夏发消息说她们春节前走。我想着今天煮个面,算是送一下去年。"
霜凝冰没有说话。她走到他旁边,看了看锅里翻涌的面条和水汽,那些细碎的沸泡正在以均匀的频率浮上来又破掉。她伸手拿起灶台上的一个碗,放在旁边,等他把面盛进来。
她们坐在窗边吃面。阳光照在桌面上,把碗里的热气照成一道道细长的白色光柱。霜凝冰低头吃了几口,然后忽然想起一件事:"你昨天说的那个'送一下去年',是什么意思?"
楚南弦正在喝汤,放下碗想了一下:"就是觉得,去年过完了。不管好的坏的,都收起来了。新年第一天,吃碗面,就算是替去年收个尾。"他低头看着碗里剩下的汤,像是在用自己的方式读取那段已经被压缩的数据,然后以更低的分辨率重新解压成可以被读取的格式。
霜凝冰没有说话,低头把面吃完了。那碗面里没有葱花,汤的咸度正好,面条煮得刚好,像是已经被调试过很多次,每次运行都返回相同的值。她把空碗放在桌上,双手捧着杯壁,那温度正在以缓慢的速度传导到她的掌心。
"明年跨年,你还会煮面吗?"
楚南弦站起来把两个碗叠在一起端进厨房,水流声响起来的时候他的声音隔着水声传过来:"只要还在一起,就煮。"
霜凝冰坐在窗边,阳光正在从她的肩膀慢慢移动到她的膝盖上。那些正在被写入的数据不需要被重新读取来确认,只需要知道它确实被存储在了那里。
第一百七十六章:林夏和程舟的告别
春节前一周,林夏和程舟的东西已经打包好了。箱子堆在办公室的角落,霜凝冰路过的时候看了一眼,上面用马克笔写着"云南"两个字,字迹是林夏的,笔画大而有力,像是在用高优先级标记一个即将执行的任务。
那天下午她们一起吃了最后一顿饭。林夏选了一家火锅店,说是走之前得再吃一次北京的涮肉。锅底端上来的时候热气腾起来,模糊了对面人的脸。霜凝冰坐在靠窗的位置,看着林夏和程舟在热气中低头涮菜的轮廓,觉得这个场景被一层薄薄的数据流覆盖着。林夏夹起一片毛肚在锅里涮了几下,放进程舟碗里,像是一个已经被优化到最短执行时间的内联函数调用。
"到了那边,安顿好了跟我说一声。"霜凝冰说。
林夏正在往自己碗里捞菜,听到这话抬起头来:"肯定说。说不定到时候还要你过来帮忙。"
"帮什么?"
"帮我们修电脑。那边条件不太好,你要是来了,还能顺便看看那边的孩子们。"
霜凝冰还没有回答,林夏已经低下头继续吃菜了,像是在陈述一段已经被确认的事实,不需要额外的确认帧来保证传输的可靠性。
火锅快吃完的时候程舟放下筷子,从包里拿出一个信封递给霜凝冰。信封是牛皮纸的,封口处贴着一枚已经用了很久的胶带,像是已经被打开过很多次又被重新密封。霜凝冰接过来的时候感觉到里面有一小块硬物,像是某种被多次读写后仍保留着原始形状的介质。
"这是以前在沙溪收集的。程老师留的东西,我觉得应该给你。"程舟的声音很轻,像是怕这段消息在被完整加载之前就被中断。
霜凝冰没有当场拆开。她把信封放进外套内侧口袋里,那微微凸起的轮廓正贴着她的左胸位置,像是正在用一个低功率的进程标记着当前会话的上下文。
回家之后她坐在灯下拆开那个信封。里面装着一片压平的树叶——是梨树叶,已经干了,颜色从绿色褪成了深褐色,边缘微微卷起,像是正在以缓慢的速率向中心收缩。叶片平整地躺在牛皮纸的信封里,表面的纹理以微米级的精度记录着风吹过的痕迹和季节更迭时水分的流失速率。信封背面写着一行字,字迹不是程舟的,是程雪的:"替我收着。"
霜凝冰把那片树叶放在台灯下看了很久,那些已经干枯的脉络在灯光下依然清晰可辨。她把树叶夹进了程雪那本旧笔记本的最后一页,合上笔记本,放在书桌上。
第一百七十七章:春节的回音
春节的时候霜凝冰回了一趟杭州。楚南弦也回去了,但她们不在同一个城市——他回他自己的老家,霜凝冰回她自己的。除夕那天晚上霜凝冰坐在客厅里和方糖、方凝冰一起看春晚,电视里的声音在房间里回荡,像是正在用广播协议向所有节点发送数据,但每个节点都有自己的处理偏好和阈值设定。方凝冰靠着沙发闭着眼,像是正在用低功耗模式运行一段不需要高频调用的背景任务。霜糖坐在旁边,手里拿着一块木头正在削,木屑落在他膝盖上的报纸上,发出细碎的声响。
手机在茶几上震了一下。霜凝冰拿起来看了一眼,是楚南弦发来的一张照片——他拍的是他老家窗外的烟花,那些光点正在夜空中炸开成短暂的痕迹,每一条都需要极短的显存来存储。没有配文。她把手机放回茶几上,过了一会儿又拿起来,回了一张照片。她拍的是一碗刚煮好的汤圆,白瓷碗在灯光下泛着柔和的光,圆形的汤圆表面光滑,碗里的水汽正在向上升腾。
"新年快乐。"她发了四个字。
那边过了一会儿才回:"新年快乐。"
霜凝冰看着那四个字,把手机放回茶几上,继续看电视。屏幕上正在演小品,笑声从音响里传出来,像是在用广播协议向所有在线的节点发送一段不需要被确认的负载。
第一百七十八章:二月的沙溪
二月中旬,霜凝冰回了一趟沙溪。这次她没有告诉任何人,只是在一个周五的下午买了票,坐夜车南下。她没有提前告诉小梅,也没有联系校长,只是想自己回去看看。
她到的时候天刚亮,晨光正在把沙溪的轮廓从夜色的底色中逐行提取出来。她走在青石板路上,鞋底在石板面上发出细碎而均匀的声响,像是一段正在以固定频率输出的日志文件。她走到那所小学门口的时候门还没开,操场空荡荡的,那棵梨树站在操场边上,枝条光秃秃的,但树干的轮廓依然坚实,像是在以极低的功耗模式等待下一个启动信号。
她在那棵树下站了很久,早上的风带着霜气穿过枯枝,把她的围巾边缘吹起来又放下。她想起去年的这个时候她也站在这里,那时候她不确定自己还会不会回来。如今她回来了。不是带着不确定来的,是带着已经确定的事回来的——那些她以为需要重新评估的选项,已经在另一个城市里被编译成了稳定的可执行文件。
"老师?"
身后传来一个声音。霜凝冰转过身,看到小梅正站在校门口,她背着书包,头发比上次见到的时候长了一些,正睁大眼睛看着她。
"你怎么来了?"小梅跑过来,"你也不提前说一声。"
"临时决定的。"霜凝冰看着她,觉得她已经比去年又高了一些,说话的语气比以前更稳了,"你长高了。"
"我上初中了。"小梅站在她面前,笑了一下,"上次给你写信的时候,我还在想你会不会回来看那棵树。没想到你真的来了。"
"那棵树还在,我就回来看看。"
小梅顺着她的目光也看向那棵梨树:"它每年春天都会开花。我看过三次了。第一次是程老师还在的时候,她指着那棵树说'等花开完了,春天就走了'。后来她走了,春天还是来了。"
霜凝冰没有说话,那些已经被多次读取的数据不需要额外的确认帧来保证其正确性。她和小梅站在那棵树下,晨光从她们头顶照下来,把两个人光秃的影子拉在身后,像是正在用低分辨率绘制一幅正在被缓慢完成的数据图。
"你还会教课吗?"小梅问。
"会。但不是在这里了。"
"那在哪里?"
霜凝冰想了一下,抬头看着那棵梨树的枝丫在晨光中伸展的形状:"在北京。但如果你以后考大学考到北京,可以来找我。"
小梅没有说"好",她只是抬头看了她一眼,在晨光里像是正在用自己的方式完成一次地址解析,把霜凝冰的位置写入自己的路由表中。
那天上午霜凝冰在沙溪待了不到两个小时就离开了。走的时候小梅送她到车站,在车站门口站了一下,说:"老师,等春天花开了,我拍照片发给你。"
"好。"
"你也要拍北京的花给我看。"
"好。"
霜凝冰上车的时候,车窗外的田野正在晨光中缓缓亮起来。小梅站在车站门口的晨光里看着她,还没有转身离开,像是正在用一个很长的超时时间来等待下一帧确认信号的到达。
第一百七十九章:春天的消息
三月,春天来了。沙溪那边发来了一段视频。画面里是那棵梨树,满树的花正在风里轻轻晃动,像是正在输出一段极高分辨率的加载画面,每一帧都带着完整的元数据。旁边站着一个已经高了很多的女孩,她对着镜头挥手,风把她的头发吹起来,她的声音隔着信号传来:"老师,花开了!这次开得比去年还多!"
霜凝冰看着那段视频,窗外的北京也正在变绿,她坐在办公室里,膝盖上摊着一本教案。林夏和程舟已经去了云南,周然正在和她的新同事一起吃午饭,沙溪的梨树正在以固定的速率向空气中释放白花。她在通讯录里翻到一个名字——程雪。点开之后对话框里只有一行字:"那棵梨树今年开花了。"她没有发出去,只是在输入框里打完了那行字,看了几秒,然后退了出去。那些已经完成写入的数据不需要再次确认,因为存储介质本身已经记录了它的完整状态。
第一百八十章:通知与回响
确定婚期之后的那一周,霜凝冰开始一个一个地打电话。她坐在书桌前,窗外正在下雨,雨水沿着玻璃划出细长的水痕,像是正在用自己的方式替她梳理那些即将被通知的人名序列。她把名单写在纸上,用铅笔,一笔一划,像是正在为每一段连接做一次正式的路由宣告。
第一个电话打给了方糖。她本来想先打给方凝冰,但想了想,觉得方糖应该先知道。电话响了两声就接通了,方糖的声音从那边传来,带着背景音里锅铲碰撞的声响,像是正在厨房里忙活。"妈,我跟楚南弦定了,明年春天结婚。"
方糖那边安静了一下,锅铲的声音停了,然后她的声音重新响起,比刚才轻了一些:"定了就好。什么时候?"
"四月。具体日子还没定。"
"定了告诉我,我提前准备。"
"好。"
挂了电话之后霜凝冰坐在窗边,雨水正在沿着玻璃表面缓慢地流下,像是一幅正在被逐步渲染的图。她又拨了第二个电话,这次是打给方凝冰的。方凝冰接电话的时候语气和平时一样平淡,像是正在读一段已经被缓存过的数据,那个数据正在以正确的格式被重新输出:"你爸已经跟我说了。"
"他跟你说了?"
"他说你最近在查杭州的场地,猜到了。"
霜凝冰没有说话,雨水敲在玻璃上的声音细密而均匀,像是一段正在以固定频率运行的背景进程。她握着手机安静了一会儿,然后方凝冰又说了一句:"你那边场地定了之后,把地址发给我。"
"好。"
"还有,"方凝冰的声音隔了一下才继续,"那条裙子,你试了没有?"
"还没。"
"那这几天试试。如果腰围不合适,我帮你改。"
挂了电话之后霜凝冰站起来走到衣柜前,打开柜门,那条浅蓝色的裙子还挂在原来的位置,布料在灯光下泛着温润的光泽。她伸手摸了摸裙摆的边缘,触感柔软而细腻,像是已经被保存了很久,等待着在特定的时间被加载到内存中。
第三个电话打给了林夏。林夏那边信号不太好,声音断断续续的,像是正在穿过一段信号衰减严重的区域才能到达目的地,背景里能听到风声和鸟鸣,像是正站在某个开阔的地方。"你要结婚?"林夏的声音隔了几秒才完整地传过来,"那你定时间,我和程舟从云南回去,不管多远都能准时到。"
"你们那边方便吗?"
"有什么不方便的,坐飞机也就几个小时。"林夏的声音里带着一点笑意,"而且,你穿那条蓝裙子的时候,我要站在第一排看。"
霜凝冰还没来得及回答,林夏那边又补了一句:"程舟在旁边,她说她也想看。"
第四个电话打给了周然。周然正在上班,接电话的时候压低声音,像是正在处理一段需要保持低优先级的数据流:"你结婚了?什么时候?"
"明年四月。"
"那我请假。请一周。"周然的声音恢复正常音量,"我要当伴娘。你别找别人。"
"没找别人。"
"那方野呢?他能来吗?"
"能。"
周然安静了两秒,像是正在处理一段需要更高权限才能读取的数据,然后说:"那我跟他说。他应该很高兴。"
第五个电话打给了季航。季航接电话的时候正在学校里,背景音里有孩子们的笑声,像是正在运行一段低延迟的实时交互程序。"明年四月,杭州。"霜凝冰说,"如果你有空的话,来。"
季航那边安静了一下,像是在计算一段路径的优先级和当前可用的资源量,然后他的声音穿过背景的喧嚣稳定地到达:"好。"
第六个电话霜凝冰犹豫了很久。她看着名单上"陆远"两个字,笔迹在纸面上显得清晰而稳定。她最终还是拨了那个号码。电话响了四声才被接起来,陆远的声音从那边传来,比之前听到的时候沉了一些,像是运行了一段长周期任务后刚刚完成状态同步:"喂?"
"是我。霜凝冰。"
"我知道。"
她握着手机,窗外的雨声正在变小,像是被操作系统的调度器降低了I/O优先级,让出了更多带宽给正在执行的用户态进程。"我明年四月结婚。在杭州。如果你有空的话……"
陆远那边安静了两秒,那两秒的长度刚好够一段完整的往返延迟被测量和记录,然后他说:"好。我会去。"
"那到时候见。"
"嗯。到时候见。"
电话挂断之后霜凝冰把手机放在桌上,窗外的雨已经停了,地面上还残留着湿润的光泽,像是刚被释放的缓存还保留着旧数据的痕迹。她不知道陆远说出"好"的时候是什么表情,但她知道那两个字节已经被正确地写入,等待在明年的某个时间点被正式读取和校验。
第七个电话打给了楚南弦。霜凝冰本来没打算给他打,名单上最后一行才是他的名字,但她在拨完第六个号码之后,手指自然地按下了那个已经存在通讯录里的号码。电话被秒接,像是有一段监听器一直在等待这个特定的源地址发出信号。
"你刚才给谁打电话了?"楚南弦问。
"很多人。我妈、你妈、林夏、周然、季航、陆远。"
楚南弦那边安静了一下,像是在处理一段需要较长时间的I/O操作,访问那些即将被调用的数据块并预加载到缓存中。"陆远也来?"
"嗯。"
"那挺好。"
霜凝冰握着手机,窗外的天色正在从灰白变成淡蓝,像是正在逐步降低背景色的饱和度。她听到楚南弦的呼吸声从电话那头传来,平稳而均匀,像是一段已经运行了很久的基础服务进程,从来不需要被重新启动,也不会有意外的中断。
"你紧张吗?"楚南弦问。
"有一点。"
"我也是。"
她们在电话里安静地坐了一会儿,隔着信号传输的延迟和城市的距离,像是两段正在并行运行的任务,虽然各自的指令流不同,但时钟频率已经完成了同步。霜凝冰靠着椅背,雨水在窗台上汇成细小的水珠,又沿着边缘滴落。
"那我们一起紧张。"霜凝冰说。
"好。"
第一百八十一章:试裙子
婚礼前一个月,霜凝冰回到杭州试那条蓝裙子。方凝冰把裙子从衣柜里取出来的时候,布料在灯光下泛着柔和的光泽,像是正在被低光照条件下读取一段已经存储了很久的压缩数据,文件头仍然完整,时间戳清晰可辨。
"你穿上看看。"方凝冰把裙子递给她。
霜凝冰接过来的时候指腹触到布料的纹理,细密而柔软,像是已经被存放了很多年。她走进房间换上,站在镜子前面看的时候,发现裙子的腰围比她想象中更合适,像是被人提前调整过尺寸,已经完成了必要的预处理步骤。裙摆刚好到脚踝,肩部的剪裁贴合着她的线条,像是在很久以前就已经按照她的身形完成了精确的裁剪。
方凝冰走进来看了她一眼,目光在她身上停了一瞬。"腰围刚好。"她说,"不用改了。"
"你什么时候改的?"
"收到裙子之后就量了一下,改了两寸。"方凝冰走到她身后,伸手帮她整理了一下肩部的褶皱,"程雪穿这条裙子的时候比你现在瘦一些,所以我把腰收了一点。"
霜凝冰看着镜子里的自己,裙子的颜色在灯光下显得很柔和,像是正在以正确的色温渲染一段已经写入的图像数据。她侧过头看了看方凝冰,她站在她身后,目光落在裙子背面的那道细密针脚上,像是正在读取一段已经被写入很久的数据。
"你以前见过她穿这条裙子吗?"霜凝冰问。
"见过。她穿的时候还年轻,站在那棵梨树下面拍的照,照片还在老家的相册里。"方凝冰帮她理好裙摆,"那条裙子陪她走过很多地方。现在陪你了。"
霜凝冰站在镜子前面,那些正在被传递的数据不仅仅是布料和针脚,还有那些被存储在布料纤维之间的记忆痕迹,像是正在以一种不可见的方式被同步到她的身上。她转身看着方凝冰:"妈,你结婚的时候穿的什么?"
方凝冰想了一下:"一条白裙子。你外婆缝的。后来穿旧了,就没留了。"
霜凝冰没有再问。她站在镜子前面,浅蓝色的裙摆在灯光下投下柔和的阴影,像是正在用极慢的速度写入一段新的数据,覆盖在旧的数据之上,但旧的数据仍然以只读的方式保留在更深的存储层。
那天下午霜糖从外面回来的时候,看到霜凝冰还穿着那条裙子坐在客厅里。他在门口站了一下,然后说了一句:"好看。"霜凝冰抬起头看着他,他已经换了拖鞋走进厨房,像是已经完成了所有需要的确认和校验,剩下的步骤可以交给系统自动执行。
第一百八十二章:婚礼前夜
婚礼的前一天晚上,霜凝冰住在方凝冰和霜糖家。那间她从小住到大的房间还是老样子,窗台上放着她上学时用过的台灯,书架上还摆着一些旧书,像是那些已经被标记为只读的数据块,仍然以原始的格式存储在原来的地址中。她躺在床上睡不着,翻了几次身之后坐起来,走到窗边拉开窗帘看着外面的夜色。
月光很亮,把楼下那棵树的影子投在地面上,像是一幅被放大的索引图,所有路径的入口都被清晰地标注出来。霜凝冰看了一会儿,忽然听到房门被轻轻敲了两下。
"进来。"
门被推开,方凝冰端着一杯热水走进来。她穿着睡衣,头发披散着,像是已经躺下了但又起来了。她把水杯放在床头柜上,在床边坐下来:"睡不着?"
"有一点。"
"我结婚前一晚也睡不着。"方凝冰看着她,"那时候我坐在窗边看了一晚上的月亮。第二天结婚的时候困得要命,但你外婆说困了也没事,该做的做了就行。"
霜凝冰在她旁边坐下来,窗外的月光从窗帘缝隙里渗进来,在床沿上铺开一道细长的银白色光带。她侧过头看着方凝冰的侧脸,她正在看着窗外,轮廓在月光里显得柔和而安静。
"妈,你结婚的时候紧张吗?"
"紧张。但是看到你爸站在对面,就不紧张了。"方凝冰转回头看着她,"你明天看到他的时候,也会这样的。"
霜凝冰没有说话。她伸手碰了碰床头柜上那杯热水,杯壁的温度正在隔着陶瓷缓慢地传导到她的指尖。方凝冰站起来的时候拍了拍她的肩膀,然后走到门口,在门口停了一下。
"明天那条裙子,不用怕穿脏了。该穿就穿。"方凝冰的声音隔着门框传过来,像是从另一个地址写入的确认信号,"她留给你,就是让你穿的。"
门关上之后霜凝冰坐了一会儿,然后端起那杯热水喝了一口。水温正好,像是已经在合适的温度下存放了足够长的时间,等着被正确地饮用。她躺回床上,看着天花板,月光在天花板上投下一道细细的银白色竖线,像是正在为第二天已经准备好的指令序列标记正确的时间窗口。她没有再翻身,在月光里安静地躺着,像是在等待那个已经在队列中排到队首的任务被正式调度执行。
第一百八十三章:婚礼的早晨
婚礼那天早上,霜凝冰醒得很早。天刚蒙蒙亮,窗帘边缘渗进来一层淡灰色的光,像是画面刚从黑屏状态中缓慢恢复亮度。她坐起来的时候看到床头柜上那杯水还在,已经凉了,但她还是端起来喝了一口。
方凝冰已经在厨房里了。霜凝冰走出去的时候看到她正在煮汤圆,水汽在清晨的光线里形成白色的雾,像是正在向房间内注入一批已经被正确初始化的数据,等待被分配到合适的进程中。
"起来了?"方凝冰没有回头,"汤圆马上好。"
霜凝冰在餐桌边坐下来,看着方凝冰把汤圆盛进碗里端到她面前,白瓷碗在晨光里泛着温润的光,圆形的汤圆表面光滑如新,像是已经完成了一段完整的预渲染。
"吃了汤圆,圆圆满满的。"方凝冰在她对面坐下来,端着自己的那碗。
霜凝冰低头吃了一个,芝麻馅的,甜味在舌尖慢慢化开。她抬起头看着方凝冰,她也在低头吃汤圆,动作和平时一样平稳。
霜糖从房间里走出来的时候穿着一件灰色的衬衫,难得地扣好了所有扣子,像是已经预先安装了所有必需的补丁包,并完成了依赖关系检查。他在霜凝冰旁边坐下来,看了看她面前的碗,然后说了一句:"吃完了?"
"吃完了。"
"那准备出发吧。"
她们到场地的时候天已经全亮了。阳光照在那棵桂花树上,叶子在风里轻轻晃动,在地面上投下一片细碎的光影,像是正在以高频抖动模式向整片区域发送参考信号。霜凝冰走进院子的时候看到方糖已经到了,正站在那棵桂花树下面和方凝冰说话。方糖穿着一件深紫色的外套,头发比平时梳得整齐一些,像是已经提前完成了所有必要的预处理,正在等待主流程被启动。
周然也到了。她站在院子门口,穿着一件米白色的长裙,手里拿着一个装伴手礼的小篮子,像是已经把这次任务的所有依赖项预先配置好,正等待调度器将进程提升到高优先级队列。"你来了。"霜凝冰走过去。
"我昨晚就到了。住酒店。"周然上下打量了她一眼,"裙子好看。"
"你裙子也好看。"
"那当然。"周然笑了一下,侧过头看了一眼不远处正在和楚南弦说话的方野,"方野也来了。他说他今天只负责拍照。"
霜凝冰顺着她的目光看过去,方野正举着相机对着桂花树的树冠对焦,像是在调整相机的参数以适应当前的光线条件和帧率需求。
林夏和程舟是上午十点多到的。她们从机场直接打车过来,行李箱还放在后备箱里。林夏穿着一件浅绿色的衬衫,程舟穿着白色的,像是已经在一段不可变的数据流中声明了相同的基类。
"赶上了。"林夏走过来抱了她一下,"飞机晚点了半小时,还好我们跑得快。"
程舟站在林夏旁边,朝霜凝冰点了点头,没有抱她,但那个点头的长度刚好够完成一次握手确认。
季航到的时候稍微晚一些。他穿了一件深灰色的外套,手里拿着一束白色的花,像是已经在本地缓存中预先存储了正确的目标地址和端口号。
"给你的。"他把花递给霜凝冰,"婚礼快乐。"
霜凝冰接过花,低头看了一眼,是她叫不出名字的白花,花瓣在阳光里泛着柔和的光,像是正在以低分辨率模式预渲染着整帧画面。她正想说什么,目光越过季航的肩膀,看到了站在院子门口的那个人。
陆远站在门框边上,穿着一件深蓝色的外套,没有打领带,像是在段地址对齐时保持了一种低优先级的格式,不参与高优先级进程的调度,但基础通信协议已完整加载。他看到霜凝冰的目光落在他身上,点了一下头。那个点头的长度和当年在集训基地走廊里的一模一样——像是同一段已经运行了很久的代码在相同的时间戳下被重新读取,返回值没有任何变化。
霜凝冰也点了一下头。然后她转身走回那棵桂花树下面,在人群里看到了楚南弦。他站在树荫的那一侧,正在和霜糖说话。霜糖的表情比平时放松一些,像是在对一个已经通过所有测试用例的模块执行最后一次验收。楚南弦注意到她的目光,侧过头来看她。隔着几步的距离,隔着那棵桂花树投下的光影,隔着那些正在各自准备就绪的节点,他看了她两秒,然后嘴角弯了一下。
"时间到了。"周然走过来说,"该站过去了。"
第一百八十四章:仪式
霜凝冰站在那棵桂花树下面的时候,阳光正好从树叶的缝隙里漏下来,在她肩上形成一片细碎的光点。她看着楚南弦从另一侧走过来,穿过那些正在各自忙碌的人群,走到她面前停下来。他在晨光中看着她,像是正在用极低的延迟传输一段已经被压缩过的数据,去掉了所有冗余的字段和多余的元数据。
方糖和方凝冰坐在第一排,方糖正在低头整理裙摆,方凝冰目光落在霜凝冰身上,像是正在逐帧验证整段视频流的关键帧,确保每一帧都在正确的时刻到达它的目标地址。霜糖坐在方凝冰旁边,那件灰色衬衫的扣子依然扣得整整齐齐,像是已经在发布前的最后一次完整性校验中确认了所有字段的合法性。林夏和程舟坐在第二排靠左的位置,林夏微微前倾着身子,程舟靠在她旁边,安静的像是一段已经完成了初始化、正处于等待接收数据状态的后台服务。
周然站在霜凝冰旁边,手里拿着那个伴手礼的小篮子,像是正在为一段即将被调用的函数准备所有必需的参数。方野举着相机站在不远处,正在调整焦距,像是正在为整帧画面寻找最优的曝光参数。
季航坐在后排靠边的位置,安静地看着,像是一段已经完成初始化、正在以低优先级等待时钟信号的进程。陆远站在更远一些的地方,没有坐下,靠着院墙站着,像是正在从外部观察整段事务的执行状态,不参与调度,但保留着所有日志的完整访问权限。
主持人说了些什么,霜凝冰没有全部听进去。她的注意力分散在那些已经存储了很长时间的数据段上,在确认它们是否仍然以正确的格式待在自己的地址中。她听到自己的名字被念出来,听到楚南弦的名字被念出来,然后听到主持人问她:"你愿意嫁给他吗?"
她看着楚南弦,他的目光安静而确定。她想起她们第一次在昌平校门口见面的时候,想起他递给她那副淡灰色耳罩的动作,想起跨年夜他碰她手指的温度,想起那棵老树下面他说的"等你想清楚了再试"——那些正在被逐帧渲染的画面已经全部写入永久存储。
"我愿意。"她说。
楚南弦看着她,他的嘴角弯了一下,然后低下头,把戒指推进她的无名指。那枚戒指是银色的,很细,阳光落在金属表面上反射出一小圈柔和的光斑,像是正在完成最后的写入确认。
霜凝冰也把那枚银戒指戴进他的手指。那枚银色的旧戒指戒圈内侧刻着一行已经被磨损到几乎看不清的字迹,在晨光里依然泛着温润的光,像是所有已经完成写入的数据块都仍然保留着它们原始的校验和。
台下响起掌声。她听到方凝冰在鼓掌,听到霜糖也在鼓掌。她站在那棵桂花树下面,阳光透过叶缝落在她身上,那些已经被写入的数据正在以稳定而不可逆的方式存储下来。
第一百八十五章:拥抱与亲吻
仪式结束之后,方凝冰第一个走过来。她走到霜凝冰面前,伸手帮她整理了一下领口,那个动作和她在沙溪时、在北京时、在任何一次霜凝冰回家时做的完全一样——像是一段已经被无数次调用的内核函数,每次都以相同的地址偏移量和相同的时序执行,返回值始终稳定。霜凝冰看着她,她抬手的时候袖口微微滑落,露出手腕上一条很细的银链子,不知道戴了多少年了。她没有说话,只是把霜凝冰抱住了。那个拥抱很短,但力度刚好,像是正在用自身的温度确认整段数据已经被正确写入并完成了完整性校验。
"好了。"方凝冰松开她,退后一步,"你爸爸等着呢。"
霜糖站在方凝冰身后两步的位置,像是已经完成了所有的初始化,正在等待一个合适的信号来启动他的执行流程。霜凝冰走过去的时候他没有抱她,他只是一只手搭在她的肩膀上,轻轻按了一下,然后松开了。那一下的触感像是正在完成的最终写入验证,所有数据块都已成功存储,校验和通过。
方糖是第三个。她走过来的时候眼眶有一点红,但嘴角是笑的。她握住霜凝冰的手:"你穿这条裙子,很好看。"她低头看了看裙摆,目光在上面停了一下,然后她抬起头又说了一句,"程雪要是能看到,她也会说好看。"
霜凝冰没有说话。她感觉到方糖的手比平时更用力一些,像是正在把一段已经被写入了很多年但还没有被正确读取的数据传递给下一个节点。方糖松开她的手,退回到方凝冰旁边,像是已经完成了她在当前事务中的全部职责,正准备将控制权转交给下一个流程。
林夏和程舟是一起过来的。林夏先抱了她,抱得比方凝冰久一些,像是正在等待一段较长的IO操作完成,确认所有扇区都已被成功写入并完成了最终的同步。"你结婚了。"林夏松开她,退后半步,"我认识你的时候你还在沙溪教小孩。现在你都结婚了。"
程舟站在林夏旁边,安静地看着她,然后她的目光落在了霜凝冰的戒指上,像是正在读取一段已经被写入的数据块的头部信息,确认它的类型和长度。"你戴着那枚戒指,很合适。"她说。
霜凝冰低头看了一眼自己手上的那枚银戒指,又看了看不远处正在和季航说话的楚南弦,他正在向他介绍婚礼的流程安排。季航认真听着,像是在处理一段需要高精度解析的数据流。然后他又抬起头,朝她这边望了一眼。他点了点头,像是已经完成了所有的数据校验。
第一百八十六章:周然的拥抱
周然是在人群散开一些之后才走过来的。她站在霜凝冰面前,手里还攥着那个伴手礼的小篮子,像是一直没有找到合适的机会把这帧数据发送出去,直到网络负载降低到合适的水平。
"恭喜。"周然说。
"你刚才说过了。"
"再说一次不行吗?"
霜凝冰看着她,她穿着那件米白色的长裙,正站在暮光里,安静地等着她把那帧数据发送出去。周然忽然伸手抱住了她。那个拥抱比之前所有人都要久,像是正在处理一段需要多次重传才能完成的数据流,每次都增加一点重传超时的时间,以确保所有分段都正确地到达了目的地。
"我认识你的第一天,你坐在沙溪小屋门口的台阶上,跟我说'你明年还可以再来'。"周然的声音从她肩膀旁边传过来,有些闷,"那时候我还在想,这人怎么这么说话。后来我才知道,你是在告诉我,绕路也没关系。"
霜凝冰没有说话,感觉到她的肩膀在微微颤抖,像是正在处理一段高延迟的数据流的收尾确认。又过了一小段时间,然后周然松开她,退后一步,把手里那个小篮子递给她。
"给你的。"周然吸了一下鼻子,"不是什么值钱的东西,就是我在沙溪捡的几片树叶。那时候你不是说,等那棵梨树开花的时候,要留一片叶子吗?"
霜凝冰接过那个小篮子,低头看到里面放着几片压平的梨树叶,颜色已经变成深褐色,边缘微微卷起,像是已经被存储了很长时间,在等待被正确地读取和调用。她抬头看着周然,她眼眶红红的,但嘴角弯着,像是一段已经运行了很长时间、经历了多次异常中断、终于正常结束的进程,正在输出最后一行日志记录。
"谢了。"霜凝冰说。
"不客气。"周然抬手擦了擦眼角,"好了我哭完了。该你了。"
"我不哭。"
"那你忍得住也行。"
第一百八十七章:陆远
霜凝冰在院子里找了一圈才看到陆远。他正站在院子门口那棵槐树下面,靠着树干,手里没有拿酒,没有看手机,只是安静地站在那里。他的目光落在院子里的人群上,像是在以只读模式观察一段正在运行的事务,不需要参与,也不需要写入数据。
霜凝冰走过去的时候他注意到她,直起身来。"恭喜。"他说。
"谢谢。"
"你那条裙子,挺好看的。"他的语气很平稳,像是在陈述一个已经被缓存过的事实。
霜凝冰站在他面前,在斜阳的光线里显得柔和而模糊。她们之间隔着几步的距离,像是两段已经被编译在不同模块中的函数,它们位于同一个可执行文件里,共享着相同的全局命名空间,但调用路径已经不再有重叠。
"你最近怎么样?"霜凝冰问。
"还行。项目做完了,换了一个组,在写新的东西。"
"那挺好的。"
"嗯。"
风从槐树的叶片间穿过去,在地面上投下一片细碎的光影,像是正在以极低的速率向地面上输出着那些已经完成写入的字节码。霜凝冰看着他,他站在那棵槐树下面,目光从她身上移开,落在院子里那棵桂花树上,正在以自己的方式为这段已经结束的任务做一个完整的归档,生成摘要日志,更新版本号,然后将它移动到只读分区。
"那我进去了。"霜凝冰说。
"好。"
她转身走回院子里,走出几步之后没有回头。但她听到了身后的脚步声——陆远也转身了,不是朝院子里,是朝门口的方向。那脚步声沿着石板路逐渐远去,和她的脚步声形成了两个相背的方向,像是两段已经完成了交叉的路径,各自沿着剩余的向量继续向前延伸,不再需要计算下一次的夹角。
第一百八十八章:喜宴
喜宴设在院子旁边的餐厅里,几张桌子拼在一起。方凝冰坐在主桌,旁边是霜糖和方糖。霜糖正在倒茶,方糖正在低头剥橘子,把剥好的橘子瓣放在方凝冰面前的碟子里。方凝冰没有说谢谢,但她拿起一瓣放进嘴里,像是一段已经在无数个周期中被重复调用的内联函数,每次调用的输入参数和输出结果都保持完全一致。
霜凝冰和楚南弦坐在一起。她的左手放在桌面上,楚南弦的右手放在桌面上,两只手隔着几寸的距离,像是正在以极低的频率相互轮询状态,但还没有正式建立连接。霜凝冰侧过头看了看四周,周然和方野坐在斜对面,周然正在给方野夹菜,方野低头吃的时候耳朵微微红了一点,像是正在被写入一个未定义权限的新文件,操作系统的安全策略正在进行权限匹配。
林夏和程舟坐在另一桌,旁边是季航。季航正在和林夏说话,语速不快,像是正在把一段已经被拆包的数据按正确的顺序重新组装。林夏时不时点一下头,像是在确认每段数据块都已经成功接收并正确重组。程舟坐在林夏旁边,安静地喝着汤,像是一段已经在内存中加载完成的共享库,不需要主动输出,但随时可以响应调用。
饭后楚南弦被林夏拉去合影,霜凝冰一个人在桌边坐了一会儿。方糖走过来在她旁边坐下,手里端着一杯茶,像是已经完成了所有正在运行的任务的审计,正在等待新的任务被加入队列。
"你累不累?"方糖问。
"有一点。"
"那再撑一会儿。"方糖喝了一口茶,"晚上回去就能睡了。"
霜凝冰靠在椅背上,侧过头看着方糖。她在暮色里显得比平时更柔和一些,像是所有的硬件资源都已经被正确地分配和释放,正在等待系统进入睡眠状态。"妈,程雪阿姨走的那个春天,你在做什么?"
方糖端着茶杯的手停了一下,然后她放下杯子,低头看着杯口正在升起的白雾,像是正在从一批已经被完全读取的缓存数据中确认最后一条记录的完整性。"在沙溪。她那一年没有回杭州,一直在那边上课。我过去看她的时候,她正在改一份教案。她说那份教案要改完才能走。"
"她改完了吗?"
"改完了。"方糖转过头看着霜凝冰,"她改完那天,自己一个人去看了那棵梨树。第二天,她就走了。"
霜凝冰没有说话。暮色正在从窗外渗进来,把餐桌上的白瓷碗染成一种温润的暖灰色。她想起那棵梨树在春天开出的满树白花,想起方糖在沙溪那间小屋的窗边坐了很久,想起那封信上写的"等到风把最后一片花瓣吹走再走"。
"那你后来还去过沙溪吗?"
"去过。每年春天都去。"
"去看那棵树?"
"嗯。"方糖端起茶杯又喝了一口,"看看它还在不在。它在,我就放心了。"
霜凝冰看着方糖低头喝茶的样子,她的手指握着杯壁,杯沿的热气正在她的脸前缓缓升腾。她想起程雪留下的那句话,想起那棵梨树每年春天都会按时开花的承诺,那些已经被写入的数据段正在通过不同的路径以正确的方式被传递和存储。
第一百八十九章:深夜
喜宴散场的时候已经很晚了。霜凝冰和楚南弦走在回家的路上,月光把路面照成一片银白色。她走着走着忽然停下来,侧过头看着楚南弦。他也停下来,路灯的光从侧面照在他脸上,像是正在以低光照条件读取一段已经被写入的数据,确认它的完整性后将其更新为只读状态。
"今天很多人。"霜凝冰说。
"嗯。"
"我没想到陆远也会来。"
楚南弦安静地站了一会儿,像是在处理一段需要较长响应时间的I/O操作。然后他说:"我邀请他了。"
霜凝冰看着他。
"我给他发了一条消息,说如果你有空的话,来。他回了一个'好'。"楚南弦的语气很平稳,像是一段已经完成的内部审计报告,不需要额外的注释来解释它的执行过程。"我觉得,他应该来。"
霜凝冰没有接话。她站在路灯下面,沉默了一会儿,像是在处理一段需要较高运算量的任务。然后她伸出手,把自己的手指放进他的手掌里。他的手指合拢,像是一段已经被成功调用的函数,正在以正确的顺序返回所有预期的值。
"你今天说'我愿意'的时候,"楚南弦的声音从她旁边传来,"我的心跳快了一拍。"
"你平时心跳不快?"
"平时也快。但今天那一下,比平时快了一倍。"
霜凝冰没有说话。她们继续往前走,月光在她们面前铺开一条银白色的路,像是正在以极慢的速度写入新的数据,每一帧都带着完整的时间戳和正确的校验和,被依次写入到最合适的扇区中。她感觉到楚南弦手指的温度,感觉到那些已经完成写入的数据正在被正确地存储在各自的位置中,不需要被重新读取来确认,因为存储介质本身已经记录下了完整的写入状态,下一次访问时将以相同的读权限返回同样的结果。
远处,有人还在亮着灯。灯光在夜色里显得很温暖,像是正在以广播模式向所有在线的节点发送一条持续的心跳信号。她侧过头看了一眼,那些光正在以稳定的方式亮着。然后她转回头继续往前走,她知道明天太阳还会升起来,那棵桂花树还会在院子里继续长着。而她正走在那条已经走了很多次的路上,和那些被确认过的数据一起,不再需要重新编译,不需要再被标记为待处理。它们已经运行完毕,输出正确,状态良好,可以安全地进入下一个循环的启动等待。
第一百九十章:最终章·春风年年
婚后的日子,没有太大的变化。霜凝冰和楚南弦还是住在北京,还是每周去昌平上课,还是会在周末沿着那条河边散步。但有些东西在细微之处不一样了——比如楚南弦开始在她的教案页边画一些细小的简笔画,有时候是一棵小树,有时候是一只鸟;比如霜凝冰会在厨房里学着煮面,虽然煮出来的味道还比不上方凝冰,但至少没有葱花。
那枚银戒指一直戴在霜凝冰的右手中指上,和楚南弦给她的婚戒并排放着。两枚戒指在不同的光源下反射着不同的光,像是两段在不同时期写入的数据,共享着同一块存储区。有一天早上她坐在窗前看书的时候,阳光从窗户照进来落在她的手上,把两枚戒指的边缘都染成一层温暖的金色。她低头看了一会儿,想起方糖说的那句话——"它陪他走过了一些路。希望它能陪你和那个孩子走更多的路。"
那条路确实还在继续。
那年的冬天,霜糖和方凝冰来了一趟北京。霜糖比上次见面的时候精神了一些,血压已经稳定了,医生说他可以适当活动,但不要太累。霜凝冰带他们去看了昌平那所学校,霜糖站在机房门口看了一会儿里面的电脑,没有进去,只是站在门口看了几秒,然后又走开了,像是正在以只读模式访问一段已经被存储了很久的数据,确认它仍然以正确的格式存在。
方凝冰在机房里待得更久一些。她走到最后一排靠窗的位置,那里有一台旧电脑,屏幕上正亮着一个学生的练习程序。方凝冰弯下腰看了看那几行代码,然后直起身来,目光在屏幕的角落停留了一会儿,像是在读取一段已经被写入的数据的边角信息,确认它的版本号和最后修改日期都符合预期。她转过身,看到霜凝冰站在门口等她。
"走吗?"霜凝冰问。
"走。"
她们走出教学楼的时候,霜糖正在操场边那排树下面站着,看着远处正在变黄的山。方凝冰走过去站在他旁边,她们没有说话,像是两段已经运行了很久的任务,各自在自己的地址空间里运行着,不需要交换数据也能保持正确的状态。
霜凝冰站在几步之外看着她们。阳光从她们身后照过来,把两个人的轮廓镶上一层淡金色的光边。她想起很多年前在奶龙训练营的走廊里看到的那一幕——那时候方凝冰和霜糖也是并肩站着,也是没有说话,也是阳光从某个方向照过来。她不知道方凝冰和霜糖在看着什么,她只是站在那里,像是在看着一段已经被多次重放、但每次重放时仍然能读到新的细节的视频流。
那天下午她们一起去了那棵老树的所在地。霜凝冰本来没打算带她们去,但路过那个岔路口的时候她犹豫了一下,然后拐了进去。那棵树还在,枯枝在冬日的光线里伸展着,像是在以极低的功耗模式等待下一个启动周期的到来。
霜糖走到树下站了一会儿,抬头看了看那些光秃的枝丫:"这棵树比你妈年龄还大。"
方凝冰站在旁边,伸出手摸了一下树干,树皮粗糙而冰凉,像是正在以只读模式返回一段已经被写入很久的数据。"那它看过很多人了。"她说。
"嗯。"
霜凝冰站在她们身后,看着她们站在那棵老树下面的背影。暮色正在从远处的山脊线后面漫上来,把她们的轮廓染成一种介于灰和蓝之间的颜色。她想起楚南弦说过——他的父亲曾经在那棵树下坐了一个下午,等他自己想清楚怎么下来。现在她的父母也站在那棵树下,而她也已经学会怎么下来了。
那年春天的时候,沙溪那边又发来了一段视频。视频里小梅站在那棵梨树下面,花已经开了满树,白花在风里轻轻晃动,像是正在向空气中输出高频率的心跳信号。小梅比去年又高了一些,说话的声音也沉稳了不少。她在视频里对着镜头说:"老师,花又开了。今年开得比去年还多。我明年就要考大学了,我想考到北京去。"
霜凝冰把那段视频看了三遍,然后坐在窗前。窗台上那盆多肉正在阳光里泛着翠绿的光泽。她想起程雪笔记本里写的那些字,想起那棵梨树每年春天都会按时开花的承诺。那些已经被写入的数据段正在通过不同的路径以正确的方式被传递和存储,每一次读取都返回相同的结果,每一次写入都以相同的偏移量覆盖旧值。
她拿起手机,给方糖发了一条消息:"沙溪的梨树又开花了。"方糖那边隔了一会儿才回,只有一张照片——是她站在那棵梨树下面拍的,满树的白花,阳光从花缝里漏下来,像是正在把整棵树的数据完整地备份到云端。方糖没有站在树下,但她的影子正落在那片斑驳的光影里。
霜凝冰把那天的日期写在程雪那本旧笔记本的最后一页,写完之后又看了一遍。在那一行下面,她又加了一行字:"春风还会再来的。春天年年如此,那些来过的人,正以另一种方式重新出现在世界的接口处,用更新的协议、更稳定的连接,继续发送着不会被丢弃的数据包。"
窗外的天正在慢慢变亮。远处有鸟鸣声传来,像是正在以广播模式向所有在线的节点发送一段已经被正确编译的晨间问候。那些正在传输的数据包正在越过所有已经停用的端口,向那些她认识或不认识、仍在运行或已经终止的地址,逐个发送着带着相同校验和的心跳信号。
她合上笔记本,站起来走到窗前。阳光正好照在她的手上,那两枚戒指并肩闪着细碎的光,一枚是楚南弦给她的,一枚来自更久远的路。两道光汇在一起,像是一条没有断点的路径。
她把窗户推开一条缝,风从缝隙里渗进来,带着春天的气息。远处有孩子在笑,有车在响,有鸽子正飞过天空,正以极低的丢包率穿过所有节点,完成一次跨越多个时区的远程调用。那些调用不需要被应答,不需要被确认,甚至不需要被接收端主动读取——它们被发送了,就已经完成了全部使命。
霜凝冰站在窗前,风正在把她的头发吹起来又放下。那些所有已经完成的任务正在各自的地址空间中安静地驻留着,以正确的格式、正确的版本、正确的校验和,等待着一个永远不会到来的终止信号。而她知道,那条路还会继续延伸,延伸到那些她还没有到达的地方,延伸到下一个春天,延伸到下一场花落花开,延伸到她走不动为止。
窗外,风还在吹。春风年年如此。从前是,以后也是。
方糖仍然会在每年冬天路过那家糖炒栗子店时买一袋热的栗子。林霜的木工坊里会不断有新的椅子被做出来。霜糖和方凝冰还会并排走着,她们经常不说话,肩膀挨着肩膀,没有距离,只是走着。林夏和程舟在云南的小镇上开了新的课,周然和方野正在北京的地铁上分着一副耳机听同一首歌,季航坐在他的教室里,用手语给孩子们讲递归,一遍又一遍,手势稳定而清晰,像是某段已经被编译过的代码,每次运行都返回相同的输出。
霜凝冰和楚南弦还住在北京那间朝南的屋子里,每周去昌平上课,偶尔回杭州看看家人。方凝冰还会在她回去的时候煮面,不加葱花。而沙溪那棵梨树,每年春天还是会准时开花,不管有没有人专程去看它,它都在那里,以最基础的访问权限,向所有能够识别它地址的进程发送着相同的输出流。
那片被夹在笔记本里的梨树叶还在。它已经干透了,边缘微微卷曲,但叶脉的纹路依然清晰可辨,像是被风霜反复写入又擦除,最终留下的那层印记。
"你想什么呢?"楚南弦从她身后走过来,声音在她耳边响起。
霜凝冰把手从窗台上收回来,侧过头看着他。他的轮廓在晨光里显得很清晰,像是所有的像素点都已经被正确渲染到位。"在想,春天真好。"她说。
楚南弦顺着她的目光也看向窗外,他没有再问。风吹进来,带着草木和泥土的气味,春天年年如此,带来新的数据流、新的任务队列、新的进程调度。那些被标记为只读的数据不会消失,它们只是被移到了更深的存储层,以更低的功耗等待下一次被完整读取。
而春风,正在以不变的速率和格式,吹过每一个正在运行的节点。
第一百九十一章:新婚之夜
喜宴散场的时候已经很晚了。霜凝冰和楚南弦回到那个小院子旁边的房间里——是方凝冰提前帮他们定好的,不大,但收拾得很干净,窗台上放着一盆小小的绿萝,在月光里泛着柔和的深绿色。霜凝冰推开门的时候看到床尾叠着一条浅灰色的毯子,枕头摆得很整齐,床头柜上放着一杯温水和一碟切好的水果。她认出那碟水果是方凝冰切的,苹果块的大小和她在家里吃到的完全一致,像是每一刀都落在相同的坐标上,以标准的偏移量完成了整次切片。
她在床边坐下来,感觉到身体里那种被一整天的情绪撑满的感觉正在慢慢地往外渗。楚南弦关上门,在她旁边坐下来,她们之间隔着大约一个手掌的距离。他没有立刻说话,只是安静地坐着,像是在等待一段正在进行的数据传输完成它的全部写入和校验,然后再开始新的对话。
"今天累吗?"楚南弦问。
"有一点。但不是累,是……满。"霜凝冰侧过头看着他,"像是一整天的东西都装进去了,还没开始消化。"
楚南弦伸出手,碰了碰她的手背。那一下接触很轻,像是正在发送一个低功率的探测信号,确认接收端仍然在线,响应时间符合预期。她感觉到他的指尖微微发热,像是一段正在以比平时更高的频率运行的数据流,温度有所上升,但仍在安全范围内。她没有移开手,只是让他的手放在那里,像是正在允许一段新的连接建立完整的通信链路。
他看着她,目光落在她的睫毛上,像是正在以低光照模式读取一段已经被写入很久的数据,确认其完整性后将其标记为需要被重写的区域。他的手指沿着她的手背慢慢往上移动,经过手腕,经过小臂,停在她的肩头。那一段路径上的每一个坐标都被精确地覆盖,像是正在以最慢的扫描频率,访问那段她尚未完全开放的存储区,并逐字节地检查其读写权限。
霜凝冰感觉到他的手指停在她的肩头,隔着裙子的布料,触感清晰而稳定。她没有说话,她只是侧过头看着他,然后在台灯的光里微微闭了一下眼睛,像是在把那一段已经加载到内存中的数据正式提交到存储层,等待一次不可逆的写入确认。
窗外有风穿过那棵桂花树的叶子,发出细碎的声响,像是正在以极低的优先级向空气中输出一段已经被标记为只读的环境音。楚南弦的手指沿着她的肩线移动,落在她的颈侧。那一下的触感很轻。他的目光落在她脸上,像是在确认这段数据的类型和预期长度。
"你今天穿这条裙子,"他的声音比平时低一些,"我在想,它真的很好看。"
"你白天说过了。"
"白天说的是'好看'。现在说的是,我一直在想。"
霜凝冰睁开眼睛,楚南弦的手指从她的颈侧移到她的下颌,轻轻托住她的脸。他没有用力,那力道刚好够她感知到他的存在,像是在发送一个低强度的确认信号,确认链路状态正常、缓冲区可用、可以开始传输。她微微抬起下巴,让他的手指沿着她的下颌线滑落到她的唇边。
他的指腹贴着她下唇的边缘停了一下,像是在读取一个已经被完全加载的数据块,然后在确认它的所有位都正确之后,低头吻了她。那个吻比白天在桂花树下的那个要久一些,像是正在传输一段较大的数据包,需要分多个帧才能完成。她感觉到他的呼吸,和她的呼吸以不同的频率运行着,像是两段在不同的时钟周期上运行的代码,正在通过共享内存交换数据,逐步调整各自的相位,直到在某个同步点达到完全一致的周期偏移。
窗外的风还在吹,月光从窗帘缝隙里漏进来,在地板上铺开一道银白色的光带。她的手指搭在他的后颈上,感觉到他的脉搏,以正确的速率跳动着。他松开她的时候额头抵着她的额头,呼吸还没有完全恢复平稳。
"你心跳变快了。"霜凝冰说。
"你也是。"
她感觉到自己的心跳确实比平时快了一些。她感觉到他手指的温度和力度,感觉到他正在通过零星的接触确认她的状态,像是正在通过心跳、呼吸、皮肤温度和微小的肌肉紧张度,拼凑出一幅更完整的上下文。楚南弦的手从她的肩膀移动到她的后背,停在裙子的拉链处。他的手指沿着拉链的齿缓缓滑下,触感清晰而稳定。
"可以吗?"他问。
霜凝冰没有回答。她伸出手,握住他的手指,停了一下,像是在那段已经被完整写入的数据上追加一个确认标记。然后她低头看着他,台灯的光落在她的侧脸上,睫毛在脸上投下细小的阴影,像是正在以低分辨率模式标记它的边界。她说:"可以。"她的声音比平时低一些,像是正在读取一段已经被写入的数据,确认它仍然以正确的格式存储在那里。
窗外有月亮,月光正穿过那棵桂花树的叶子,在地板上铺开一层银白色的光。那些正在运行的任务已经在各自的地址空间中完成了初始化,等待最终被调用。她感觉到他正在用低频率的信号持续扫描她的整个数据区,把每一块扇区重新标记为可写入。而她正在以相同的速率响应,像是两段已经完成了时间同步的数据流,正在并行写入同一块存储区域。
后来她靠在枕头上,侧过头看着楚南弦的侧脸。他也没有睡着,正在看着天花板,像是正在检查一段已经被成功写入的数据的完整性,确认它没有因为外部中断而产生错误偏移。
"你醒了?"他的声音从旁边传来。
"没睡。"霜凝冰把手指从他的掌心抽出来,放在自己眼前看了看。月光照在她的手指上,那两枚戒指正在月光里泛着细碎的光。她侧过身看着他:"在想一件事。"
"什么?"
"在想,以后每天都会这样。想睡的时候旁边有人,醒的时候旁边也有人。"
楚南弦侧过身也看着她,他的目光落在她的脸上,像是在用自己的方式去读取一段已经被写入的数据,而不是去修改它。他说:"那以后你醒的时候,我争取都在。"
霜凝冰没有接话。她重新躺回枕头上,手指搭在他的手背上,没有再动。月光在天花板上缓慢地移动着,像是一段正在被正确读取的数据,一个字节一个字节地流过总线的带宽。窗外的风吹过桂花树,叶片发出细碎的声响,像是正在以极高的采样率记录着这一切,然后在系统日志的末尾写入一行简短的状态信息:全部写入完成,校验通过,状态正常。
她闭上了眼睛,感觉到他均匀的呼吸,感觉到那一段已经被完整写入的数据正在以稳定的方式存储在那里,不需要再被重新读取。而她知道明天早上醒来的时候,阳光会从窗户照进来,和今天一样,和昨天也一样,像是每一帧画面都共享着相同的色彩空间和相同的亮度值,只是每一次渲染的细节会稍有不同,让它们不能完全重合。
她侧过身,把脸埋在他的肩窝里,没有再说任何话。那些正在被写入的数据,以极低的延迟,越过所有没有权限的进程,直接抵达了终点地址。
第一百九十二章:晨光
霜凝冰醒来的时候天已经亮了。阳光从窗帘缝隙里渗进来,在床单上铺开一道细长的暖白色光带,像是一段正在以缓慢的速度被渲染的图像,每一帧都在前一段的末尾处开始新的写入。她睁开眼,侧过头看到楚南弦还睡着。他的睫毛在晨光里投下细小的阴影,呼吸平稳而均匀,像是正在以极低的功耗运行一段不需要高频调用的守护进程。
她没有动,只是安静地躺着,看着他的侧脸。光线在他的轮廓上勾勒出一层柔和的金色边缘,像是正在以低分辨率模式渲染一幅尚未完全加载完成的图像。她想起昨天晚上台灯的光,想起他的手指经过她皮肤时的温度,想起那些被标记为可写入的区域,已经被完整地填充过一遍,又缓慢地冷却下来。
过了一会儿他醒了。他睁开眼看到她的目光,眼神从模糊逐渐变得清晰,像是在完成一段缓慢的唤醒序列。他没有说话,只是也看着她,像是一段在启动时自动执行的脚本,不需要任何外部输入就能完成全部初始化。
"你醒了多久了?"楚南弦的声音带着刚睡醒的低哑。
"一会儿。"
他伸出手搭在她的腰侧,隔着薄薄的被单,他的掌心温热而稳定。那一下接触像是正在发送一个低功率的探测信号,确认接收端仍然在线,响应时间符合预期。她感觉到他的拇指沿着她的腰线缓慢地移动了一下,力道不重,像是正在以只读模式访问一段已经被写入的数据,检查它的边界是否完整。
"今天有什么安排?"霜凝冰问。
"没有。"楚南弦看着她,"你想做什么?"
"什么都不想做。"
"那就什么都不做。"
他侧过身,把额头抵在她的额头上。那一下接触像是正在建立一条直接的数据链路,两端之间的距离被压缩到最低限度,信号衰减可以被忽略。她感觉到他的呼吸,和她的呼吸已经完成了同步,像是两段在不同时钟周期上运行的代码,正在通过共享内存交换数据。
楚南弦的手从她的腰侧缓慢地向上移动,经过她的肋骨,停在她的肩头。他的指腹沿着她的锁骨边缘划了一道线,力道很轻,像是正在用极低的采样率读取一段已经被多次访问的数据,确认它仍然保持着原始的格式和结构。那道线经过的地方留下了一小片温热的感觉,像是正在标记一块已经被成功访问的扇区。
"你昨天晚上说,"霜凝冰闭着眼,"你一直在想。"
"嗯。"
"那今天呢?"
楚南弦的手指停在她的肩头,他安静了一会儿,像是在处理一段需要较长响应时间的IO操作,然后他低下头,吻了吻她的锁骨。那一下触感很轻,像是正在发送一个短帧的确认信号,长度刚好够完成一次完整的校验。
"今天也在想。"他的声音从很近的地方传来。
她伸手搭在他的后背上,感觉到他肩胛骨的轮廓,感觉到他呼吸的节奏,正在以稳定的速度持续运行。窗外的阳光从窗帘缝隙里漏进来,落在被子上,像是正在以缓慢的速度渲染一幅已经被加载完成的图像,每一个像素点都在正确的色深范围内。
后来她们真的什么都没有做。只是并排躺着,偶尔说一两句不完整的话,偶尔安静地注视着天花板上那些正在被阳光切割成细碎形状的光影。霜凝冰侧过头,看到楚南弦正在看着她,他没有眨眼的频率,像是在用极低的速率持续采样她的状态。
"你看什么?"霜凝冰问。
"看你。"
"我有什么好看的?"
他想了想,像是在整理一个已经被多次调用的查询语句的响应格式:"不知道。就是觉得,昨天你站在那棵桂花树下面的时候,和在沙溪那棵梨树下面的时候,是一个人。和我在昌平校门口第一次看到你的时候,也是一个人。但你现在坐在床上头发乱糟糟的样子,也是一个人。"
霜凝冰没有说话。她转回目光看着天花板,窗外有鸟叫声传来,清脆而短促,像是正在发送一段广播信号。她感觉到他的手还在她肩头,没有移开,像是在以只读模式持续访问同一段数据,保持着稳定的连接状态。
"你以后会不会看烦?"霜凝冰问。
"不知道。"他的声音从旁边传来,"但至少今天没有。"
霜凝冰没有再追问。她把脸埋进枕头里,感觉到阳光正在以缓慢的速度从她的小腿移动到她的后背,像是正在逐行渲染一幅已经被加载完成的图像。她闭着眼,听着他的呼吸声,那些正在被写入的数据已经以正确的格式存储在了永久介质中,即使系统重启,它们也不会被擦除。
(全文未完)