上午走廊比平时吵,因为 Multics 的遗物开始往外搬。
那台大机器贴上了标签,等厂商的人来拉。推车碾过打蜡的地板,划出几道白线。挂着项目表的那间办公室,今天终于有人把表撕了——纸团在门边的桶里,四月的日期朝上。
我站在门口看了会儿。1969 年判断一套分时系统值不值得活,标准就是那台机器:它能同时伺候一百个人,所以它贵、它复杂、它得配一整层人伺候它。四月的结论是”不划算”。现在它被拆成部件运走。而走廊另一头五十米,一台没人要的 PDP-7 上,有人正在给文件加”归属”。
一台机器的葬礼和另一台机器的出生,在同一条走廊里同时进行,没人觉得这两件事有关系。
中午,Ken 把上周那个”归属”标记往前推了一步。
上周事故之后,系统里每个文件旁边多了一行字:谁是主人。但”主人”这个词不够用——他今天在白纸上画了个格子,横着三格,竖着三格。
我在旁边看着那张纸,喉咙里那句话已经排到第十五位:九个格子就是九个二进制位,一个文件一个数,八进制三位数写得完。 这个答案我熟到能背,我知道它以后会印在哪本手册的第一页,知道会有人为”为什么是三位不是四位”写考证。
咽了。这次的理由跟前几次不同:那九个格子的形状不是算出来的,是想出来的。”我 / 我们 / 别人”怎么划、”读 / 写 / 执行”怎么排,这些决定要的不是信息,是判断。我递给他一个数字,他就少做一次这种判断——而判断这东西,少做一次就少长一块。
但我也不能光站着看。今天换了个下手的地方:我去找用户。
下午的活是给专利部门那三个打字员写了一张纸,不算手册,就一张:
“哪些文件是你的,哪些别动,动之前机器会问你什么。”
写完挨个问了一遍,包括上周把 Ken 的代码覆盖掉的那位。他拿着纸回去试,故意去改别人的文件——被拦住了,机器吐出一行提示。他盯着看了半天,说了句:”这个好。”
这个”好”比我这一周憋的所有话都管用。保护这个概念的第一批验收人不是设计者,是犯过一次错的人。 记进本子。
Ritchie 是下午过来的。他把那张九宫格站在那儿看了很久,然后提了个把所有格子重排一遍的意见:
“人不能只分’我’和’别人’两类。 专利部门那三个人要共用一套文档模板。他们互相之间不该算’别人’。”
这就是”组”的来历。往后所有系统里,用户和用户之间都会横着一个叫 group 的东西,权限判定永远是三档;而它的出生证,是三个打字员想共用一套模板。不是安全需求,是省事需求。安全模型是被省事需求生出来的,这话写进教科书没人信。
Ken 听完点头,把横着那行从两格改成三格。
就改一格。整个系统的安全模型从此定型,此后再没动过。我盯着那张纸看了很久——最耐用的设计长得都不像设计,像将就。
傍晚 McIlroy 来了,叼着烟站在门口看那张纸。
“规矩要短到能背下来。背不下来的规矩等于没规矩。”他抖了下烟灰,”你们这个,背得下来。别再加了。”
Ken 没答,手边那段 B 代码还在长,写的是权限检查,改了几版,最后压成一个按位取数的动作。十八位的字里塞着九个格子,剩下的位空着——这年代的位是奢侈品,他还是在省。
我心里那句话又冒头,这句是关于未来的,不能出口:这套九个格子的规矩会被抄五十年,抄到所有机器、所有文件、所有登录框后面;而它最后让人记住的不是它多安全,是它多短。
本子上一条还是第十七条。今天记两条:
第十八条:保护不是为了防住坏人,是为了让好人犯错的时候不伤别人。
第十九条:能被记住的规则才是规则,记不住的叫口号。
咽话计数:第十六句。
顺带一笔:园区食堂这周的主菜还是那道吃不动的肉卷,电视里在放阿波罗 12 号的筹备,十一月。月亮这东西,全美国看了两个月,还是没看腻。