一个藏在YatSenOS背后的故事

谨以此文献给一位丁香一样的、结着愁怨的姑娘。一年前,为了获得一张在她的世界里路过的单程票,我写下了YatSenOS。

在两年前的一天,我遇见了她。第一次见到她的时候,心中有一种特别的感觉。在此之前,这种感觉只发生过一次。那是另外一个故事,是在高中三年里都未曾说出口的暗恋。在遇见她后的半年时间里,我都在想着如何才能找到和她接触的机会。但大二上对于我的一生来说是一个至暗时刻,那时的我,既对未来充斥着迷茫,又觉得有几门专必课上得非常不顺心。更为难过的是,家中又遭逢亲人突然离世的变故。那时候,我的生活一直处于浑浑噩噩的状态,喜怒无常,但又不得不在人前强颜欢笑。久而久之,我对曾经热爱的一切都无法提起兴趣。对她来说,我不敢贸然地打扰她,一直想找一个能够接近她但又不会让她感觉到突兀的机会。但这样的机会实在是太难得,可遇不可求。最后,我也没有找到。

学期结束后,本以为再也见不到她的时候,我在操作系统课程上发现了机会。学校的操作系统实验课程实在是过于陈旧,相比于清华的ucore,确实存在有非常大的改进空间。此时,我在想:清华有的,我们也可以有。于是,我萌生了要为学校重新写一本实验教材的想法。如此便可以让我们学校的OS实验课追赶上清华的脚步。同时,我忽然想到,这是一个能够比较自然地接近她的机会。为什么?因为这本实验教材很有可能会用到下一届的实验课中,这样我就可以一个助教的身份参与到其中。就像《何以笙箫默》中所说的:既然我在茫茫人海中找不到你,那我就站在人群的最高处,让你能看到我。但当时我隐约感觉到,这是一场向死而生的旅程,当我站在最高处之时,便是我来到了终点之日。计划好了之后,便可以开始实施。这并不是一件容易的事情。在编写这本实验教材的过程中,需要学习许多知识,如操作系统基础、硬件驱动和Linux内核等。同时,对于OS这种底层软件来说,debug全靠使用gdb来跟踪。有些错误和硬件相关的,如页地址翻译错误,是无法通过单步跟踪来发现的。这种时候,只能依靠直觉来debug。在整个过程中,没有人可以交流,而我具有非常强烈的偏执和代码洁癖,因此常常会陷入到深深的自我矛盾中。每每想放弃或没有写作灵感的时候,我都会去操场上长跑。在长跑的过程中,也会出现类似的想放弃的时刻。此时,脑海中都会浮现起这样的话:如果你现在放弃,那么你也就真的再也见不到她了。此时,心中都会重新燃起斗志,我攥紧了拳头,心想:无论花费再大的代价,这本教材也一定要写出来。在后面写教材的过程中,我始终在幻想着一个场景,就是能够亲自和她介绍这本教材的种种细节。因此,在写材料的时候,我总能感到行云流水般的舒畅。在字里行间中,我倾注了自己学到的所有知识以及难以说出口的感情。

教材和实验写得差不多后,我还需要向老师推销我的教材。因为计院的本科生不可以担任助教,我需要提出一些让老师无法拒绝的条件,如一本全新的实验教材,从而才能让任课老师为我破格。但我实际上是一个内向的人,毛遂自荐的事情对于我来说实在有点困难。从另一个方面想,我已经历经了一年的努力和等待,这时就差临门一脚就能成功,为什么不做呢?To be or not to be? It is a question. 在历经多次思想斗争后,我终于鼓起勇气向老师推销自己。幸好,老师非常赞同我的想法,我终于如愿当上了下学期OS实验课程的助教。可是,快乐并没有持续太久,我得知了老师教授OS课程的专业方向和我的方向不同。而我看到她大一的绩点有4,也还不错,觉得她应该会选择和我相同的方向。这个消息如同晴天霹雳,让我顿时觉得兴趣全无。但是,既然当上了助教,就需要承担起相应的责任。毕竟这是同学们的专必课,我不能随性而为,还是要认真对待,并且需要提供一些切实的干货给同学们。

时间很快来到了大三下,他们的实验课也开课了。在他们的第一节实验课的时候,我并没有去。因为觉得想见的人并不在,而我又需要上编译原理这门课,于是就选择了不去。但是,在课间休息的时候,我看了下他们的OS课程群,却发现她赫然在列。那一刻,我觉得好像拥有了全世界。眼前的编译原理也没什么兴趣上了。造化弄人的是,编译原理居然课间点名???而且每节课必点名???这次,看来是想逃课去上他们的OS实验课也没有办法逃了。当时只觉得,TMD的这编译原理误我人生大事。算了,一计未成又生一计呗。线下接触不行,那就转战线上。有一天,在东校的图书馆四楼,我依旧是坐在熟悉的位置,打开她的QQ聊天框,想了好久,思考究竟以什么样的话开场比较好呢?而我是一个助教,就像她说的,是半个老师。所以我需要克制自己的感情,注意自己的言行。因为我真的不想由于我的言行导致她讨厌了这门课,从而对她的绩点什么的造成不好的影响。同时,如果让其他同学知道了我是专门为她而来,可能会有好事者说一些难听的话。即便是她取得的好成绩,也会被曲解为我的暗中操作。实际上,这是一把难以打开的枷锁。上帝为我打开了一扇窗,让我看到了她,但却关上了我的门,而这个门只能从外面打开。一直到课程结束,到现在,我都没有办法和勇气打开这把枷锁。终于,我不得不接受了这个现实,每次和她聊天大多只能限制在鼓励她好好学习,天天向上类似的主题。

