操作系统|他是世界上最杰出的程序员,一个月写了个操作系统,退休后去做飞行员!( 二 )


肯·汤普森心想 , 像我这样的天才不就应该来这里吗?于是他接受了贝尔实验室的Offer 。

贝尔实验室

03搞砸 “Multics操作系统”项目
1966 年 , 肯·汤普森加入贝尔实验室 , 与丹尼斯·里奇(C语言发明人)一起参与名为 “Multics操作系统”的项目开发 。

那个时代的计算机系统还处在批处理的阶段 , 只能在既慢又笨重的大型机器上工作 , 要先将程序卡片装入设备 , 然后等1个小时后才能取运算的结果 。 不仅慢 , 还很废纸 。
因此 , 贝尔实验室联合麻省理工学院 , 以及通用电气公司 , 想建立一套可以多人使用、多任务、多层次的 Multics 操作系统 。
但是 , 由于大家太过追求完美 , 导致开发周期过长 , 成本高 , 短期内看不到产出 。 可惜那个年代还不流行敏捷开发的理念 。
1969 年的时候 , 贝尔实验室忍无可忍 , 决定退出这个项目 。

对于程序员来说 , 搞砸一个项目是很稀松平常的事情 , 就像K哥这10几年的职业生涯里搞垮过的项目 , 都可以写出60多篇“搞垮系列”了 。

肯·汤普森也很失望 , 但是让他失望的不是搞砸项目本身 , 而是他再也不能玩自己写的名为“star travel”的游戏了 , 因为这个游戏完全是基于 Multics 的 。 你看看大神 , 玩游戏才是主业 , 上班只是副产品 。

04为了玩游戏 , 开发了UNIX
既然这样 , 那就自己开发个操作系统吧 , 这样就可以继续玩游戏了 。

技术好就是任性啊 , 一言不合就开发个操作系统 。 所以千万不要把程序员逼急了 , 他们连操作系统都能做 , 还有什么事情做不出来?


肯·汤普森找到了一台废弃已久的老式 PDP-7小型机 , 虽然称为小型机 , 那时候也有一个房间那么大!在这台机器上他首先重写了游戏 , 游戏有了后 , 肯·汤普森还想着要开发一个全新的操作系统 。
正好这个时候 , 他的老婆带着孩子回娘家住3个礼拜 , 也就是说他有完整的3个礼拜没有人打扰的时间 。
于是他决定利用这段时间开发操作系统 , 基于之前搞砸“Multics系统”的经验 , 他很快完成了内核系统、文件系统、编辑器、编译系统 , 一个月时间竟然编写完了操作系统的内核 。
这个故事告诉我们 , 一个男人想要搞大事 , 老婆不在家是多么的重要!K嫂你看到了吗?K哥一把年纪一事无成 , 是有原因的 。 一天查岗八回 , 能写出个屁才怪呢 。
话说这个系统做完后 , 肯·汤普森将其命名为 UNiplexed Information and Computing System , 缩写为 UNICS。 但是怎么念都拗口 , 后来改名为UNIX , 陆续做了一些改动后 , 第一版UNIX操作系统诞生了 。

那一年 , 肯·汤普森 26岁 。
05UNIX 跟C语言更配
1973 年的 10 月 , 在 IBM 举办的操作系统原理专题研讨会上, UNIX首次向世界问好 , 当肯·汤普森和与丹尼斯·里奇向人们宣读论文并展示了UNIX后 , 整个会场轰动了 , 人们惊呼:卧槽 , 牛逼 , 还能这么玩!

后来随着UNIX的用户越来越多 , 肯·汤普森和与丹尼斯·里奇决定将UNIX进一步改写 , 以便可以移植到各种不同的硬件系统 。

由于UNIX的源码中不少是用汇编完成 , 不具备良好的移植性 , 正好丹尼斯·里奇在 1973 年在 B 语言的基础上开发出了 C 语言 。 C 语言灵活 , 也更高效 , 与硬件无关 , 并且不失其简洁性 , 正是UNIX移植所需要的法宝 。
于是旧版的UNIX与 C 语言完美结合在一起 , 产生了新的可移植的UNIX系统 。 随着UNIX的广泛使用 , C 语言也成为了当时最受欢迎的编程语言 , 一直延续至今 。