Unix与C

1966年,在贝尔实验室工作的肯·汤普森(Ken Thompson)参与了一个项目,这个项目是由贝尔实验室、麻省理工和通用电气的合作项目:研究新一代的多用户分时操作系统—— Multics。加班之余,汤普森在Multics上编写了一个名为“星际旅行(star travel)”的游戏聊以自慰。可惜好景不长,1969年贝尔实验室撤出了该项目,从此汤普森不能再使用Multics系统,工作上的影响本身还好,关键是他辛苦开发的游戏,再也玩不了了。于是汤普森萌生了一个念头:自己开发一个类似Multics的操作系统,然后移植自己的游戏到新系统去玩。

作为小白,我已经无法理解大神们的脑回路,就像Knuth为了写论文,专门发明一种写论文的语言Tex一样。汤普森的念头有过之而无不及。然而念头归念头,汤普森在封神之前,终究也是个普通人,他有家庭,有老婆,有孩子。要做家务,要当奶爸。上班都已经够累了,下班着实没时间再开发OS了。有趣的是,那年夏天,汤普森的老婆带着孩子回娘家了,一去一两个月。然后这件无比平凡的小事冥冥之中就成就了UNIX的诞生。站在今天,闭上眼睛做个时空穿越,UNIX之后,C语言,BSD,Linux,OSX,C++,Java,Android,开源……无数名词像弹幕一样飞过。而在那个夏天,所有人都不知道一件生活小事的背后意味着什么,这也算是“蝴蝶效应”吧。

然而在UNIX诞生之初,并不被同事看好,可能在领导眼里都是“工作不饱和”。但是同实验室的 丹尼斯·里奇(Dennis M. Ritchie)却颇为感兴趣,并且主动参与进来维护完善。在第一版UNIX诞生的时候,汤普森用的是汇编语言,在后面的版本演进过程中,他们发明了B语言。1973年,里奇在B语言的基础上开发出了C语言,然后汤普森和里奇一起将UNIX用C语言完全重写,从而成为现代UNIX起源。无论是C语言成就了UNIX也好,或者UNIX成就了C语言也罢。无论如何汤普森和里奇以及他们所使用的电脑PDP-7都变成了历史的一部分。十年后的1983年,两人因为发明UNIX和C语言的成就获得了图灵奖。

施乐公司与Smalltalk