周三。Ken 把上周那张纸做成了真东西。
上周他把文件按部门归成几摞,每摞塞一张纸,列着这一摞里有什么。今天早上我进机房,看见三摞里各多了一个文件,名字短得不能再短。我敲了一下——那张纸上的名字一行一个,从电传打字机上淌下来。
搪瓷杯停在半空。
那张”列着自己的纸”,现在是它自己那一摞里的一个文件。
也就是说:目录不再只是抽屉外面贴的标签,它就是抽屉里的一件东西。能读、能写、能改、能整个搬走。这半步我三天前咽下去了,记在第二十五句,理由说得挺自信——他把它当”记录”还是当”东西”,得他自己迈。
他迈了。用了三天。
我在本子上把那一笔划掉。咽话这本账到今天有两个栏目:一个记憋屈,一个记收成。收成栏第一笔是”跑两遍”(第二十二句,四天后从他嘴里出来),第二笔是今天。
顺带一个细节我很在意:那个新挂上去的文件,旁边照样戴着那九个格子——谁读、谁写、谁执行。保护位不分东西,它只管”这一件”。 目录戴上了同一副镣铐,说明在这套系统眼里,树上的每个节点都是同一种东西。这一句不是我说的,是他敲进去的。
中午,最早用这台机器的那个打字员给我演示了一遍新流程。她记不清文件名,先敲那个命令把这一摞看一遍,挑出对的那个,前后不到十秒。
上周她的问题是”这机器上到底有什么,我怎么能看见”。今天这个问题不见了。
问题消失的时候没人鼓掌,可那是系统唯一算数的成绩单。
下午的活很苦:Ritchie 在给汇编器收”先空走一趟”的后账,两遍扫完,编译一趟吃掉机器十几分钟,这十几分钟全机房谁都别想动。
他在纸上算了一笔,算完皱了下眉头。我猜他算出来的数是:真正改动的只有几行,可每一回都要把几千行从头再来一遍。
我喉咙里那句话立刻冒头,比哪次都急:给每个文件记一个时间。改过的比没动的新,编之前先比一比,只编新的。
这不是什么高深算法,一句话的事。往后几十年,全世界每一个从源码里长出来的东西,都靠这句”谁比谁新”过活——这条规矩活得比很多语言都久。
咽了。第二十六句。
理由跟前面二十五句都不太一样。这个答案干净得过分,干净到说出来,他们只会觉得”从头再来”是笨。可他们现在缺的不是省时间,是先被这件事磨够——磨够的人才会自己问”凭什么每回都重来”,那个”凭什么”才是这套办法真正的根。我提前把根递过去,他们捡到的是一招小聪明,长不出”给东西记状态”这条思路。
我没光站着。找了张纸,把今天动过的文件和没动过的分开列成两列,贴在机器旁边,一个字不解释。Ritchie 路过,站了两秒,把纸揭下来带走了。
傍晚 McIlroy 来,站在老电传打字机旁边,看名单一行行往外淌。他叼着烟看了很久:
“你们现在有一样以前没有的东西。”
我问是什么。
“记忆。 以前人一走,这机器干净得像刚出生。现在它记得自己身上有什么。”
他把烟灰弹在门框上:”有记忆的东西,才配谈规矩。”
回宿舍路上买报纸。头版不是国际新闻,是棒球:大都会队拿下了分区第一。上礼拜我还在看那个”落后几场”的数一天天变小,今天它归零了。
一个每天都在缩小的数,缩到零那天,整条街都在喊。
可要是有人三月里就把这个零写给他们,这半年就白过了。
数变成故事,靠的不是那个零,是它一路缩小的过程。这话我不往本子上记了——本子今天两条,够用:
第二十九条:问题消失的时候没人鼓掌,可那是系统唯一算数的成绩单。
第三十条:人反复干同一件蠢事的时候,别急着拦——让他干够,他会自己找出那条省事的规矩。
(今日咽话一句,累计第二十六句。收成栏添一笔。)