周六的阳光把江城大学的梧桐叶照得透亮,风卷着碎金似的光斑掠过校门,落在陈颂的肩膀上。他穿着件浅灰色的连帽衫,拉链拉到一半,露出里面印着校徽的T恤——是周景恒找了半宿翻出来的旧款,今早塞给陈颂时,耳根还泛着红。
“机房早就翻新了,”陈颂踢着路边的梧桐果,声音里带着点刻意的轻松,“当年我们拆过的服务器机柜,估计早成废铁了。”
周景恒跟在他身后,目光扫过图书馆的方向。楼前的银杏还没到黄的时候,枝桠在蓝天下舒展着,像极了四年前那个春日,陈颂背着帆布包站在这里,说“等你回来,我们再去机房试试那个温控模型”。
“先去图书馆吧。”周景恒忽然开口,看见陈颂脚步顿了顿,随即点头,“也行,顺路。”
图书馆的旋转门带着旧木头的味道,阳光透过穹顶的玻璃洒下来,在地板上投下巨大的光斑。陈颂熟门熟路地往楼梯走,皮鞋踩在台阶上的声音空旷得很,周景恒盯着他的背影,忽然想起当年无数个周六,也是这样跟着他往上走,手里攥着被体温焐热的《编译原理》。
三楼的阅览室比记忆里安静,靠窗的位置果然空着。木质的桌椅被晒得发亮,阳光斜斜地切进来,在桌面上划出一道清晰的界线,像代码里的分隔符。陈颂走到桌边站定,指尖轻轻拂过桌面——那里有道浅浅的刻痕,是当年他用圆规尖刻的,形状像个没画完的循环符号。
“还在。”陈颂低头笑了,声音很轻,“当年总在这儿敲代码,嫌桌子太滑,刻个记号定位。”
周景恒走过去,视线落在窗外。楼下的玉兰树长得更高了,枝桠快够到三楼的窗台,四年前落下的花瓣,好像还在空气里飘着。他忽然从背包里掏出样东西,是本崭新的《编译原理》,封面上的出版社还是当年的版本,只是印刷日期变成了今年。
“给你的。”周景恒把书递过去,指尖有点发颤,“当年……没带的那本,补上。”
陈颂接过书时,指腹蹭过扉页,摸到上面有浅浅的字迹。翻开一看,是周景恒的字:“补赠陈颂,2024年冬。另:欠了四年的重点,今天一并划。”
书页间夹着的便签纸滑了出来,落在桌面上。陈颂捡起来,上面的字迹和四年前那张便签如出一辙,只是笔锋更稳了些:“本周六下午三点,老地方,带《编译原理》。这次我等你,多久都等。”
阳光突然变得很烫,落在便签纸上,把墨迹烘得发暖。陈颂抬头时,看见周景恒正望着窗外的玉兰树,耳尖红得像被阳光烤过,手指无意识地摩挲着背包带——那背包还是大学时买的,侧边的网袋磨破了个洞,露出里面装着的保温杯。
“其实我每周都来。”陈颂忽然开口,声音里带着点水汽,“前两年是周六下午三点,后来改成每周六随便哪个时间,就想……万一你突然回来了呢。”
他低头看着便签,指尖划过“多久都等”那几个字:“刚开始带书,后来带电脑,再后来就带杯咖啡坐会儿。上周来的时候,还看见有学弟在这儿刻公式,跟我当年一模一样。”
周景恒转过身,看见陈颂眼里的光在晃动,像被风吹的烛火。他忽然想起三年前,自己出差路过江城,偷偷来过一次图书馆,三楼靠窗的位置坐着个穿灰色卫衣的男生,背影像极了陈颂,他没敢上前,只在楼下的玉兰树旁站了半小时,直到对方离开。
“上周三我也来过。”周景恒的声音有点哑,“在楼下看了会儿树。”
陈颂猛地抬头:“我上周三下午就在这儿!”他忽然笑起来,眼角有细纹展开,“那天打印机坏了,我蹲在走廊修了半小时,早知道……”
“早知道就该在楼门口挂个牌子,写‘周景恒速来三楼’。”周景恒接过话,语气里带着自嘲,却在看见陈颂眼里的笑意时,忽然觉得那些错过的时间,好像也没那么遗憾了。
陈颂翻开那本新的《编译原理》,从口袋里掏出支红笔,笔尖在某页顿住——是当年周景恒总说他理解错的那个算法模型。“来,”他把书推到两人中间,“划重点。当年你总说我这部分没吃透,今天得好好给我讲讲。”
周景恒凑过去,肩膀抵着他的肩膀,闻到他发间的洗发水味,混着阳光的味道,像极了大学时的某个午后。红笔在书页上划过,留下清晰的线条,偶尔笔尖碰到一起,两人都会顿一下,然后像触电似的移开,却又在下次划重点时,不经意地靠得更近。
窗外的玉兰花瓣被风吹落,打着旋儿飘进窗台,落在翻开的书页上。陈颂伸手去拂,指尖碰到周景恒的手背,两人同时停住。
“划完重点,去看看机房旧址?”周景恒的声音很轻,带着阳光的温度。
“不着急。”陈颂把花瓣夹进书里,当作书签,“重点还没划完呢。”他低头继续写字,红笔在纸上留下的痕迹,比当年的更清晰,也更坚定。
阳光慢慢移过桌面,把两人的影子叠在一起,像两个终于对齐的代码块。周景恒看着陈颂低头划重点的样子,忽然想起大学时,这人总在他划书时打瞌睡,头一点一点的,最后靠在他肩上,呼吸扫过书页,带着薄荷糖的清凉。
原来有些习惯,真的能藏很多年。就像这个靠窗的位置,像这本《编译原理》,像两人之间没说出口的牵挂,只要根基还在,总有一天能重新生长,枝繁叶茂。
便签纸还在桌面上躺着,被阳光晒得发烫。陈颂拿起它,夹进书里,和四年前那张泛黄的便签,隔着几百页纸,遥遥相对。
划完最后一个重点时,窗外的阳光已经斜斜地坠向教学楼顶。陈颂合上书,红笔帽“咔嗒”一声扣上,惊飞了窗台外停着的麻雀。
“去吃饭?”周景恒起身时,背包带勾住了桌沿,里面的东西哗啦掉出来——除了笔记本电脑,还有个用保鲜袋裹着的盒子,里面是几块曲奇饼干,边缘烤得有点焦。
“你烤的?”陈颂捡起来,指尖碰到保鲜袋上的温度,还带着点余温。
“昨晚试的,”周景恒把东西塞回包里,耳尖发红,“面粉放多了,有点硬。”
陈颂拆开一块塞进嘴里,甜香混着焦脆的口感漫开,忽然想起大一那年,周景恒也是这样,在实验室的微波炉里烤糊了面包,硬塞给他说“补充碳水,继续改代码”。那时候面包糊得发苦,他却吃得只剩渣。
“比食堂的好吃。”陈颂认真评价,看见周景恒眼里的笑意,又补充道,“下次多放点糖。”
从图书馆出来时,夕阳把两人的影子拉得老长,沿着石板路往前伸,在岔路口轻轻交叠。陈颂忽然往左边拐:“去看看机房旧址吧,就在实验楼后面。”
实验楼的墙皮比当年斑驳了些,墙角的爬山虎枯了大半,露出里面红砖的纹路。机房的门换了新的密码锁,玻璃上贴着“设备维护,闲人免进”的字条。
“进不去了。”陈颂趴在玻璃上往里看,里面的服务器机柜换了新款,亮着冷光,“比当年我们用的先进多了,当年那台老机器,开个机得预热半小时。”
周景恒想起那个总出故障的服务器,有次为了赶项目,两人轮流守着它,陈颂趴在键盘上睡,他就盯着屏幕上跳动的进度条,凌晨四点时机器突然蓝屏,陈颂吓得从桌上弹起来,差点撞翻旁边的可乐。
“还记得那次蓝屏吗?”周景恒忽然问,“你说‘这破机器再崩,我就把它拆了卖废品’。”
陈颂笑出声:“后来不是你连夜写了个监测脚本,才把数据救回来?当时你眼睛里全是红血丝,像只兔子。”他忽然凑近玻璃,指着角落里的旧桌子,“那桌子还在!当年你总把咖啡洒在第三层抽屉里。”
周景恒也凑过去看,果然有张掉漆的木桌,抽屉缝里还卡着半张代码打印稿。阳光透过玻璃照进去,在桌面上投下光斑,像极了当年落在上面的咖啡渍。
“其实我去年回来过一次,”陈颂的声音很轻,“跟学校签合作协议,路过这里,看见这桌子还在,就站了会儿。”他转头看周景恒,“那时候想,要是能跟你一起再来看看就好了。”
周景恒的喉结动了动,没说话,只是伸手碰了碰玻璃上自己的倒影。倒影里,他的肩膀挨着陈颂的肩膀,像大学时无数次并肩站在服务器前的样子。
离开实验楼时,暮色已经漫上来。路过篮球场,有几个男生在打球,球鞋摩擦地面的声音混着笑声飘过来。陈颂忽然停下脚步,望着场边的长椅:“当年你总在那等我打完球,手里抱着笔记本,说‘代码比篮球有意思’。”
“是你非要拉我来的。”周景恒反驳,却想起陈颂打完球,汗湿的球衣贴在背上,把冰镇矿泉水往他脸上凑,说“醒醒,别总对着屏幕,会瞎的”。
场边的路灯亮了,暖黄的光落在陈颂脸上,他忽然笑了:“要不要试试?”
“试什么?”
“投篮。”陈颂扯下卫衣帽子,往球场走,“我记得你当年投三分球,能砸到篮板后面的树。”
周景恒跟着跑过去,被陈颂塞过来一个篮球。球皮有点磨损,带着熟悉的橡胶味。他掂了掂,想起大一那年院系篮球赛,最后一秒是陈颂把球传给了他,他没投进,两人坐在场边看别人领奖,陈颂却说“没事,明年再来”。
明年没能再来,但此刻,陈颂就站在对面的三分线外,冲他扬手:“来一个,看看技术退步没。”
周景恒抬手投篮,球没进,砸在篮板上弹回来,正好落在陈颂怀里。他笑着跑过去捡,却被陈颂拽住手腕,往怀里带了带。
“还是这么菜。”陈颂的声音就在耳边,带着笑意,呼吸扫过颈窝,“不过比当年强点,至少没砸到树。”
篮球滚到场边,路灯的光在两人交握的手上流动。周景恒低头,看见陈颂的手腕上还戴着当年那串红绳,是他去寺庙求的,说“保佑我们考试顺利通过”。红绳磨得发亮,却一直没摘。
“走吧,”陈颂松开手,捡起地上的篮球,“去吃门口那家麻辣烫,加麻加辣,跟当年一样。”
两人并肩往校门口走,篮球在陈颂手里拍着,“砰砰”的声音在暮色里格外清晰。周景恒看着他的侧脸,忽然觉得这一天好像把四年的时光都熨平了——图书馆的便签,机房的旧桌,篮球场的三分球,还有身边这个人,都还是原来的样子,只是多了点岁月的温度。
路过玉兰树时,陈颂忽然停下,把篮球塞给周景恒,踮脚摘了片还带着绿意的叶子,夹进那本《编译原理》里。
“做个纪念。”他说,眼里的光比路灯还亮,“证明今天不是做梦。”
周景恒低头看着怀里的篮球,橡胶的纹路硌着掌心,忽然想起大学毕业那天,也是在这里,陈颂把这颗球塞给他,说“等你回来,我们再打一场”。
原来有些约定,真的会在很久以后,以另一种方式,悄悄实现。