来源:余昊男

我的脑袋正处于不远处两台显示器的前方。刺眼的屏幕仿佛在不停告诉我,上至脑部最顶端的一根头发,下至下巴尖萎靡的胡须,都在以这两台显示器发出的夹角为30度的辐射束交叉区内。我不知道保持这样的姿势让脑袋架在脖子上已有多久,只隐约记得当我最后一次扭过头向右边忘去的时候,外面的阳光还很浓烈,而现在,我的余光告诉我窗外一片漆黑。

  事实上我根本不记得从我踏进这间屋到现在已经过了多久,因为全屏的emacs让我懒得切换出去瞄一眼右上角的时间。是的,我开了两屏的emacs,每个emacs分成了4个窗口,这样我可以在8个buffer之间自如地来回切换。

  当然,对时间的流逝我并不是毫无知觉,中途有人在我身后来来去去,或是拍我肩膀问我对食物感不感兴趣,或是在扯淡美国政客各种丑事,或是向屋内的其他人告别说明天再见。这些看起来足以推断出经历了多长时间的关键事件,在这间屋里却毫无信息量,因为里面的人可以在下午4点吃午饭,在任何时间push了一个commit之后开始谈论政治和笑话,甚至自由地进来和离去。

  但是,不管发生什么,我头也不扭,脑袋仍然一动不动地架在脖子上,一边敷衍几句,一边快速地击打键盘。

  我喜欢这间屋子里放在每张桌子上的键盘,薄,厚重,很有质感。如果愿意,当我被他人彻底打断思路时,可以当即操起键盘当成利器削过去。每个键都很平,这样我在不同键之间移动手指的时候,不用抬上去太多的高度从而节省了字符与字符之间的输入间隙。减少手指抬起高度从而提高输入速度,这样的真理是在一次观察了大师兄当着面打出了比我思绪还要迅猛的一行代码之后得出的结论。但是无论怎样,通常情况下当敲完了所有的代码,准备运行时,我通常要屏住呼吸,将中指抬高到眼睛的高度,然后快速地朝enter键划出一个V字,让V的最低点恰好击打在键上。仿佛一名刽子手将大刀举过头顶,然后快速落下,彻底宣告敌人的死亡。

  是的,一个问题就是一个敌人,而键盘是刀柄,代码是刀刃。

  这样看来,当我写代码时,我写的是热血和正义。

  一个敌人的覆灭,一个敌人的崛起,我就需要重新打造新的合适的刀刃。在每场战役的背后,时间是幕后主使,是我最大的敌人。在时间的统治下,所有码农们呕心沥血一生,也只打造出几把利刃。极少的圣者穷尽毕生心血,铸造稀世宝刀,也才只是给了时间一记非毁灭性的重击。不可否认的是,我也是码农中的一员,普通的一员,人海茫茫中的一员。

  所以码农生来命运悲惨,用有限的生命去竞赛无限的时间。

  记忆中很长一段时间过后,我的脸上布满了油脂。在辐射线的烘烤下,仿佛油脂更加旺盛灵活,沿着面部流动。我顾不上用架子上的纸巾擦拭,任其覆盖住所有的毛孔,制造出沉闷的压抑感。我不能让头部有任何移动,不能让眼球有任何偏离,我的视线紧紧跟着一个个出现在屏幕黑色背景上的绿色字符,因为我知道,稍有不慎,我的思绪会跟丢代码的思绪。对,代码也会有思绪,正如一把刀也会有灵性一样。有时当两处思绪发生共鸣时,嘴里会发出外人无法理解的声音。这种声音时而欣喜,时而愤怒,时而焦躁,时而悠闲,可耻地泄露了我的情绪。所以当我正在敲打代码时,情绪是建立在大脑和代码对话的基础上的。

  代码代表过去,而大脑则负责未来。为了和时间赛跑,我不能在当前的时间点滞留片刻。因此,当我手指在不断敲打键盘时,大脑则搜寻未来前进的方向。我训练自己用诸如c-x o, c-x b, c-x f, m-w, c-y等一大堆让人觉得繁琐得荒谬的快捷键组合。不知道从什么时候起手指有自己的记忆会自动蹦出一连串字符,仿佛手指肌肉中进化出了一系列对应于快捷键的神经反射弧。当黑色实心的光标在不同buffer中来回闪烁着切换加快时,我仿佛能听到自己的心跳也不断加速。然而理想中的终极手速,是可以在几个窗口中并行输入。只是这一目标对于我来说还太遥远。

  有时大脑的搜索会遇到障碍,当我强迫大脑思考时,那一刻仿佛滑到了时间的深渊。我会绝望地来回切换代码,从字里行间试图探清未来的方向。随着时间的一点点流逝,愤怒,无助,沮丧,绝望都会依次涌上心来,这些情绪会一直压着我心脏直到快要崩溃。然而如果一旦发现切入点,就一路高歌猛进,击退层层阻碍,代码洋洋洒洒一屏下来不在话下。

  所以写代码时,没人会愿意停留在现今。时间都被过去吸走,被未来拿去思考,时间只是在当下如白驹过隙般闪了过去。

  所以当我写代码时,我写的是人生。

  当外人看着我身躯一动不动,姿势僵硬的时候,我已然写下各式各样的人生,不管是C, Java, Lisp, Python,还是其他如bash, php的各种脚本。轻装上阵的人生用脚本,想复古的时候用Lisp,写前卫的人生时候用Python,想给力的时候用C,或者,想喝咖啡的时候用Java。文艺青年们喜欢用单反记录下生活中的点点滴滴,而对于我,打开那一屏又一屏密密麻麻,花花绿绿的代码,我会指着对他们说,看,这就是我的人生。

  当然他们不会理解,除非他们是文青兼码农。

  终于到了代码收尾的时候,我揉了揉干燥的眼睛,想必里面已经布满了血丝。我终于难得一见地舒缓了身子,抽了纸巾擦了擦脸,然后屏住呼吸,将中指举到眼睛高度,然后朝enter划了一个V字。

  那一瞬间,仿佛世界都静止了。我的思绪回到了现实世界中。

  周围的人都走光了,外面漆黑一片,屋子里静得出奇,还听得见N多台48核的机子跑动的声音。仿佛全世界的人们都逃难去了,只剩下我一人在写代码。我来来回回又ssh了一遍所有名称为以不同国家语言代表“智能”意思的服务器cluster,然后在自己的zhineng停下,锁屏,关显示器。

  我终于背对着显示器,喝了口水。猛然意识到代码世界中越丰富多彩,结束的时候会感觉现实世界越单一。

  人们都会奔着文青们照出来的一张张绚丽多彩的照片而去,赞赏,仰慕,评论有加。而当他们看到我用僵硬的姿势,脑袋一动不动架在脖子上紧张地敲着代码时,肯定会说,快看那人好奇怪,好像一只猿哦。

  于是,当我写代码时,我写的是寂寞。