但是这样是不够的,如何才能让她了解我呢?我想了一个办法,就是通过朋友圈和空间动态来无声地告诉她。与此同时,她也发过不少的文章。在她的文章中,她写了不少关于她的事情。从认识她开始,我都在收集和阅读她写的文章,从而也能部分了解到她。她的文章现在已经搜不到了,但我之前专门写了一段代码,这段代码可以将她发过的文章都下载下来。代码很短,只有32行。这32行代码后来被我制作在一张明信片中,但我至今仍然不敢把这张明信片送给她,只因她曾写道:但我一直是个不太有自信的人,很少愿意让别人读我写的东西,扭捏且固执。我平时基本没有和女生聊天,也没有谈过恋爱。所以在和她聊天的时候总是显得非常笨拙,明明想了好多,但一到实际操作的时候,不知道说什么好。我也曾十分苦恼。于是,我找了高中的同学做智囊团。遇到一些问题的时候,就去知乎搜一下提问和回答,然后和自己的观察和体会结合,形成自己的解法。这有些类似transfer learning,但模型在迁移过程中也会存在过拟合和欠拟合的问题,需要根据实际情况做一些fine tune. 这些都只是理论层面的推导和假设,和实际又有些出入。

后来,她在大二时遭逢了和我当时相同的变故。在言语中,可以感到她的悲痛、无奈和辛酸。我当时特别想去她的城市,能够帮她承担一部分苦楚。但对她来说,我只是一位助教。我无法做更多的事情,但我真的害怕她会和我当时一样,变得一蹶不振,对学习、生活也不再上心了。我唯一能做的,就是和她讲一些理性的道理,鼓励她不要因此而放弃。但将心比心,这些道理对于当时的我来说,根本就不会听得进去。我后来给她买了一份礼物,不过是两本王道考研,希望在她回校的时候给她。我想着她通过做着两本书能够找到些考试技巧,从而能够在回校后把分数提上来。这也是我当时走过的路。在得知她回来后,我破天荒地和她说有一份礼物要给她。因为以前给她发消息的时候总要想好久,这次竟如此坦然。而更令人开心的是,她竟然接受了。后面五月份的时候,我用一个中大帆布袋装着4本书拿给了她。在《计算机网络》这本书中,我夹了一张明信片进去,明信片里写着《老人与海》中的一句话。这句话是我在大一的时候用来不断激励自己的座右铭。我记得我拿出这个帆布袋的时候,我脸都红到了耳根。因为这是我第一次给女生送礼物。我明明在事前连呼吸都反复练习,但一见到她的时候,还是大脑空白,不知道说什么好。经过短暂的沉默后,我终于憋出了一句:好的,那我先走了。在我走出教室的那一刻,我想把我自己锤爆……

再后来,我去到了她的城市。碰巧的是,我住的地方离她家只有数公里远。在一个夜晚,我又想起了她,实在辗转难眠,于是就去街上走一走。我记得,那天下着小雨,在凌晨一二点,我彷徨在街道,万籁无声。我独自走过她的小学、她的初中、她的高中。走着走着,我有些惆怅。我好希望,走过她曾经走过的路,了解她的生活。我好希望,在这寂寥的雨巷,能够逢着,那个丁香一样地,结着愁怨的姑娘。我好希望,她可以一边走一边和我介绍着关于她的一切。但在这冷清的夜晚,只有细雨淅沥,只有灯火阑珊,只有长夜漫漫。回到住处,却有些莫名的哀伤,眼眶也有些湿润,大概是看到了结果了吧。结果很简单,是一个不等式。

$$
\lim_{time\rightarrow\infty} dist(\text{她},\text{我})\ge \epsilon
$$

无论时间过去多久,她和我之间,都存在着一段我永远无法跨越的距离。

造化弄人,当时的我没有想到,在一学期的实验课里,我都没能和她见上一面。最后,实验课结束了,故事到这里也快结束了。一个月前,我鼓起勇气想请她吃饭,想把这一切告诉她,但她用另外的方式告诉我结果了。那些没有勇气、没来得及说出口的话,只能在这里写下。

愿她有一个灿烂的前程
愿她有情人终成眷属
愿她在尘世间获得幸福
我只愿
如果时光可以倒流
好想好想
在二十一岁的仲夏
亲口和她说
阴天、晴天、雨天
你喜欢哪一种天气
我喜欢晴天多一点

Nelson Cheung

2021.12.21

写于中大东图四楼