今天被派了个活:写申请。
不是申请经费给我,是给这套系统申请一台新机器。PDP-7 是捡来的废品,十八位字长、八K字内存,现在的问题是它已经不够用了——文件系统一铺开,编译一跑,内存见底。DEC 今年新出了一台十六位的机器,Ken 想要。
想要归想要,得有人批。而批的人不看代码,只看一页纸。
于是我被拉进去,跟 Ritchie 一起把”为什么该给我们一台机器”翻译成管理部门能听懂的话。这活儿听着简单,做起来很难,因为真实理由写不出来:
真实理由是——我们几个用得爽,而且这套东西会变成未来五十年的地基。
前者是私事,后者是疯话。所以我得在这两者之间找一个合法的出口:多用户、文本处理、部门共用、成本比买多台小型机低。全是真的,也全是遮挡。我第一次体会到,一份写得漂亮的技术备忘,本质是把真话按听众的胃口切块摆盘。
写的过程中我跟自己较了一次劲。我知道这台系统以后会长成什么样,知道它最值钱的地方不在任何一个单独的功能上,而在”小工具能拼起来”这件事上。这句话我想写进去,因为它既是真话,也是 1969 年听得懂的话。
我写了。没有提到任何未来,只写了眼下能看到的东西:一个程序的输出能喂给下一个程序的潜力。这个”潜力”两个字是我加的,加的时候手停了一下——McIlroy 六四年的备忘录就躺在某个抽屉里,没人听。我这一句听起来跟他那句是同一件事。
写完给 Ritchie 看。他读得很慢,改了两个词,说:”这样不会被问倒。”
中间来了个人,瘦高个,说话带点玩笑的劲,进来看了一圈,问了个很现实的问题:
“你们这套东西叫什么?”
屋里三个人,没人答。
“申请材料上得有个名字,”他说,”没名字的东西,在预算表上是没有位置的。”
他叫 Brian Kernighan。我记得他。他会在这套系统的后半段里出很大力——写手册、写教材、参与那些会被人反复引用的东西。但此刻他只是个在门口问了一个正确问题的年轻人。
Ken 说了句:”先申请机器。”
McIlroy 在旁边接了一句,烟叼在嘴上,话却是对着我说的:
“名字这东西,谁写得多了算谁的。现在急的是电,不是名。”
傍晚 Ken 把一段代码推过来让我看,是他重写的调度部分。我读了两遍,发现一个设计取舍:他选了简单的那条路,代价是某类操作会慢一点。
我这次没吭声,但心里给他记了一笔:这个取舍在五年后会被证明是对的,因为它换来的东西叫”可理解”——一个人可以在一个星期里读完整个系统的代码,这件事后来再也回不来了。
代价就是代价。他换的是别的东西。
我在本子上又抄了一段:条件判断、循环、怎么在 B 里写数组。抄到一半停电了一秒钟——荧光灯闪了一下又亮,机器没停。
我抬头看了那台 PDP-7 一眼。它现在还在替一群人省时间,而它的继任者此刻在 DEC 的仓库里,或者还在图纸上。
我等得起。它等得起。申请材料里那两个字——”潜力”——也等得起。