在云时代,由于信息的共享、云计算的发展,让渺小的个人完成史诗般宏大的工程成为可能。当然,这种机遇只属于那些被商业社会所放逐的独孤求道的天才。
屠龙之技象征那些早已失传的编程思想,然而对于商业编程与web编程,这些思想一文不值。远古的编程大师高深莫测,新一代的程序员远不能揣其所思,只能睹其外观。只有那些在早已湮没的古老代码里探赜索隐的屠龙者的传人,才能领悟宇宙中最精妙玄奥的语言。
一
雨水从宽阔的大理石台阶上淌下来,淹没了年轻人制作考究的山羊皮皮鞋。他的身形颀长瘦削,撑一把漆黑的木柄雨伞,侧脸仰望着灰蒙蒙的天空。
在他推开图书馆那扇锈涩的厚重大门时,一只鸽子飞了出来。他钝重的步子在高耸狭窄的空间里激荡回响。这是一个由教堂改建的街区图书馆,在这个时代,聆听圣音的人已经不多了。
年轻人凝住了他的脚步,目光蓦地垂落到教堂内远远的一角。冬日灰冷的阳光从高窗上的彩色玻璃中透下,照着一个佝偻的背影。肥胖的鸽子随意地停在他的肩上、乱糟糟的白头上、绿漆剥落的长椅上。
他缓缓走近这个渺小的身影,慎重的步子甚至没有惊动啄食的鸽子。“这就是了。”他听到怦怦直跳的心脏在说。
“先生。”年轻人深深地躬下身去。
老人头也不抬,手指捏搓着黄褐色的鸟粮,他的长指甲又黑又亮。
“周末不开放。”冰冷喑哑的声音像是来自阴曹地府。
“我不是来借阅图书,我……”
“走吧。”
年轻人的嘴唇微微颤动,他本来就不是善言之人。但他没有离开,而是安静地垂拱而立。
一个时辰或是更久,鸽子已经吃饱了,它们快乐地盘旋追逐起来。羽毛、爪子上的鸟粮、鸟屎像雨沫那样飘荡,落到年轻人短而硬的头发上。
“来为何事?”
“学习屠龙之技。”
教堂再次陷入沉默,像是时间的凝固。
“我来到这里,就已经证明:我将是您最出色的弟子。因为对于外面的人来说,您的名字不过是虚无缥缈的传说,而于我,您就像是那样真实,唯一!只有我能找到您,也只有我才是您合格的继承人!”年轻人的声音急促、干净,显然,他等待这一天已经很久。
“继承?”老人鸷冷的目光刺得他一噤,但他的勇气没有退缩。
“是的,先生。我的父亲就是一个程序员,一个平庸,甚至拙劣的ASP程序员。他一辈子都在兢兢业业地写脚本,从START到END,他原地打转,徘徊不前,就像一个循环。但他活得很开心,他从未觉得自己卑微。有一天,一个名叫ETT的家伙嘲笑他活得窝囊,父亲只是宽容地一笑;不久,一个叫Java的毛头小伙也在他面前耀武扬威,父亲陷入困惑,但从未动摇过他信奉的冯·诺依曼哲学。直到有一天,父亲遇到了乳臭未干的DotNet,父亲的精神世界彻底崩溃。可是,这一天他已经四十二岁了,远远超出一个程序员的职业生命。父亲死了,过劳死,没有医保,没有补偿,自始至终,他只是一个脚本的奴隶,我瞧不起他!我发誓,我绝不能像父亲那样活着,我要成为真正伟大的程序员,像约翰·卡马克、蒂姆·伯纳斯·李那样名垂青史!这便是我对父亲的继承,先生。”
“数学有用吗?”老人突发其问。
年轻人一愣:“我学过哥德尔的形式逻辑与迪杰斯特拉算法理论……”
“数学有用吗?”老人像没听到似的重复道。
年轻人的脸红了:“没用。”他犹然记得上个世纪一位编程大师说过,对于商业编程和web编程,数学屁用没有。
老人冷笑一声,吃力地直起身说:“跟我来。”
他站起来身高还未及年轻人的腋下,年轻人被深深地触动了,他潮湿的目光垂落到老人秃光的头顶,鼻子就像吸入了发霉的灰尘那样涩涩的。他想起了父亲。
他们从密集的长椅间穿过,走过一条比地牢还阴冷的封闭长廊,攀上一个颤颤巍巍的木楼梯,木梯嘎吱作响,灰尘簌簌扑落,年轻人努力弓着腰,头还是被低矮的楼板磕了几下。他们来到一间狭窄逼仄的阁楼。
阁楼又小又破,风和雨水不住地从木板墙透进来,墙纸已经脱落了大半。屋内堆满了机箱、硬盘,绿荧荧的指示灯在黑暗中闪烁,就像是守护着宝藏的龙的瞳孔。空气中传来电流的嗡鸣,还有哔哔哔的脉冲信号声。老人在破烂堆里翻拣着,身子显得愈加佝偻。良久,他吃力地抱起一台机箱,年轻人连忙伸出手,帮助他把机箱放在高处。
“认识吗?”老人的目光变得郑重。
“呃……”他踌躇着,“是?是苹果?是苹果!”他犹然记得自己15岁时是怎样教训那些十八九岁的街头小子的:“我玩苹果机的时候你他妈还在玩泥巴!你以为苹果机是一口袋钢镚玩一上午的那种赌博机吗?小子!”那种感觉,酷毙了。
老人鸷冷的表情柔和下来,声音却依旧严厉:“还愣着干什么?把它运转起来!”
他小心翼翼地抱住它,它是如此沉重,外壳就像铅板一样厚重,而里面的主板,俨然是未完工的硅钢工地,焊锡像水泥疙瘩那样粗大,与口袋里的苹果PDA不可同日而语。他不禁有些失望。他想起一个古老的笑话,一个真正的程序员会用CPU散发的热量来爆米花。当然,这是上世纪的事了,在云时代,PC更像是一个终端,如果不是录入与显示的需要,它可以比指甲盖更小。
他没有吃到爆米花,他吃到了爆栗。电源指示灯压根就没亮过。他有点沮丧,但又安慰自己说:我只是个程序员,我不必懂得机器。
老人看透了他的心思,犀利的目光直视他漆黑的眸子:“这就是所谓最伟大的程序员吗?”
“我不必懂机器!”他梗着脖子,“我甚至不必懂机器语言,我不喜欢粗陋生硬的二进制。”
“跪下!”老人狠狠地踢了他腿关节窝一脚,他俯倒在地,膝盖很痛,但他的心在欢呼,血液在沸腾,他热泪盈眶!他明白,在这一刻,他真正成为了上善大师的弟子,屠龙者的传人!
师父黯淡的瞳孔里有幽幽的光在闪烁。他疯狂地在废物堆里翻动着,屋子里充满沉重的喘息,就像是龙的呼吸,浑浊黏滑,直到一台全身糊满机油的漆黑如墨的机器浮现在眼前。它是齿轮结构的,蜗杆、皮带传动的,甚至,手柄的。
“认识吗?”师父疲惫地坐在地上。
他的目光陡然变得凝重,迟疑起来。他联想到了什么,但他没有脱口而出那个尊敬的名字,就像他无法说服自己,强大无比的“云”居然始源于如此丑陋的机械,一台中世纪的提花机都比它复杂。
它是图灵机,一个由无限延伸的纸带控制的灵魂。这鸿蒙之初的原始机器智慧,仅用读写和涂抹就解决了图灵停机、判定性、哥德尔、丘奇的全部问题!
“世界的本质是是与非,不是吗?”师父说。
二
Max(1,100);
粉笔头在墙上艰难地移动,发出刺耳的摩擦音调。水泥墙很光滑,涩硬的粉笔头很难在上面留下划痕,当粉笔落至最后一笔时,它断了,在水泥墙上留下一个粉点,就像是指针运算符。
“一。”他简洁的回答道。
“好吧,去证明你自己。”师父背过身去,一小截粉笔头在空中翻转,他敏捷地伸手握住了它。粉笔太短小了,就像是一段寒伧的代码。他紧握着它,却感到浑身充满力量。
年轻人穿着运动套头衫,脏兮兮的牛仔裤,把脚放在豪华办公桌上,大脚趾挂着一只人字拖,另一只在手里,他熟练地旋转着它,乜斜着对面西装笔挺的中年男子。
“这,”那人迟疑一下,“请问先生,有简历吗?”
他笑笑,指上的人字拖飞快地旋转着。
“没有简历的话,能简短地介绍一下你所精通的领域吗?”那人依旧很客气地微笑着,把手掌搭成金字形,但他没有等到回音。优雅的金字形解体了,他稍蹙眉头,递过来一份精致的文件:“这是上一位应聘者的简历,你可以参考一下。鄙公司对技术水平要求较高,一般来说……”
年轻人把简历揉成一团,直接扔到了对方的金丝眼镜上。是的,当时就是这样的,许多年之后,人们依旧津津乐道于这个场景。
然后,他心满意足地听到一个声音说:“好吧,请跟我来。”
“蠢猪!二十个人还拿不下这个项目?你们都是吃白饭的吗?”一个脑满肠肥的项目主管正口沫横飞地训斥着手下,尽管这群小伙子中不乏一流大学的高材生,但他们也不得不忍气吞声地埋头苦干。
年轻人旁若无人地路过主管,他的拖鞋在工作间发出很响亮的趿拉声。然后一屁股坐在了主管的座椅上。
“你干什么?”主管露出不可思议的表情,他瞟见门口站着的人事部经理,正满脸通红地冲自己点点头。
主管宽大的桌面上堆满了设计文档,这是一个很冗繁的工程,二十个人在一个月内完不成是情有可原的,人事部于是火速招人。可是,这群混蛋难道不记得古老的教诲了吗?给一个延期的项目增加人手,只会让它延期得更久。年轻人轻蔑地一笑,手一扬,项目设计文档像鸽子一般满天飞舞,悠悠地飘出宽大的窗户。他可以从窗户俯瞰这个科技之城的全貌,还有洁白的象牙海岸,心旷神怡。主管的位置是个好位置,他很享受地陷入主管的座椅,轻轻地拉出键盘,一只修长的手覆在上面,另一只手无聊地搭着,可惜他不抽烟,否则夹一根烟是个不错的选择。他慵懒地闭上眼睛,似乎听到了电源接通时“滴”地一声。
主管铁青着脸保持着沉默,他喘着粗气,像一头热毛骡子那样大汗淋漓。满屋子的人都停止了工作,围在主管的身后,没有人发出声音。
十个小时后,城市滑入寂静的午夜,101层的高空可以享受天堂般的静谧,期间没有人离开,连上厕所的人也没有,他们都在等待着DEBUG的那一刻,欢呼或是咒骂。可惜他们没有等到,调试是他们凡夫俗子的事。一个真正伟大的程序员,从不写流程图,因为他对一切成竹在胸;从不写文档,因为没有人能读懂他的程序;更不会测试他的程序,因为他创造的程序都有一个完美的自我,平静而优雅。
年轻人刷地站立起来,他的脚已经有点酸麻了,他这才意识到自己已经保持一个坐姿十个小时。他喜欢人字拖,因为它教会他走路。他从财务那领了厚厚一摞钱,作为十个小时的报酬。在他转身的时候,他听到经理对主管愤怒的咆哮。
三
“一个真正的程序员,他的编程自裸机始尔!”
“一个真正的程序员,不存在系统程序员和高级程序员之说,他就是个纯粹的程序员,从机器语言到汇编器到编译器到无数高级应用程序,他无所不通。但,你必须从最开始学起……”
师父的手指蜷曲萎缩,指甲缝里塞满了污垢,可当他把双手平放在键盘之上时,又像是钢琴师那样优雅。
“键盘的按键是有限的,代码却是无限的,以有限为无限,这就是编程之道。编程是有法的,思想却是无法的,以无法为有法,这就是编程之道。”师父说。
师父的旧式键盘按键有些涩硬,声音听起来就像是机械打字机的嗒嗒声。这美妙的声音撩拨着他的耳洞茸毛,像金币的摩擦音一般动人。他如痴如醉地伫立着,能够感觉到调制过的数据穿过铜线时持续不断地嗡鸣,他能触摸到读盘时沙沙的声音,就像是指尖抹过苹果的磨砂钢壳。
师父入定般凝固的背影变得模糊,与数据流、宇宙背景辐射的混沌融为一体。
四
“又是他。”漂亮的服务小姐悄悄地对同事说。
这名面色苍白的男子来到这家以死亡射击游戏闻名的竞技俱乐部,每次都直奔终极射击游戏机:Quake10,戴上虚拟现实头盔,选择最高等级的“恐怖伊万”,然后在游戏中被击毙,他的鼻孔、眼睛、耳朵都会渗出真实的血来。游戏固然是虚拟的,大脑却被头盔驳接口输入的电子信号欺骗了,它以为他死了。虚拟现实的技术对感官体验的模拟达到了巨细无遗的程度,那种被一颗直径为0.5英寸高速旋转的子弹爆头的滋味,大概只有那些白粉仔敢尝试了,可即便是生活在幻觉之中的他们,对这玩意也没有敢尝二次的。
年轻玩家面无表情地端详着头盔,服务小姐正在为他围白围脖,以免他“死亡”后七窍的流血弄脏游戏躺椅。
“其实,你不必老是挑恐怖伊万。”服务小姐善意地提醒他。
恐怖伊万是智能程序,在DOOM时代,人类玩家可以轻易地击败最疯狂的电脑,而今天,人类玩家对电脑Boss惟恐避之不及。恐怖伊万的运算速度为每秒300万亿次,更何况人类的生物神经存在着反应迟滞,即便是最高超的射击手,也会有心到眼到而手不至的问题。但电脑不存在此类问题。
年轻玩家目光一凛,死鱼眼射出的寒光让好心的服务小姐下意识地后撤半步。疯子,这绝对是疯子!她对自己说。一个正常人若在游戏中被击毙上百次,即使死亡的痛苦没有压垮他的身体,那种极致的恐惧也足以令他崩溃发狂了。
“没有人能击败伊万,傻蛋!”一群白粉仔围绕了上来。他们中不乏Quake10的顶尖高手,但敢于挑战伊万的人还没出生呢。
年轻人眼皮都没抬一下,径直选择“绝望死地”环境参数,在为伊万选择武器时,他竟然点击杀伤指数10!
“酷毙了。”一个光头赞赏地拍拍玩家的躺椅,然后回头用嘴型对同伴说,这傻B!同伴们快乐地笑了起来。
游戏开始了,年轻玩家把脚放在操作台上,他是光脚!不,大脚趾上还挂着一只人字拖。光头的目光直了,他想起一个不甚久远的传说。当然,那只是传说而已。
没有人能透过头盔观察到玩家的表情,但围观者能从三维即景投影台上读懂他的心情。他很紧张,是的,因为画面在微微颤抖,就像蒸汽后的图景。许多人在与人类玩家对战时常常能做到心平气和,但真正到了恐怖伊万面前,他们的枪口都抖得跟斯皮尔伯格的战地镜头似的。
年轻玩家静静地盯着画面。
迦南半岛的热带植物遮天蔽日,四周奇热无比,蚊虫无孔不入。尽管他“穿”了厚厚的野战服,依旧被叮得红包累累。看客们从玩家的脖子上、手臂上看到一个一个红肿浮出来。虽然蚊虫只生活在游戏环境中,但大脑却误以为皮肤真的受了叮咬,调动人体免疫系统对抗蚊子注入的“甲酸”,从而产生过敏反应。
看客们相视而笑,这傻蛋!玩个游戏还这么当真,选择“绝望死地”的对战环境?!不过,玩家被叮得遍体痒痛还能纹丝不动,他们也不禁暗暗佩服。
“你看到什么?”师父轻轻抚摸着鸽子的羽毛。
“鸽子。”
“蠢材!”师父硬如老树疙瘩的指节敲在他脑袋上。
“你看到什么?”1994年,一位退役军官也这样问一个身穿编织毛衣的小伙子。
退役军官曾经是一名高超的空军飞行员,他发现无论与眼前这名貌不惊人的年轻人进行多少局飞行战斗游戏,自己都将惨败,这是实战中从未有过的。
“我看到,电脑就像一个傻瓜。它总是按我猜想的那样进行计算,我总能判断出它的进攻方式。如此而已。”小伙子漫不经心地嚼着口香糖,“我可以随便搞出比这更好的飞行战斗游戏。”
飞行员的眼睛瞪大了,他意识到一名未来的大宗师就站在眼前。于是他说:“别玩了,小子,我们去干一番大事业吧!”
于是,一款飞行战斗游戏的史诗之作诞生了。席德·梅尔,那个爱穿编织毛衣的小伙子,在成为上世纪最伟大的程序编织者之前,他首先学会的是阅读游戏。
“我看到什么?”年轻玩家问自己。
他的气息轻轻拂动了鼻前一片树叶,他盯着这片散发着绿汁嫩香的完美树叶,直到瞳孔燥热欲裂。他看到叶片的锯齿边缘反射着金色阳光,渐渐模糊退隐,化为优美的寇赫岛海岸线,在更精微处,自相似的谢尔宾斯基三角形无从遁形……那些逼真的纤毫毕现的三维图像顿时像被加特林机枪击中的血肉之躯那样,化为满天弥漫的血雾,继而转化为无限次迭代方程所控制的数据流。
传说恐怖伊万在现身前,你首先能感觉到的是地面的颤抖。身高九英尺体重900镑的庞大身躯,可以轻易地举起火神六管机枪。火神本是为战斗机配备的重型机枪,每秒5000发的子弹流能把一台防弹林肯轰成钢灰。他的左臂装载一管磁力钨弹枪,可产生高达两千万安培的电流,电流形成的磁场在200纳秒的时间内爆发出比地球气压强十万倍的压力,将子弹加速到20千米每秒。如果说伊万的右臂象征着毁灭与狂暴,左臂无疑是速度与精确的代名词。正因为如此,伊万现身后的图景只能通过回放对战录像来“回味”。从来没有人能在生前目睹伊万真容,从未!
画面在微微颤抖,看起来就像是老式胶片电影的齿轮颤动。看客脑门上都渗出黄豆大的汗滴,一个十六七岁的黄毛男孩甚至捂住了耳朵。
如果敌人从树叶缝隙里露出十个像素大的迷彩服,你会看到什么?事实上,你什么也看不到。这正是迷彩服的意义。然而,对于程序员来说,树叶与游戏主角的差别可就大了。
电光火石间,英格纳姆Mac10的扳机被扣动了,他的肩部因反冲力剧烈地后震,看客们也神经质地哆嗦一下。然后一声巨大的钝响震得三维投影平台几乎散架,火花四射,当然那只是视觉模拟。铺天盖地的尘土散去后,画面回复了夏日的宁静,除了蚊虫的嘁嘁鸣叫,还有黄毛小子的吸鼻声。
向约翰·卡马克致敬!年轻人摘下银光闪闪的头盔,心中充满了敬仰之情。大师在上个世纪创造了神话般的三维引擎杰作,直到今天仍然是不朽的传奇。虽然今天的游戏画面在精细度上要更胜一筹,工作原理却始终如一:用即时引擎来表现主体,用离线引擎来表现背景。普通人看到的是即时引擎的流畅灵活,离线引擎的华美精细。程序员看到的却是多边形所表现的涂满油彩的皮肤和NuRBS曲线表现的树叶轮廓,两者的差别有多少?一光年那么大。年轻人的嘴角挤出细微的弧纹,他解下洁白的围脖,递给服务小姐,就像久困樊篱的蛟龙挣脱缠身链锁那样轻松,浑身每一块肌肉都膨胀充满力量。他眯着细长的眼睛朝玻璃旋转门透过的五彩阳光望去,拖鞋发出欢快的趿拉声。
“伊万呢?伊万是死了吗?”黄毛小子怯怯地搡着他的老大,不解地问。
五
师父步履迟缓地走到窗前,吃力地拉开厚厚的垂地窗帘,一堵巨大无朋的屏幕展露眼前,不,那不是屏幕,那是城市的夜空,璀璨灯光充盈着摩天大楼,让耸入云霄的玻璃幕墙变得通体透明,就像团簇生长的水晶。
“看到它了吗?”师父指着一幢庞然大物,那是IEEE通信大楼,建筑面积超过三个五角大楼,智慧、财富、权力的象征。在它巨大的阴影里,这幢图书馆就像是儿童积木。
“规则110。”师父说。
走在宽阔大街上的人们突然顿住了他们的脚步,所有的人都转向同一个方向,交头接耳。
IEEE通信大楼的灯光熄灭了,这是不可思议的,就算是发生地震,三套备用发电机组也可以保证它灯火通明。因为这儿是全世界最有名的计算机、网络公司的总部所在地,它若停电全世界的网络都会瘫痪。
它马上又亮了,但仅仅是几个窗户亮着,它们分布在对角线位置。两处亮斑一个是三角形,一个是圆形。它们周围的窗户也一明一灭起来,不久,它们复制出许多三角形、圆形。它们的地盘交错着,变幻着,就像在厮杀。
“这是工程师们的行为艺术吧。”有大学生很有经验地向周围的人说。这把戏他在大二时就玩过了,当时他们编了一个小小的程序在一幢女生楼的窗户上玩起了俄罗斯方块。
但他很快发现这“行为艺术”的复杂性远远超出了俄罗斯方块。事实上窗户格子的明灭是有规律的,当一行相邻三个格子全黑、全白或左侧一个格子为黑时,该格子为白。但这种简单的规则宏观上又表现出类似于生命的性质:三角形、圆形都可自我复制,它们能侵入对方的阵地,扩大地盘。
“他们就像能思考。”一个心思细腻的女人说。虽然她完全不懂程序,但她的洞察力是惊人的。建立于简单规则之上的矩阵生命,的确能表现出生命的自组织现象,只是,没人能发现,它们甚至还能进化。
圆形族疯狂的复制能力让它的地盘急速扩张,三角族个体开始集拢收缩,似乎有意避其锋芒。就在人们以为圆形生命将吞并最后一块三角形的阵地时,三角族突然对一小块孤立的圆形族发动攻击,人海优势让它的攻击立竿见影。然后它又切断另一块圆形阵地与大部的联系,再次吞没了它。三角族的复制效率低下,但它攻击迅猛的特点展现得淋漓尽致。圆形族虽然占据了大量的资源,即亮着的窗户格子,但它的资源只不过是为三角族做嫁衣罢了。三角族侵吞了它的资源,与资源占有量成正比的攻击显得愈加犀利。一个小时后,三角族吞没了最后一个圆形生命,最终让光明澎满了IEEE通信大楼。
驻足观看的人群响起热烈的欢呼声。虽然这只是枯燥的黑白格子游戏,虽然图形背后的程序控制并非人人都能窥透,但那勾人心弦的战斗却感染了每一个看客。
师父安详地躺了下去,他的手指仍旧呈蜷曲状,可以精确地放在九个键上。
“我已经不能教你了。你要记住,只有那些清空了陈腐的律条、世俗的财富、甚至缱绻的情思的人,才能成为真正的屠龙战士。你去吧……”
师父在他的怀里平和地闭上眼睛,头像苹果机一般沉重。
他跪在地上,滚烫的泪水在月光的清辉里颤动,一种前所未有的巨大空寂笼罩了他。
六
Caltech编程大赛是地球上最悠久的程序员大赛。在上个世纪,程序大师的评价标准是写出最简洁优美的程序,既没有不必要的循环,又没有不被引用的变量;既不缺少结构化,又不至于僵硬呆板。但是进入云时代以来,由于Quake10对战平台的面世,程序大赛与暴力美学完美地结合在一起,程序不再是枯燥的代码,而是化身为虚拟角斗士,允许自我复制制造分身,允许侵入对手“身体”,寄生、控制甚至分解对手,但不能有脱离物理定律的力量、弹跳、速度。程序员控制虚拟角斗士进行搏杀,经历惨烈的淘汰赛后,获胜者将向上一届冠军发起挑战。然而,今年的Caltech编程大赛乏善可陈,上一届冠军“流火”几乎是在一瞬间被挑战者“豪魃”秒杀的,比赛的组织者一度以为是机器故障。
人们很快发现这一届乏味的比赛终将被载入史册,它宣告一个王朝的解体与一个新时代的诞生,曾经十连霸的“流火”已经永远地沉沦了。它惨败的录像被人们恶趣味地一遍遍播放回味;它的残骸被挂在Quake10对战平台的醒目位置,就像海岸边被枭首示众的海盗;它的代码被挂在网上供人任意下载,无数渴望成为新的王者的程序天才都用它作陪练,毁灭、撕碎、操控、愚弄它以收获复仇的快感。也有很多投机取巧的程序员对它进行二次开发,以期得到更具杀伤力的毁灭者,然而他们很失望,因为拆开流火的封装,他们绝望地发现,那根本不是他们所能理解的程序语言。
是传说中的屠龙战士融创造了流火,而由于某种原因,融被废了,没有人知道他的去处,只有那传奇的人字拖,还残存于骨灰级元老们影影绰绰的记忆里,新一代的程序高手对这个名字根本是闻所未闻。
代码世界进入了战国时代,新的霸主“豪魃”很快被病毒式攻击角斗士“龙骧”所击败,而“龙骧”的王位第二年又被神出鬼没的“光晕”取代。前人的失败与新人的成功,激励着无数雄心勃勃的年轻人进行艰苦卓绝的训练,他们渴望着出人头地的那一天。Quake10对战平台每天都有数以万计的角斗士在进行肉搏,通过全球直播,地球上每一个街区的犄角旮旯都能传来惊心动魄的画面,并时而爆发出欢呼或是咋舌声。角斗是与痛感神经相连的,虚拟程序所承受的攻击都将以真实的感受传递到参战者的大脑。这是云时代的残酷游戏,许多心理脆弱的年轻程序员因那种天旋地转的极端痛苦而永久地告别竞技场,有的发誓再不作程序员,有的甚至直接在终端躺椅上停止了呼吸。人类的血液泵是有压力极限的,而代码的运算即便存在极限,那也不是人类所能望其项背的。所以,获胜的角斗士不但有超群的代码智慧,也拥有强大的体魄。
黑暗中的观察者远远地注意到一个可疑的身影:一个白衣剑客,他没有强大的攻击力,没有寄生、分裂、伪装、隐身等诡诈的攻击、防守手段,也不能自我复制,他却能在混战中全身而退,甚至还能保持代码的完整性。他只是个名不见经传的角斗士,但此战后他的大名必将震古烁今。
一阵令人目眩神迷的刀光剑影后,嚣叫着的竞技场陷入地狱般的寂静。在白衣少年飘飘的衣袂后,横尸一野,血流成河。庞大无朋的“蒸汽人”首身两截,在地面上发出两声颓然巨响。白衣少年用剑尖在青石板上留下一行字:我想你会梦到一只骆驼。
从此,血雨腥风的代码江湖中没人敢遗漏这个名字:骆驼。全球各个角落的直播电视见证了这一时刻,只是没有人联想到那本早已失传的上古秘籍:《骆驼之书》。这个世纪的年轻人已经不太关心远古的编程大师是怎样淬炼他们的宝刀了。
黑暗中的观察者静静地欣赏着骆驼的背影,他沉静已久的内心竟也漾起一丝涟漪。如果说刚才精彩的竞技让自己心驰神往,而此刻,那个踽踽独行的背影只会令自己感动。是的,作为一门濒临灭绝的上古语言的惟一传人,那种俯瞰众生不可一世的狂傲,那种寥无知音的落寞,那种被世俗所仇恨的痛楚又有何人知?他禁不住想要喊住那个背影,却又无奈地发现自己隐藏在后台程序里,一个偷窥者,而非一个战士。他苦笑。
七
就像浴火重生的凤凰战士,历经113场血腥战斗后,骆驼已经变得空前强大。但是,基于遗传算法的同一原理,他的对手也被血污浸淋得更加凶暴。如果说在第一场让他声名大振的战斗中,有一定的机会主义成分在内,那么在后面的战斗中,他不得不面对自己成为四面八方仇恨的焦点这一可怕事实。他的成功在于他旁门左道的武器:一门冷僻的古老语言。而现在,他的特点暴露在无数越挫越勇的挑战者面前,沦为了致命的弱点。
在“豪魃Ⅱ”、“吉斯霍华德”、“蝎针”的轮番攻击下,他遍体鳞伤奄奄一息,他强大的自我修复能力在永不停歇的密集攻击下无济于事。蝎针钻入他的左臂,在他的筋骨里不断复制,释放分身,就在蝎针快要侵入他的颈部时,他果断地挥剑斩断左臂,这一自残式保护几乎伤及核心代码,半个肩膀都已经削掉了,情状惨不忍睹。战斗进行两小时后,即便是一场普通的街霸游戏,也足以让玩家精疲力竭了,但骆驼展示了他名副其实的沙漠耐力,仍在不停地自我修补。亿万观众似乎从血光滔天的画面中看到了机器终端正嗤嗤地喷着电火花。战斗结束是迟早的事了,早投降吧,何苦受那最后一击后,大脑短暂充血休克的痛苦呢?众人皆为他捏一把汗。
“豪魃Ⅱ”、“吉斯霍华德”、“蝎针”等众高手围成一圈,稍作停滞,在同一时刻发动攻击!
“啊!”观众们的咋舌声像一只青蛙从喉咙里跃出。
谁也没看清发生了什么,凌乱变幻的画面似乎已经超出显卡处理的帧频极限。
“发生了什么?”伴随着一声尖厉的惨叫,“豪魃Ⅱ”被一道沛莫能御的力道击得滚翻,他是幸运的,因为他还能叫出声来,他的战友都已经震得魂飞魄散,喘气的时间都没有。
骆驼洁白的身影很快消失得无影无踪。显然,身负重伤的骆驼绝不可能爆发出如此惊人的力量。
工作人员连忙取下豪魃的头盔,只见他两眼翻白,眼神直勾勾地望向天空。“他是融!他是融!”豪魃直挺挺地从躺椅上跳起,然后哇地一声抱头痛哭起来。
从此,代码世界再无豪魃的身影,有人说他退隐当了一名警察。
八
按太阳日算,他已经二十九岁了,在普通人当中,他依旧年轻。但在新陈代谢残酷的代码世界,二十九岁已经是老不堪用的风烛残年。融在十七岁便已扬名立万,他早早地步入程序员的巅峰舞台,从这层意义上,他堪称祖师爷级的人物。
祖师爷?当然,这三个字从一些毛头小子嘴里喷出来可就难觅几份尊敬的意味了。
“你信不信融在许多开源程序中都种下了后门程序?基本上没人能发现,除了我!”一个留着俄罗斯新兵头的高个子说。
“你就吹吧,五年前IEEE组织了一次全球拣虫大赛,早已把融的毒虫消灭得一干二净了。”一个戴眼镜的亚洲人回答他。
“傻B,你懂什么?融的后门拉链这么好找他还叫融吗?这混蛋把后门程序埋在编译器里,他娘的这年头还有几个人懂编译器?”
“融在他那个时代还算个人物。”另一个面相成熟一点的用饱经世故的语调说,“其实不是一个时代的人就不要相提并论,融现在要站在我面前,你们信不信我在五秒钟内就叫他趴下?”
“哈哈,威鸡老大,你以为你是骆驼啊!”
一个瘦削的身影从小伙子们得意的笑声中路过,他的大衣已经很陈旧了,毛料袖口与肩膀都可以看出磨光的痕迹。阴冷的天空突然下起了急密的雨来,凶狠的雨滴在柏油路面上摔得粉碎。他的步子很迟钝,脚步声在雨水洼里特别的响亮。
“嗨!快看,这么冷的天气还穿拖鞋。”高个子叫起来。
威鸡的表情突然变得凝重:“融好像也喜欢穿拖鞋。”
一阵心事不一的沉默后,一个稚嫩的声音说:“不会真的是吧?”
“傻啊。”高个子不屑地朝天吐了口唾沫,“穿拖鞋就是高手,那光脚乞丐就是神啦!”
经过激烈无聊的抬杠后,小伙子们哄笑着尾随那个瘦削的背影而去。那种早已遁迹的传奇对他们的吸引力是无尽的。
穿过条条狭窄破旧的巷子,小伙子们皱着眉头,不时爆出粗口。要不被外墙上突然凸出的旧空调的油污蹭脏了衣服,要不被低矮窗户上挂着的女人内衣碰到了头,破烂不堪的路面就像危险的地雷阵,冷不防从地板砖后溅出污泥。在一栋又黑又矮的砖房下,他们听到一个女人的咆哮声,然后便是噼里啪啦的摔东西声。三楼的窗户开着,一个胖女人不断地从三楼摔出东西,嘴里骂骂不休:“拖!拖!拖!老娘叫你拖!几个月的房租没交了?滚!穷光蛋。”
哐地一声巨响,一个机箱扔了下来,金属零件散落一地,堆积在那灰大衣的脚下。他垂头静默着,袖口露出的苍白手指在微微颤抖,黑布雨伞在水洼里打转。雨水覆盖了他的脸,淌进他高高的衣领内。
远远立着的小伙子们相视一笑,一哄而散。
“好可怜的屠龙战士哦。”
“他要是融我就是上善大师啦!”……
在他弯下腰去抚摸变形的机箱时,雨停了。他迷茫地一抬头,看到一张蔚蓝的八角形天空,天空里有一张精致的女人的脸。她的鼻尖小巧微翘,从仰望的角度看去,更显调皮不羁。她的脸红通通的,显然在寒风中伫立已久。
“你是?”
她露出失望的表情:“我是骆驼呀。”
“你怎么是……”他咽下了下半句话,不好意思地笑笑。脸上浮出那种不可思议却又容易理解的羞赧。在程序员的世界,遇见异性就像在Bata程序中发现彩蛋一样稀奇,更何况是这样一位旷世奇才。
她上上下下地打量这幢房子,目光垂落到他的肩上,鼻子涩涩的:这就是传奇的屠龙战士的归处吗?
融解开大衣扣子,把湿漉漉的机箱抱进怀里。一个扎着羊角辫的小女孩从屋子里冲出来,抱住他的大腿,带着哭腔喊到:“叔叔,别走啊,你留下来教凉凉数学题啊!”
融用一只手抱着机箱,另一只手抱起五岁大的凉凉,久久回望这低矮的屋檐,似在留恋些什么。
骆驼冲进屋子,旋即又折回来,得意地说:“你可以继续住这啦!”
九
说是三楼阁楼,其实就是一个楼梯间。门外面便是砖头遍地的屋顶,水泥柱头上还裸露着钢筋,红砖围栏上长满了野草,屋子里不到十平米,主人高大的身子一直立,便会顶着白炽灯。他一坐下,硬木板床便发出嘎吱嘎吱的抗议。来客担心地去瞧床脚,她愣住了,压根就没有床脚,一头是红砖累就的,另一头搁在一个废弃的箱子上。主人不自在地搓着手,好像他才是这里的生客,他手忙脚乱地清空一张方桌说:“坐吧。”
她的眼圈红了,眼睛一眨不眨地望着他,目光里写满了为什么。
“其实这地方还是不错的,屋顶可以观赏月亮,晾衣服也很方便,还有这。”他不知从哪儿扯出一根电缆,得意地说:“有它呢,我就可以登上全球任何一台服务器,收费的,房东算在电话费里。这儿甚至还有热点,免费的,你不信?”
她静静地望着他,望着这个曾经像十亿光年那么遥远此刻却又如此贴近的人,她曾经在广为流传的经典代码里,在他的对战录像中无数次揣摩他的样子、他的思想、甚至他的生活。她一闭上眼睛就能浮出他的样子。然而,当空间的距离消失后,那曾经鲜明生动的影像,陡然变得那般遥远、陌生,除了地板上那双磨损严重的人字拖。她怔怔地望着它,他不好意思地把鞋往床底踢了踢,说:“你是怎么跟房东说的?”
“我是用口袋跟她说的啊。”她拍拍外衣两个卡通熊口袋大声说,“你欠我一个人情!怎么还?”
“嗯。”他有些窘迫地翻开抽屉,从里面找出几个镍币。
傻瓜。其实是我欠你的。她在心里幽幽地说。但她仍旧用很严厉的目光催促着他,她喜欢看他发窘的样子。
“一,二,三……九个,可以吃一顿好的啦。”他摊开手掌里闪闪发光的硬币。
十
他们挑临窗一张桌子坐了下来,对着被油烟熏得面目模糊的菜价表,犹豫半天,才在服务员的催促下要了一个五元的蒸菜和一个四元的木桶饭。
蒸菜很快就端上来了,红艳艳的油泼辣子铺在滑嫩的鲢鱼脯上,她得意地眨眨眼,操起筷子狼吞虎咽起来。
她听到他肚子里的咕噜声,听起来就像是PDA电池没电的提示音。她哈哈大笑起来,笑得辣子呛进了喉咙,她有点难受又有点快乐地咳嗽起来。
“原来木桶饭采用了缓存技术。”他自我解嘲地说。
“还是咱的蒸菜好呀,采用了apache+php,虽然应付高并发有点吃力,但在访问量较小时速度还是蛮快的。”
“我的木桶饭采用了squid作反向代理,虽然前期有点慢,但一旦缓存好了,来多少人都不怕。”
“很不幸,你们做了触发缓存的那一批。”她伸出火辣辣的舌头做了个鬼脸。
“老板的缓存机制有问题,应当把触发缓存改为定时缓存,以改善食客的体验。”
端菜的招待一个个路过满脸期待的他,却没有一个停在他桌前。
“好像是丢包了。”他沮丧地说。
她咯咯地笑起来,树起自己的空碗,伸长舌头舔了圈汤汁,夸张地吐着热气。