矛盾这个东西,有时候不是谁做错了什么,而是两个人的坐标系根本不一样。
——那是沈奉栖后来才想明白的道理。
但在九月初的那个下午,他只是觉得,自己跟程砚烽这个人,大概天生就不对付。
事情的起因很小。
开学典礼之后第三天,法学院和计算机系有一门公共选修课撞上了——《逻辑与批判性思维》。这门课在光华楼的大阶梯教室上,两个院系的新生加起来一百二十多号人,座位先到先得。
沈奉栖习惯坐第二排靠窗的位置。不张扬,但也不窝在角落,刚刚好能看清PPT,又不会跟老师对视得太频繁。他提前十五分钟到了教室,把书包放在旁边的座位上,替林北占了一个位置。
林北这学期不知道哪根筋搭错了,明明计算机系的课已经够多了,还非要选一门法学院的选修课,说是“提升一下人文素养”。
沈奉栖当时没说什么,内心在想:你一个写代码的,提升人文素养的方式不应该是去读莎士比亚吗,来抢法学院的课干什么。
但他面上只是温和地笑了笑:“欢迎啊,一起上课也好。”
上课铃响前三分钟,林北气喘吁汹地冲进来,一屁股坐在他旁边,满头大汗地开始掏笔记本。
“差点迟到,计算机系的实验课拖堂了,那个老师简直了,说‘我再讲五分钟’讲了整整十五分钟——”
沈奉栖递给他一张纸巾:“擦擦汗。”
“谢了兄弟!”林北接过纸巾,胡乱在脸上抹了一把,然后把目光投向教室门口,“对了,我跟你说,我们系有好几个人也选了这门课,程砚烽好像也——”
话音未落,教室门被推开了。
程砚烽走了进来。
他今天穿了一件深灰色的卫衣,帽子松松地搭在背后,黑色短发看起来刚洗过,发尾还有一点没干透的潮意。手里什么也没拿——没书包,没笔记本,没笔,就一个人空着手走进来了,像是来散步的,不是来上课的。
他身后跟着一个戴眼镜的瘦高男生,倒是背了个鼓鼓囊囊的书包,一边走一边跟他说什么。
程砚烽听了几句,微微点头,目光在教室里扫了一圈,然后径直走向了最后一排。
最后一排靠角落的位置。
他往那儿一坐,长腿伸到前排椅子下面,整个人往后一靠,姿态舒展得像一只占了领地的大型猫科动物。
沈奉栖收回目光,翻开了面前的笔记本。
内心不起什么波澜:空着手来上课,连支笔都不带。要么是天才,要么是来混学分的。看他的成绩波动史,大概是后者。
但他没再多想。别人怎么上课是别人的事,跟他没有半毛钱关系。
讲课的老师是哲学系的副教授,姓方,四十出头,戴着一副金属框眼镜,说话语速不快但密度很高,第一节课就开始讲“逻辑学的基本概念”——命题、论证、有效性、可靠性。
“法学和计算机科学,其实都是逻辑学的应用学科,”方老师推了推眼镜,目光在教室里扫了一圈,“只不过法学的逻辑是规范性的,研究‘应当如何’;计算机科学的逻辑是描述性的,研究‘实际如何’。同样一个逻辑命题,法学生和计算机学生的思考路径可能完全不同。”
沈奉栖在笔记本上工工整整地写下:法学逻辑——规范性(应当如何);计算机逻辑——描述性(实际如何)。
他写得认真,字迹清秀,每一笔都规规矩矩的,像他这个人一样。
林北在旁边小声说:“什么叫描述性?就是‘是啥就是啥’的意思吗?”
沈奉栖侧过头,压低声音解释:“差不多。计算机的逻辑是‘输入-输出’,你给我什么数据,我跑出什么结果,不考虑应不应该,只考虑是不是。”
“哦——”林北恍然大悟,“那你们法学的呢?”
“我们考虑的是‘应该是什么’,”沈奉栖说,“同样的案件事实,不同的价值判断可能会得出不同的结论。所以法学的逻辑更复杂,因为它要处理的是人的行为,不是代码。”
林北听得一脸懵,点了点头没再问了。
沈奉栖转回头继续听课,余光扫了一眼最后一排。
程砚烽不知道什么时候从那个戴眼镜的男生那里拿了一支笔,正在一张纸上画着什么。不是记笔记——他画的东西看起来像是一个流程图,方框、菱形、箭头,密密麻麻的,但画得很随意,像是随手在涂鸦。
沈奉栖把目光收回来。
内心觉得这个人有点奇怪:选了课又不认真听,画那些东西是在干什么?写代码写习惯了,看什么都想画成流程图?
课间休息的时候,方老师布置了一个小组讨论的题目:
“假设一个场景——某高校规定‘学生宿舍禁止养宠物’。一名学生在宿舍里养了一缸鱼,被宿管发现后要求其处理掉。学生辩称‘鱼不是宠物,是观赏性水生生物’。请问:这个学生的论证是否有效?为什么?”
方老师说:“大家自由分组讨论十分钟,等下我随机点人回答。”
教室里顿时热闹起来。林北转过身想找计算机系的同学讨论,沈奉栖则低头在自己的笔记本上列逻辑框架。
他习惯先把问题拆解清楚——定义、前提、推理过程、结论,一步一步来,像解一道法律论证题。
“首先需要界定‘宠物’的定义,”他在本子上写,“如果校规的立法目的是为了防止动物影响宿舍卫生和他人休息,那么‘鱼’是否产生同样的影响?其次,学生的论证是在偷换概念还是在进行合理的法律解释……”
他写得专注,没注意到后排有人走了过来。
“借过一下。”
一个声音从头顶落下来,低沉,带着一点点沙哑,尾音懒洋洋的。
沈奉栖抬头。
程砚烽站在他旁边的过道上,正低头看着他。从这个角度看过去,他的下颌线显得格外锋利,喉结在卫衣领口上方微微滚动了一下。
他的目光在沈奉栖的笔记本上停了一秒,看到了那行工整的字迹,然后移开了——没什么特别的表情,只是侧过身,从沈奉栖和林北的座位之间挤过去,走到窗边去开窗户。
“有点闷。”他自言自语似的说了一句,把窗户推开了一条缝,九月的风裹着青草的气息涌进来,吹动了沈奉栖额前的碎发。
然后程砚烽就转身走了,回到最后一排,重新坐下,继续画他的流程图。
从头到尾,他没有跟沈奉栖说一句多余的话,没有打招呼,没有寒暄,甚至没有多看一眼。
就好像沈奉栖只是一个挡路的椅子,挪开就行了,不需要任何额外的关注。
沈奉栖握着笔的手指微微收紧了。
心跳没什么波动,但心里有一种说不清的感觉——不是生气,不是被冒犯,更像是一个人精心摆好的棋盘上,突然被人随手丢了一颗不相关的棋子,然后那个人就走了,连看都没看一眼棋盘。
他低下头,继续写自己的逻辑框架。
字迹依然工整,但“定义”两个字被他写重了一点,笔画比前面的粗了一些。
讨论时间结束,方老师开始随机点人回答。
“计算机系的程砚烽同学,你来试试?”
沈奉栖注意到方老师点他名字的时候,语气里有一点好奇——大概是想看看这个“奖学金型学霸”能说出什么来。
程砚烽从最后一排站起来,双手插在卫衣口袋里,整个人懒洋洋的,像是被人从午睡里叫醒。
“这个学生的论证无效。”他说。
方老师挑眉:“理由呢?”
“因为校规的本质不是定义‘宠物’这个词,而是禁止某些行为。你管它叫宠物还是观赏性水生生物,本质上都是在宿舍里养了一个活的东西。校规要管的是‘活的东西带来的问题’,不是‘你管它叫什么’。”
他说完,顿了顿,又补了一句:“计算机的逻辑里,变量叫什么名字不重要,重要的是它的值是什么。你把变量名从pet改成aquatic_organism,它存的还是同一个对象。程序不会因为你改了变量名就不报错。”
教室里安静了两秒,然后有人笑了起来。
方老师也笑了:“有意思,从变量命名的角度来理解法律解释。那你觉得法学的逻辑应该怎么看待这个问题?”
程砚烽歪了一下头,表情像是在思考,又像是觉得这个问题本身不太重要。
“法学的逻辑?”他重复了一遍,目光无意间扫过沈奉栖的方向——很随意的一扫,像是在看教室里的某面墙、某扇窗。
“法学的逻辑大概会觉得我在抬杠吧。”
他说完,嘴角弯了一下,坐下了。
教室里又笑了几声,方老师也笑着摇了摇头,没有追问,点了下一个同学回答。
沈奉栖没有笑。
他低下头,看着自己笔记本上那行“法学的逻辑是规范性的,计算机的逻辑是描述性的”,忽然觉得这行字变得格外刺眼。
——变量叫什么名字不重要,重要的是它的值是什么。
——程序不会因为你改了变量名就不报错。
他在这句话里听出了一些东西,一些让他不太舒服的东西。
不是这句话本身有什么问题。从逻辑上来说,程砚烽的论证是有效的——甚至可以说是非常有效的。他用计算机科学的思维方式,直接绕过了“宠物”这个词的定义之争,抓住了校规的实质目的。这种思维方式简洁、高效、直击要害,在效率上甚至比法学的精细解释更胜一筹。
但沈奉栖不舒服的地方在于——
程砚烽根本不在乎。
他不在乎“宠物”这个词的定义是什么,不在乎校规的立法原意是什么,不在乎法学里那些精细的、微妙的、需要反复推敲的概念边界。在他看来,那些都是“变量名”,改了就行了,不重要。
沈奉栖在乎。
他在乎每一个词的确切含义,在乎每一条规则的适用范围,在乎逻辑链条里每一个环节的严密性。他学法,是因为他相信语言的边界就是世界的边界,定义清楚一件事情,比解决一件事情更重要。
而程砚烽那种“管它叫什么名字,看它实际是什么”的态度,在他看来,简直是对法学思维的根本性冒犯。
不是故意的冒犯。
这恰恰是最让沈奉栖在意的部分。
程砚烽不是故意要冒犯谁,他只是按照自己的思维方式说了自己想说的话。他甚至可能根本没意识到自己的话会让人产生什么感觉。
就像刚才借过的时候,他看了沈奉栖一眼,目光从笔记本上扫过去,然后移开了。
那一扫里面没有恶意,没有挑衅,甚至没有好奇。
只是——扫过去了。
像看一把椅子、一扇窗、一面墙。
沈奉栖把笔记本合上了。
心尖有一点点不太舒服的感觉,像被一根极细的针尖轻轻戳了一下。不是疼,是那种“我在这里,但你没看见我”的微妙的刺痒。
他说不清楚这种感觉叫什么。
但他给这种感觉贴了一个标签。
——程砚烽,这个人,跟他在两个坐标系里。
法学的坐标系是精细的、层层的、每一个概念都有边界的;计算机的坐标系是扁平的、直接的、只看输入输出的。
在两个坐标系里画出来的图,永远不可能重合。
下课之后,林北一边收拾东西一边说:“程砚烽刚才那个回答好好笑啊,‘法学的逻辑大概会觉得我在抬杠吧’,他是不是在嘲讽我们法学啊?”
沈奉栖把笔记本放进书包,拉好拉链,动作不急不缓。
“不算嘲讽,”他说,语气温和,“只是思考方式不同。”
“那你觉得他说得对吗?”
沈奉栖站起来,把书包背好,想了两秒。
“从逻辑角度来说,他说得对。从法学角度来说,他把问题简化了。”
“哦……”林北似懂非懂地点头,“那你是不是不太喜欢他?”
沈奉栖笑了一下,那种标准的、让人挑不出毛病的温柔笑容。
“没有,只是不太熟。”
他往教室外走,脚步不快不慢,背影看起来从容又体面。
但只有他自己知道,他脑子里一直在转那句话——
变量名不重要,重要的是值。
他在心里默默反驳:法学里,变量名就是很重要。你把“故意杀人”改成“非自然死亡”,整个刑法体系都要重构。名字从来都不是无关紧要的东西。
可是他又不得不承认,程砚烽的论证是有效的。
这种“他说的有道理但我不想承认他说得有道理”的感觉,让他觉得更不舒服了。
走出光华楼的时候,沈奉栖在教学楼门口的台阶上停了一下。
九月的阳光很亮,梧桐叶的影子在地上晃来晃去。他低头看了一眼手机,沈听澜发了一条消息过来:
「哥,大学生活怎么样?有没有交到新朋友?」
他打字:「还行,认识了一个室友,人挺好的。」
「有没有遇到讨厌的人?」
沈奉栖的手指悬在屏幕上方,停了大概五秒钟。
然后他打:「没有。」
发完这条消息,他把手机收进口袋,走下台阶。
走了大概十步,他忽然又停下来,回头看了一眼光华楼的门口。
程砚烽刚好从里面走出来。
他一个人,卫衣帽子不知道什么时候戴上了,灰色的帽檐压住了半张脸,只露出一个下巴和微微抿着的嘴唇。他走路的姿势很散漫,步幅大但频率慢,像一只在自家领地里闲逛的大型动物。
他走到台阶下面,似乎感觉到了什么,偏了一下头,目光隔着帽檐的边缘往沈奉栖的方向扫了一眼。
就一眼。
然后他低下头,从口袋里掏出手机,一边看一边往另一个方向走了。
没有点头,没有打招呼,没有任何社交性的示意。
就好像他根本没有看到沈奉栖这个人。
——或者看到了,但不觉得有必要做什么反应。
沈奉栖站在原地,看着那个深灰色的背影越走越远,消失在梧桐大道的尽头。
他深吸了一口气。
然后他做了一件他自己都觉得有点幼稚的事情。
他在心里,给程砚烽建了一个文件夹。
文件夹的名字叫:「需要保持距离的人。」
理由:思考方式不同。他那种“变量名不重要”的思维方式,跟我的价值观不兼容。长期接触可能会影响我的专业判断。
他把这个文件夹放在心里很角落的位置,然后拍了拍书包带,转身往宿舍的方向走。
走了两步,他又在心里默默加了一条备注:
「另外,这个人好像完全不记得我是谁。」
——明明开学典礼那天在校门口说过话,明明今天在教室里他走过来开窗户的时候看了我的笔记本,但他看我的眼神,跟看一把椅子没什么区别。
他不记得我。
或者说,他根本不需要记得我。
心跳还是平稳的,没有生气,没有失落,只是一种很轻的、几乎不可名状的在意。
像一条小鲨鱼在自己的领地里游来游去,忽然发现领地边缘出现了一个陌生的影子。那个影子没有闯进来,没有挑衅,甚至没有多看它一眼——只是路过了。
但小鲨鱼记住了。
它把那个影子的轮廓刻在了记忆里,然后竖起背鳍,在自己的领地里画了一条更清晰的线。
——这里是我的地盘。
——那个人,不要靠近。
沈奉栖回到宿舍,把书包放在桌上,从书架最里侧把团子拿出来,放在枕头旁边。
他捏了捏团子的小尾巴,低声说:“团子,我今天遇到一个人。”
团子圆滚滚的脸上缝着一个永远的微笑,钝钝的嘴巴翘着,看起来什么都不在乎。
“他跟我们不是一类人。”
团子当然不会回答。
沈奉栖把它放好,去洗了个澡。热水从头顶浇下来的时候,他闭着眼睛,脑子里还在转那句话。
变量名不重要,重要的是值。
他在水声里小声说了一句:“那你在不在乎,你面前站的是谁?”
水声盖住了他的声音。
没有人听到。
同一天的晚上,计算机系的宿舍楼里,程砚烽盘腿坐在床上,笔记本电脑搁在膝盖上,屏幕上是密密麻麻的代码。
他的室友,那个戴眼镜的瘦高男生——叫周明朗——从对面床上探出头来:“砚烽,你今天在逻辑课上那个回答,把法学院的都逗笑了。”
“嗯。”程砚烽头也没抬,手指在键盘上敲得飞快。
“不过你最后那句话,‘法学的逻辑大概会觉得我在抬杠吧’,是不是有点那什么?”
“什么?”
周明朗斟酌了一下措辞:“就是……有点挑衅?”
程砚烽的手指停了一下。
他抬起头,看着周明朗,表情里有一点真诚的困惑。
“挑衅谁?”
“就是……法学院的啊?”
程砚烽皱了皱眉,像是在认真回忆自己说了什么,然后“哦”了一声。
“没有,”他说,“我就是实话实说。法学的逻辑确实跟计算机不一样,我说那个答案的时候,脑子里想的确实是变量命名的事。”
他顿了顿,又问:“有人觉得被冒犯了?”
“也没有,就是……”周明朗想了想,“算了,没什么,你继续写你的代码吧。”
程砚烽看了他一眼,没再追问,低下头继续敲键盘。
他的手指在键盘上飞快地跳动,屏幕上的代码一行一行地生长出来,逻辑清晰,结构严谨,每一个变量都有精确的定义和明确的用途。
在他的世界里,一切都是有解的。
代码错了就改,程序崩了就调,输入是什么,输出就是什么。不存在模棱两可的定义,不存在“应当如何”的价值判断,只有“实际如何”的事实陈述。
他的思维方式就是这样——直接、简洁、结果导向。别人说什么话,他就听字面意思,不会去揣测弦外之音。别人做什么事,他就看实际效果,不会去分析背后的动机。
这种思维方式让他活得很轻松。
但也让他错过了一些东西。
比如,他没有注意到,今天下午在教室里,坐在第二排靠窗位置的那个奶奶灰色头发的男生,在他走过的时候,握笔的手指微微收紧了。
比如,他没有注意到,那个男生在他开口说话的时候,眼睛里的光变了一下——从“与我无关”变成了“我在听”。
比如,他没有注意到,那个男生站在光华楼门口回头看他的时候,眼底有一丝极淡的、连他自己可能都没有意识到的……在意。
程砚烽什么也没有注意到。
他只是写完了最后一行代码,按下编译键,看着屏幕上跳出“编译成功”的绿色提示,满意地靠在了枕头上。
“还行,”他自言自语,“今天效率不错。”
他关了灯,把手枕在脑后,看着天花板。
脑子里忽然闪过一个画面——很模糊的,像是记忆的角落里被风掀起了一角。
第二排靠窗的位置,一个男生低着头写字,头发是奶奶灰色的,扎成一个小狼尾,后颈露出一小截白皙的皮肤。笔记本上的字迹工工整整,一笔一画都写得很认真。
程砚烽想起来,他今天下午从那个男生身边走过的时候,看了一眼他的笔记本。
不是因为那个男生有什么特别的。
只是因为他低头的时候,后脑勺那个小狼尾的弧度,看起来有点像某种鱼的背鳍。
什么鱼来着?
他想不起来了。
算了,不重要。
他翻了个身,闭上眼睛。
三秒钟之后,呼吸变得均匀而绵长。
窗外,月亮从云层后面探出头来,把银色的光洒在宿舍楼的外墙上。
两栋楼,一栋在南,一栋在北。
一个房间里,团子安静地躺在枕头旁边,钝吻鲨的微笑在月光下显得格外温柔。
另一个房间里,代码编译成功的绿色提示还在屏幕上发着微光,像一只沉默的眼睛。
两个人,一个在想,一个不在想。
一个在心里画了一条线,一个连线的存在都不知道。
这就是坐标系的差异。
法学的坐标系里,每一个行为都有意义,每一个眼神都有重量,每一句话都需要被解释、被分析、被放在上下文里理解。
计算机的坐标系里,只有输入和输出。你说了什么,我就听什么。你没有说的东西,就不存在。
沈奉栖在这个坐标系里画了一个点,标签是“需要保持距离的人”。
程砚烽在那个坐标系里,连一个点都没有画。
不是因为他傲慢,不是因为他目中无人。
只是在他的世界里,没有遇到需要记录的数据,就不会占用内存。
而沈奉栖的世界里,每一段数据都会被存档,即使它暂时看起来毫无意义。
两个人就这样,在同一个校园里,在同一个教室里,在同一个九月的风里——
一个在心里建了一座档案库,专门用来存放关于另一个人的记录。
另一个连硬盘都还没插上。
(第三章完)