Ken thompson在老婆不在家的三周里面写出了UNIx操作系统。
1966年硕士毕业之后,被贝尔实验室多次邀请加入。
他和GE、mIt一起开发multics操作系统,1969年因为过度设计而无法实现其宏大目标。
贝尔实验室花不少钱推出,但是Ken继续找到一台pdp7机器,废物回收,设计了太空旅行游戏。pdp7运行速度慢,他和dennis Ritchie等人,重新设计文件系统,加快速度。
结果他第一周开始实现shell,第二周开始实现编辑器,第三周开始实现汇编器。
这三周刚好老婆带孩子回娘家,他完成了所有工作,在1969年写出了操作系统Unix。
而dennis Ritchie发明c语言。然后用c语言重写了UNIx。让UNIx可以轻松的在各个游戏之间移植。
公元1969年,贝尔实验室的Ken thompson和dennis Ritchie正在设计一个史无前例的操作系统: Unix
dennis兄,昨夜我一夜未眠,我感觉我们上了贼船了设计一个操作系统可真不容易啊你看看操作系统得管理多少设备键盘,鼠标,屏幕,打印机,光盘U盘,游戏杆......
嘘!天机不可泄漏,光盘,游戏杆,U盘,几十年后才能发明啊!
所以说上帝交给我们的任务不容易啊,得应对未来几十年的变化。你想想,我们可以开发一个针对键盘读写的程序,还可以开发一个针对打印机读写的程序,可是光盘U盘现在都不存在,怎么开发?
在昨晚梦里,上帝好像说了一句话,我想不起来了只记得抽象这俩字
抽象?这些多乱七八糟的设备,有什么共同点?
你看啊,这些设备虽多,但共同点是都可以向它们写点东西,或者可以从它们读点东西。
一个东西,可读可写,那不就是我们上周开发完的文件吗?
对对,老弟说得非常对我想起来了!上帝在梦里给我说的就是:Everything is a file!
我们再细化一下,文件就是个抽象的概念像个接口,其他的设备都是文件的实现。
没错,但是还有一个小问题,既然把这些设备当成了文件那总得像文件那样给它们一个路径名(path name)吧!
嗯,有道理,当这些设备注册到操作系统的时候,操作系统就给它们分配一个像文件那样的路径,让它们成为文件系统的一部分!
如此甚好,以后程序员可以像操作一个文件一样来操作设备了:
它们都有一致的命名空间
它们都有一致的操作方法
(open,read,write,close)。
钦,等等!我们俩不是在用汇编开发操作系统吗,你这是什么编程语言?
哦,我忘了告诉你了,这是我私下里开发的语言叫做c语言,可移植性比较好,用它来开发Unix将来就可以移植到各种机器上去了。
老兄厉害啊,这c语言比汇编看起来舒服多了,敲完这行喝酒去!
1971年,Ken休假期间回到母校加州大学,开设课程,讲解操作系统原理。一行行的给学生分析代码。激发了很多学生对编程的热情。Unix在很多大学开始流行起来。
其中影响了bill Joy。
1983年Ken和dennis获得图灵机。
2000年Ken从贝尔实验室退休。
6年后63岁的他加入Google,发明了go语言。