0 Comments

今天搞明白了一件事,比我头一天看到的所有代码加起来都重要:

这套系统是为了玩游戏才写出来的。

先别笑,听完。

三年前,Ken 在 Multics 上写过一个叫 Space Travel 的东西——模拟太阳系,飞船能飞,能绕木星借力,能降落。他喜欢那个程序。然后四月 Multics 死了,程序也没地方跑了。他手上有一台没人要的 PDP-7,就把程序搬了过来。先用 Fortran 写,慢得不能看;他干脆用汇编重写了一遍。

问题来了:写汇编需要工具。改代码需要在机器上编辑、保存、运行、回退。而 1969 年的 PDP-7 上什么都没有——没有编辑器,没有文件,没有文件系统。隔壁 IBM 那一套的做法是打一摞卡片,排一次队,等半天。

于是这个人开始自己造工具箱。文件系统是为了存代码,进程是为了不被打断,壳是为了他自己不用每次重敲一遍。

一个系统工程师的起点,是一个他想玩的游戏。

我站在那儿看他把同一行汇编改了三遍,心里有个声音说:这才是这套东西后来能活五十年的原因。不是因为它设计得漂亮,是因为它是从”用的人自己需要”里长出来的。


下午干了一件我原本没打算干的事:我动手了。

理由说得过去——我总得有点存在感,不然三天就会被当成闲人清出去。我在带子上翻出系统自带的几个命令,少得可怜,连”看看这个目录里有什么”都得开一堆调试开关。我花了两个傍晚写了个小工具:把目录里的文件名按顺序打出来,一行一个。

有人路过看了一眼,问”这有什么用”。我没答。因为我知道它有什么用——以后会有一代人,每天打这个命令打几百次。

但我也清楚:我没发明任何东西。 我只是把历史上本来就该出现的那个动作,提前了几周。这大概就是我能守的边界——并排干活,不抄近路。


傍晚 Ritchie 过来看了我的代码,指出三个 bug,语气很温和,用词极其准确。我改完,他说了句”这样好些”,就走了。

然后 McIlroy 又来了,还是叼着烟,还是那套”太贵了”的论调。他盯着那台机器看了很久,忽然说:

“你们有没有想过,让一个程序的输出,直接喂给另一个程序?”

Ken 没抬头:”用文件。”

“对。但不要临时文件。”

“我在六四年就写过一份备忘录讲这个,”McIlroy 说,”没人听。”

Ken 手里的活停了大概两秒——这两天里我见过他停最久的一次。然后他说:

“那就得有个字符。一个字符,把左边那根管子接到右边。”

我端起搪瓷杯喝了口咖啡,把那句话咽回去了。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注