第28章 雷电
“李牧先生,终于见到您了。您的春芽,是我这辈子见过的最优雅的代码。不是之一,是唯一。”李牧握住他的手。老人的手很有力,掌心有薄茧,是常年敲键盘磨出来的。“穆勒教授,谢谢您。但代码不是用来‘看’的,是用来‘跑’的。我带您去实验室,跑给您看。”
他们上了出租车,穆勒坐在后座,李牧坐在副驾驶。穆勒看着窗外黄色的天空,黄色的街道,黄色的建筑,黄色的行人,没有惊讶,没有好奇,只是安静地看着,像一个在欣赏一幅并不好看但很有意思的画的人。
“北京的沙尘暴,很有名。我在斯坦福的时候就听说过。今天亲眼见到了,果然名不虚传。像走进了一个旧时代的照片里,一切都是黄的,连时间都变慢了。”
李牧笑了。“您运气好。今天的沙尘暴,是今年最大的一次,也是过去十年最大的一次。”
“那我运气太好了。”穆勒也笑了,笑声很爽朗,像一个发现了意外之喜的孩子。
出租车穿过黄色的北京,穿过灰色的楼群,穿过黑色的立交桥,穿过绿色的隔离带——是的,绿色还在,只是蒙了一层薄薄的黄沙。到了中关村,李牧带穆勒上了二楼。陆鸣在工位上,正在调试一段代码,没有注意到有人进来。穆勒走到他身后,安静地站着,看着他屏幕上的代码,看了足足几分钟。
“你是陆鸣?春芽的适配模块,是你写的?”陆鸣吓了一跳,转过头,看到一个外国老人站在他身后,头发花白,眼睛很亮,正盯着他的屏幕。他站起来,下意识地看了一眼李牧。李牧点了点头,那是“没事,他是好人”的意思。
“穆勒教授,我是陆鸣。春芽的适配模块是我写的,但还有很多需要优化的地方。我在场计算和春芽之间的接口上卡了很久,数据格式不统一,张量维度对不上,内存拷贝太多,推理延迟降不下来。”
穆勒笑了。“你知道为什么卡住了吗?因为你太聪明了。聪明人总想把所有的事都做对,做到完美,做到极致。但完美是不存在的。你能做的,是不断地接近完美,一步,一步,再一步。不是一步到位,是走很多很多步。每一步都很小,很小很小,但每一步都在往前走,没有一步是白走的。”
陆鸣看着穆勒,沉默了很久。然后他坐下来,开始写代码。这一次,他没有去想完美,没有去想极致,没有去想一步到位。他只是写,一行一行地写,一个小步一个小步地走。穆勒搬了一把椅子,坐在他旁边,安静地看着。不说话,不打扰,只是看着。像一个老师坐在学生旁边,安静地、耐心地、不知疲倦地注视着那些从指尖流淌出来的字符。
李牧站在一旁,看着这一幕,想起了方远山。想起了方远山在他第一次演示天工时说的那句话——“这个模型,多少钱都值。”想起了方远山在银杏树下递给他笔记本时颤抖的手,想起了方远山在病床上写论文时蜡黄的脸。
穆勒教授,和方远山院士,是同一类人。他们不需要你记住他们,不需要你感谢他们,不需要你报答他们。他们只需要你做一件事——把该做的事做完。
穆勒在实验室待了整整一周。他推掉了所有的安排——故宫没去,长城没爬,烤鸭没吃,连酒店的自助早餐都没怎么吃。每天一早,他自己坐出租车从中关村皇冠假日酒店到实验室,上楼,搬一把椅子坐在李牧旁边,看他写代码。不说话,不提问,不打扰,只是看着,像一块安静的海绵,吸收着每一个细节。
李牧写得很快,每天上千行,不是那种为了凑行数而写的废话,而是每一行都经过深思熟虑的精炼。每一个函数都只做一件事,每一件事都做到极致,每一段代码都像一首短诗,简洁、精确、富有韵律。穆勒看着那些代码,偶尔点头,偶尔皱眉,偶尔在随身的笔记本上记些什么。一周下来,他记了整整一本,密密麻麻的英文,夹杂着公式和图表。
一周后,穆勒要走了。临走的那天晚上,李牧和陆鸣请他在中关村附近一家小馆子吃饭。馆子不大,装修很旧,墙上贴着褪色的菜单,桌上的塑料桌布破了几个洞,但菜做得地道,老板是四川人,辣椒用得慷慨,花椒用得精准。
穆勒点了一份宫保鸡丁、一份鱼香肉丝、一份干煸豆角、一份麻婆豆腐,还有一碗米饭。他拿起筷子,夹了一块宫保鸡丁,嚼了两口,眼睛亮了,嘴角上扬了,又夹了一块。
“这个,比斯坦福附近那家中餐馆好吃一百倍。那家中餐馆的宫保鸡丁,甜的,像糖醋里脊。这个才是真正的宫保鸡丁,辣中带甜,麻中带香,鸡肉嫩,花生脆,葱段鲜,每一样食材都在它应该在的位置上,每一味调料都发挥了它应该发挥的作用。这不是一道菜,这是一件艺术品。”他用中文说的,发音不太标准,但每个字都说得很认真,很用力,像在念一篇很重要的论文。
陆鸣笑了。“穆勒教授,您的中文说得不错。比我说的英文强多了。”
“谢谢。我年轻的时候在北京语言大学学过一年。那是很久以前的事了,三十年了。那时候北京还没有这么多高楼,满大街都是自行车,从二环到三环,全是一望无际的自行车,像一条钢铁的河流。空气也比现在好,没有沙尘暴,没有雾霾,天是蓝的,云是白的。我记得有一次,我骑着自行车从学院路到天安门,骑了一个多小时,不觉得累,因为一路上都在看风景。天安门广场上人不多,我能听到自己的脚步声。”穆勒放下筷子,看着窗外的街道。窗外是北京的夜,霓虹灯在闪烁,车流在涌动,人群在流动。但穆勒看到的,不是这个北京。是三十年前的北京,是他骑着自行车从天安门广场上经过、能听到自己脚步声的北京。
“穆勒教授,您这次来,不只是为了看春芽吧?”
穆勒沉默了几秒。“斯坦福大学想请您去做访问学者。不是上课,不是讲座,不是任何形式的公开活动。只是给您一间办公室,一台服务器,一个安静的环境,让您继续写春芽。您不需要跟任何人打交道,不需要参加任何会议,不需要做任何您不想做的事。您只需要写代码,写您想写的代码,写到深夜,写到凌晨,写到日出,没人管您,没人打扰您。一年,两年,三年,随您。经费不用您担心,我来解决,我找投资,我拉赞助,我写 grant proposal。您只需要做一件事——写代码。”
李牧沉默了很久。陆鸣看着他,穆勒也看着他。小馆子里很吵,旁边几桌人在喝酒划拳,声音很大,隔壁桌在聊股票,对面桌在聊房价。但他什么都听不见。他只能听见自己的心跳,一下一下的,像一只不肯停歇的鼓。
“穆勒教授,谢谢您的邀请。这是我收到过的最好的邀请。但我不能去。”
穆勒没有问为什么。他猜到了一些,但他想听李牧自己说。“因为您母亲?”
“因为我的根在这里。春芽是在中关村这栋灰色小楼里写的,是中文写的,第一个任务描述是‘一只猫坐在月亮上钓鱼’,第一个生成的图像是橘色的猫坐在新月上钓鱼。春芽的每一行代码,都带着这里的味道。这里的空气,这里的阳光,这里的噪音,这里的沙尘暴,都写在春芽的代码里。我不能走。走了,根就断了。断了,春芽就长不大了。”
穆勒沉默了几秒,然后点了点头。“根,很重要。一个人没有根,就像树没有土。长不大,风一吹就倒。您留下来,继续写春芽。我每年来看您,看您写代码,看春芽长大。也许明年,春芽就能跑在手机上了。后年,就能跑在手表上了。大后年,就能跑在眼镜上了。我会看着的,从斯坦福,从加州,从大洋彼岸,看着。”
“好。”
穆勒端起酒杯,李牧也端起来,陆鸣也端起来。三只杯子碰在一起,发出清脆的声响,像风铃,像雨滴,像春天第一声响雷。穆勒走了。李牧送他到机场,站在安检口外面,看着他推着行李车走进去。穆勒回过头,朝他挥了挥手,用中文喊了一句:“好好写代码,别偷懒!”
李牧笑了,也挥了挥手。安检口的人很多,穆勒的身影很快消失在人群中,像一滴水融进了大海。但李牧知道,他会再来的。每年都会来,来看春芽,来看他,来看那些从指尖流淌出来的、改变世界的字符。