多情码农无情码注(1)

一个喜欢读小说的人很容易萌生写小说的想法。自小学拿着钢笔在笔记本上胡写,到大学拍打键盘在另一种笔记本上乱侃,期间我曾萌生过写小说冲动的 次数早已难以计数,然而真正动笔下的并不多,写完的几乎没有,而写完了如今自己觉得还能看的则是完全没有。那些故纸堆里的故事大约全是历史或者武侠,而最 近写小说的冲动再度出现以后,却忽然想写一点新鲜的东西。我构思过一个发生在交大的武侠故事,想到过一个关于程序员和2012的科幻故事,但是毕竟少经历 练,下笔总觉得生涩,结果也远无法使自己满意;直到后来忽然想到一个新方法,即借助古龙的小说《多情剑客无情剑》(即“小李飞刀”的故事)。

《多情码农无情码》借用了古龙的小说《多情剑客无情剑》里的人物,在一定程度上参考了他们的性格,但却把他们安插在了一个完全不同的时代——“飞刀 与快剑”变成了“鼠标与键盘”。然而,《多情码农无情码》的故事发生在《多情剑客无情剑》以前——这么说可能会让人困扰,因为明显古龙的故事里计算机还没 有被发明,不过我指的是关于李寻欢、林诗音、龙啸云三个人的情感纠葛发生在古龙的故事以前。选择这个故事是因为一方面它既是古龙讲述过的一个故事,同时又 没有讲得太细,这就意味着它给了我一个故事的框架,同时还留给我许多自由发挥的余地。

写这部小说显然无意出书之类的事情,可能更多的是个人兴趣,也希望能对自己还很拙劣的写作水平(虽然得过不少夸奖,但幸好我有时候很能找回一些自知之明)进行一些探索和锻炼。而这篇注,不妨说是让自娱自乐的high更high一点。

第一章注

这一章的第一段我试图给整个小说奠定一个世界观的基调——用理工科的思维来讲述一个故事。所以采用了维度这样一种世界观来起头。李寻欢、林诗音和林啸云都是程序员——或多或少,我希望在我在描写不同的人物视角时能写出不同的感觉。

第三段花了那么长的句子描述李家庄园里的各种高科技设备也是为了交待时代背景。

虞世南的介绍可以参看这里。我之所以在这篇注里也不怎么介绍他是因为其实我也不了解他,他是我写这一段的时候从书法家中胡乱揪出来的一个。

男性在看到美女后智商会下降的研究不是我编出来的,我原本阅读的那篇文章一时找不到了,但是这里有一篇似乎差不多文章可供参考。

对林诗音的描写花费了很大的篇幅,因为我想要营造出一种龙啸云在见到林诗音以后时间几乎停滞的感觉,就好像电影中在看到一个美女后镜头忽然放慢了一 样。因为如他所说他似乎所有的脑细胞都用来捕捉她的每一个动作每一个细节了。描写林诗音的几个简单动作的篇幅大约相当于前文的篇幅,这一安排其实照应了文 章最开头的龙啸云自己人生的轨迹(前二十多年可以一笔带过,此时此刻忽然具有其意义)。当然这些是我试图取得的效果,如果读者是通过阅读这一段产生的这种 体会(或者阅读完这一段还没产生这种体会),那么显然我并没有成功。另外对于林诗音的描写其实大量抄袭了曹植的《洛神赋》和曹雪芹的《警幻仙子赋》。

JavaScript不止可以用于写网页的一个典型例子便是GNOME3,这款自由软件的很多代码都是使用JavaScript写就的。你可以在这里查看详情。

第二章注

Kindle是Amazon推出的一种电子书阅读器,我自己便有一台Kindle 3,我很喜欢它。

动态编程语言是指在程序运行时能够改变其结构的语言,譬如引入新的(或者修改旧的)函数、类甚至代码。在小说前四章里出现的语言中JavaScript、Python、Ruby、Lisp都是动态语言,而C++和Java属于静态语言。维基百科的链接在这里

李寻欢在第五段讲述的理论是在欧美各国论述和大脑相关的问题时大多都会讲述的(很多时候还会从笛卡尔的观点讲起,再到现代科学的研究),奇怪的是我 还没见过哪门国内的课程或者书将这个东西。如果你想了解这方面的话耶鲁大学Paul Bloom教授的公开课《心理学导论》(Introduction to Psychology)的第二节便有颇为详细的讲述(官方网址在这里,交大的同学可以在葡萄上下载到该课程视频),美国科技作家Nicolas Carr也在他的《浅薄》一书的《记忆哪里去了:做互联网的奴隶还是看客》一节里花了很大的篇幅来讨论这一问题(有趣的是Nicolas Carr的这本书在讨论互联网阅读的害处,其中一个很糟糕的东西便是超级链接,而这篇文章使用了数目不少的超级链接),当然查看这些可能都比较麻烦,幸好同人于野的博客上也有一篇非常精彩的文章《Myth 和Truth:人脑不是计算机》可供欣赏。

Lisp语言的水太深,我就不讨论了。幸好它们不怎么会影响阅读。

关于李寻欢同时身为武林中的“小李飞刀”和士人中的“小李探花”这一身份特点被我保留了下来,当然这里的武林是黑客界。我在这篇小说里的“黑客”的说法更近似于Paul Graham的《黑客与画家》一 书里的说法。弹劾李寻欢的御史胡云冀是古龙原创的人物,他在《多情剑客无情剑》的第二十三章《误入罗网》里以少林寺心树大师的身份出现,而“结交匪类”这 个罪名也是来源于原著(第二十三章《误入罗网》里,李寻欢说:“……若非为了你那一道弹章,说我身在官府,结交匪类……”),当然这里“匪类”也顺便换成 了“黑客”,这里的“黑客”则是黑客圈以外的人物对“黑客”一词的理解(相当于《黑客与画家》里提到的cracker)。这里胡云冀和李寻欢代表了不懂计 算机和精通计算机的两类人,他们对这一词的理解的不同正是反映两类人世界观的不同。

