1983年5月,北京。
中关村新楼三层最东头那间屋子,门口连块牌子都没掛。
窗户朝东,早上太阳一出来就晃眼,下午又晒得跟蒸笼似的。
但王溯不在乎这个。
他站在屋子中间,看著眼前这几个人。
胡志远,坐角落那台机器前,头髮还是乱糟糟的,眼镜片厚得像啤酒瓶底。
来了一多月了,说的话加起来不超过一百句。
李卫国,二十八岁,软体组最早的骨干之一,话多,手快,一个人能顶三个用。
还有两个新面孔。
一个叫刘春生,二十五岁,北大数学系毕业的,去年分来的;一个叫孙晓梅,二十四岁,唯一的女生,清华计算机系的高材生。
五个人,五台机器,一间朝东的屋子。
这就是作业系统的全部家当。
“人都齐了。”王溯开口,“咱们开个会。”
胡志远没动,继续盯著屏幕。
李卫国拉过一把椅子坐下。刘春生和孙晓梅站在旁边,等著。
王溯走到黑板前,拿起粉笔,写下两个字:
“崑崙”
“这是咱们的系统,叫『崑崙』。”他转过身,“这名儿,是赵总工起的。”
胡志远的头抬了一下,又低下去了。
李卫国念出声来:“崑崙……挺有气势。”
王溯点点头。
“咱们的任务,是在这儿,从零开始,写一个作业系统。”
他看著那几个人。
“不是改別人的,不是抄別人的,是自己从头写的。內核、文件系统、內存管理、进程调度、设备驱动、用户界面——全得自己写。”
屋里安静了几秒。
刘春生举手。
“王组长,我问一下,咱们为什么要自己写不能改別人的吗”
王溯看著他。
“改谁的”
刘春生想了想:“cp/,或者……那个刚出来的s-dos”
王溯摇摇头。
“改不了。”
他从桌上拿起一沓资料,递给刘春生。
“这是咱们的硬体架构。跟別人的不一样。別人的系统,跑不了。”
刘春生翻著资料,没说话。
孙晓梅开口。
“王组长,咱们有多少人”
“五个。”
“时间呢”
“不知道。可能三年,可能五年。”
孙晓梅沉默了几秒,然后点点头。
“行。”
王溯看著她。
“你不怕”
孙晓梅摇摇头。
“怕什么干就是了。”
王溯笑了。
他转向胡志远。
“老胡,你说两句”
胡志远抬起头,看著他。
“说什么”
“说点……鼓励的话”
胡志远想了想。
然后他转回去,继续盯著屏幕。
“代码写出来,就是鼓励。”
王溯愣了一下,然后笑了。
“行。那就不说了。”
他走到那台机器前,坐下。
把手放在键盘上。
“第一行代码,谁来写”
没人说话。
王溯看著屏幕,沉默了几秒。
然后他敲下了第一行。
那是一个注释:
“/kunnos-kerart/”
屋里安静极了。
只有键盘敲击的声音,噼里啪啦,一下一下。
胡志远的嘴角,翘了一下。
没让別人看见。
第一个月,最难熬。
五个人,五台机器,每天从早上八点干到晚上十二点。饿了就在机房吃,困了就在椅子上眯一会儿。
王溯买了五张摺叠床,靠墙放著。谁实在扛不住了,就躺一会儿。但很少有人躺。躺下去,脑子里还是那些代码,翻来覆去睡不著,还不如起来接著写。
胡志远最拼。
他每天来得最早,走得最晚。有时候王溯早上七点半到,他已经在那儿了。问他几点来的,他说六点。问他晚上几点走的,他说不知道。
李卫国悄悄跟王溯说:“老胡这人,不是人。”
王溯瞪他一眼。
“我说真的。”李卫国压低声音,“他一天能写我三天的量。而且bug少,基本上写完就能跑。他是怎么长的”
王溯看著胡志远的背影,没说话。
但他心里清楚。
这人,是真喜欢写代码。
不是当工作,是真喜欢。
刘春生和孙晓梅也拼。
两个新人,刚来就赶上这种强度,谁也没叫苦。刘春生负责文件系统,天天抱著那本《数据结构》翻,翻烂了还在翻。孙晓梅负责內存管理,遇到难题就追著王溯问,问完了自己琢磨,琢磨通了就写,写完了再问。
有一天晚上,王溯十一点多要走,看见孙晓梅还趴在桌上,对著一屏幕代码发呆。
“晓梅,还不走”
孙晓梅抬起头,眼睛红红的。
“王组长,这个bug,我找了一天了,没找著。”
王溯走过去,看了看屏幕。
是一个內存分配的问题。代码看著没问题,但跑起来就死机。
他坐下来,一行一行看。
看了二十分钟,他指著一行代码。
“这儿。”
孙晓梅凑过去看。
“少了一个判断。”王溯说,“边界条件没处理。”
孙晓梅盯著那行代码,愣了几秒。
然后她一拍脑袋。
“对!对啊!我怎么没想到!”
她抬起头,看著王溯。
“王组长,你太厉害了。”
王溯笑了。
“不是我厉害。是你太累了。回去睡觉,明天再看。”
孙晓梅点点头,关掉机器,站起来。
走到门口,她忽然回过头。
“王组长,咱们这个系统,真能做成吗”
王溯看著她。
“你觉得呢”
孙晓梅想了想。
“我觉得能。”
“为什么”
孙晓梅指了指胡志远的座位——人早就走了,但桌上那沓列印纸还摊著,上面密密麻麻的代码,每一行都写得整整齐齐。
“因为有老胡。”她说,“还有你。还有我们。”
王溯愣了一下,然后笑了。
“那就做下去。”
第二个月,出了事。
那天下午,王溯正在调试一段代码,忽然听见李卫国喊了一声。
“坏了!”
他抬起头。
李卫国盯著屏幕,脸色煞白。
“怎么了”
李卫国没说话,只是指著屏幕。
王溯走过去一看,心里咯噔一下。
屏幕上,一行红字:
“fatal:kernelpanic”
內核崩溃。
整个系统,死了。
“怎么回事”王溯问。
李卫国摇头。
“不知道。我刚加了一段代码,编译完一跑,就成这样了。”
王溯坐下来,开始查。
查了一个小时,没查出来。
刘春生过来帮忙,又查了一个小时,还是没查出来。
孙晓梅也过来,三个人一起查,又查了两个小时。
天黑了。灯亮了。
还是没查出来。
李卫国坐在那儿,脸色越来越难看。
“王组长,是我写崩的。我……”
“別急。”王溯打断他,“代码是人写的,bug也是人写的。找出来,改掉,就行。”
他又低下头,继续看。
九点多,门开了。
胡志远走进来。他今天出去办了点事,下午不在。
看见几个人围著屏幕,他愣了一下。
“怎么了”
王溯抬起头。
“內核崩了。找了一下午,没找著。”
胡志远走过去,在李卫国旁边坐下。
“最后一次提交是什么时候”
李卫国报了个时间。
胡志远调出代码,开始看。
看了十分钟。
他指著屏幕。
“这儿。”
几个人凑过去看。
一行代码,看起来没什么问题。
“这儿少了一个括號。”胡志远说,“语法上没错,但逻辑不对。编译能过,跑起来就崩。”
李卫国盯著那行代码,看了半天。
然后他一拍脑袋。
“对!对啊!我写的时候少敲了一个!”
他转过头,看著胡志远。
“老胡,你……你怎么看出来的”
胡志远没回答,只是站起来,走到自己的座位,坐下。
“改完重新编译。”
李卫国愣在那儿,半天没动。
王溯拍拍他肩膀。
“愣著干嘛改啊。”
李卫国这才回过神来,开始改代码。
改完,重新编译。