忒修斯之船是一个古希腊哲学问题,它是讲述一艘叫做忒修斯之船的木船每根木头腐朽以后都会被替换成新的,于是经过一段时间后可能这艘船的每块木头都 不是原来的木头,此时这艘船还是原来的忒修斯之船吗?如果是,如何解释它已经没有一根木头是原来的了;如果不是,它又是什么时候开始不是的?(维基百科的 链接在这里)林诗音用这个典故便是询问李寻欢是否认为人身上没有一样东西是不变的。

《操作系统之哲学原理》这本书也不是我编出来,事实上它是我的一位大学老师写的书。这位老师这学期教我们操作系统课程,教材也正是这本书。鉴于这本书书名的气场可能和我的小说内容比较合拍所以冒昧拿了进来。

“而在此之前,等待幸福的过程,又何尝不比幸福本身更美妙!”这一句其实是受法国著名作家André Gide的《窄门》中的一个句子所启发:“就是这一刻,也许是最美妙的一刻,它在幸福到来之前,甚至胜过幸福本身……”

第三章注

这一章其实和程序员有关的内容有点少,主要是为了引入“老李探花”和“大李探花”两个人物,同时希望最后一部分可以给龙啸云对林诗音的迷恋创造一种 “I wish I knew how to quit you”(这句话出自《断背山》,但千万别把我用这句话的地方和这部影片联系起来)的感觉。

第一段的描写天气的时候用了“冷风如刀”四个字,这四个字其实恰是《多情剑客无情剑》的开头四个字。

倒数第二段写的“没见过女人的工科猥琐男”一句,你们懂的。

第四章注

拉尼娜现象是一种和厄尔尼诺现象相反的现象,关于它的描述可以参考这里的一篇果壳的文章《凛冬将至?今年冬天会有多冷?》。

Kinect是微软的XBOX360的一款体感周边外设,但说实话我没玩过。

李寻欢庆幸“没有在家里召开party的习惯”是因为根据林诗音的饭菜数量公式(y=2x),多个人party的后果是很严重的。这个包袱是不是也很冷……

林诗音关于川菜的这段议论抄袭自梁文道在他的博客上发表的《江湖》一文第五段。

“一肚子不合时宜”则说的是一个关于宋朝的苏轼的故事。大概是苏轼一日饭后散步,问左右侍婢自己这肚子里装的是什么。一个婢女回答是文章,苏轼不以 为然;另一个婢女说是智慧,苏轼还是不同意。而这时颇受苏轼喜爱的侍妾王朝云登场了,她说苏轼的肚腹里装的,是“一肚子不合时宜”,苏轼大笑。据说后来王 朝云不幸早逝,苏轼曾为西湖的一个亭子写过一副楹联,上联便是:“不合时宜,惟有朝云能识我”(下联是“独弹古调,每逢暮雨倍思卿”)。

当然小说在这里引入一个“一肚子不合时宜”的典故并不只是因为苏轼,还因为古龙在他的《多情剑客无情剑》里也用过“一肚子不合时宜”这个典故。古龙 原著第七十四章《蒸笼和枷锁》里,天机老人问:“你身子里除了酒,难道就没有别的?”李寻欢答:“也许还有一肚子的不合时宜。”我是希望如果配合上我这篇 小说里借林诗音之口说出的“不合时宜”之论,再去读古龙原著,会觉得李寻欢的回答别有一层味道。

李寻欢对Java吐槽的一段其实是我的浅薄之见,这里就不再大篇幅阐释了。只是关于“如果不明白这一点的话可以尝试用Java写一个Hello World,或者计算阶乘的程序,然后再对比下另外一个自称‘完全面向对象’的语言Ruby”这一句,我这里不妨给出两个分别用Java和Ruby写的计 算1000的阶乘的程序,先是Java:

然后是Ruby:

The fact speaks for itself.

“太长的代码”这个冷笑话来自Peter Seibel的Practical Common Lisp一书第三章的脚注10。

“不如却作河伯妇”出自苏轼的《吴中田妇叹》,那句所在的完整的一联是“龚黄满朝人更苦,不如却作河伯妇”。“龚”指龚遂,“黄”指黄霸,都是汉朝 的名臣,后世常以“龚黄”代指贤明守法的官员。但显然苏轼这里用的“龚黄”是反讽,说表面上看起来朝廷里全是贤臣,人民的生活却被整得越来越苦不堪言,宁 愿去跳河自杀(“河伯妇”大概是用西门豹的典故,后者大家小学应该都学过)。这里李寻欢用上这么一句,你可以联想宋朝官僚体制的混乱(有个词叫尸位素 餐),以及JVM的垃圾回收机制,也许后者可以有效地解决前者的问题。此外Linux之父Linus Torvalds曾如此炮轰C++:“C++是一种糟糕的语言。而且因为有大量不够标准的程序员在使用而使情况更糟,以至于极容易产生彻头彻尾的垃圾。”你可以把那些被反讽为“龚黄”的人,理解为Linus所说的“大量不够标准的程序员”——这也照应着下面李寻欢说的“防范程序员做傻事”。

“你曾经在评论数据结构的时候说过:实现任何美好的事物,都要付出一定的代价。”做过OI或者ACM题的同学们可能对这句话更有体会,拿时间换空 间,或者拿空间换时间,或者在某一步上退化以便在另一步上优化,等等,没有万能的数据结构,只有花费某些其他代价、从而针对这个问题更优的数据结构。