【猿传奇 | 10】Ken Thompson:26 岁发明 Unix,70 岁还在做编程的技术巨匠

在【猿传奇】系列的第八期中,我们为大家介绍了 C 语言之父:Dennis Ritchie 在编程领域的探索和创造传奇,文中描述 Dennis 是 Unix 操作系统的联合发明人,而大家是否好奇,改变计算机工业和人类社会的 Unix 操作系统的另外一位发明人是谁?他又有着怎样的传奇经历?在技术领域又做出了哪些卓越的贡献?

本期【猿传奇】让我们一起走近 C 语言前身 B 语言的作者,Unix 系统的联合发明人:Ken Thompson 。

( 日写千行代码的 Ken Thompson )

英雄与时代的匹配,由电气转战计算机

Ken Thompson ,1943 年出生于美国新奥尔良。小学时期的他自认受到的教育很烂,但当有一堂课讲到二进制的时候,喜欢逻辑的他立刻被吸引住,兴趣驱使他做了很多相关的二进制计算,并借助一台十进制计算器将其扩展到各种进制。

1960 年,Ken 就读于加州大学伯克利分校主修电气工程,并取得电子工程硕士学位。在 Ken 读大学期间,正是计算机时代蓬勃发展的起步阶段,时代造就英雄,英雄顺应时代,自小喜欢电气的 Ken 接触到计算机后,一发不可收拾,沉迷其中完全无法自拔,大二时他有幸接触到一台模拟计算机,通过自我摸索,仔细研读,学会了编程。1962 年,他就在学校的计算机中心找到份工作,专门负责程序的编写,这些都为他日后开创 Unix 时代奠定了良好的基础。

赋闲在家想玩游戏的冲动,意料之外造就 Unix 

1966 年,Ken Thompson 加入贝尔实验室,与 Dennis Ritchie 一起参与名为 Multics(多路信息计算系统)的项目开发。在那个时期,计算机系统还处在批处理的阶段,技术的不发达使得程序员的工作效率很低,比如他们只能在既慢又笨重的大型机器上工作,要先将程序卡片装入设备,然后等 1 个小时后才能取运算的结果。本来是应市场所需,贝尔实验室联合麻省理工学院以及通用电气公司想建立一套多使用者、多任务、多层次的 Multics 操作系统,却由于开发周期过长,成本高,进度缓慢等种种原因,1969 年贝尔实验室最后决定撤出这个项目,这对于 Ken Thompson 无疑是个不幸的消息,英雄没了用武之地,那时他在开发 Multics 期间,还创造了名为 Bon 的编程语言。

但更让他失望的是,自己再也不能玩自己写的名为“star travel”的游戏了,因为这个游戏完全是基于 Multics 的。

赋闲在家加想玩游戏的冲动,让 Ken Thompson 做为创造者的本性被激发:既然实验室撤出了项目,那我就自己开发个操作系统来满足想玩游戏的愿望。Ken 找到了一台废弃已久的老式 PDP-7 ,在这台机器上他首先重写了游戏,游戏有了后,Ken 还想着要开发一个全新的操作系统。由此接下来他一周一个内核,一个文件系统,一个编辑器,一个编译程序的,竟然在一个月内编写完了操作系统的内核。这个系统做完后,Ken 将其命名为 UNiplexed Information and Computing System,缩写为 UNICS ,后面陆续做了一些改动后,第一版 Unix 操作系统诞生。

那一年,Ken Thompson 26 岁。

在 Unix 开发过程中,Ken 还开发出一种新的语言,用来编译 Unix 系统,这款语言简洁明了,并接近于硬件语言,它就是 C 语言的前身—— B 语言。

Unix 喜获关注,传奇时代正式拉开帷幕

新技术的出现刚开始总是不被大家看好的,Unix 同样, 但 Ken 的好伙伴,同为贝尔实验室的同事,也是参与 Multics 项目的 Dennis ,却投来了关注的目光,并主动要求加入来共同完善这个系统。由此一场轰轰烈烈的 Unix 传奇时代正式拉开序幕。由于 Unix 是真正的简洁、稳定且高效,1972 年,他们联手将 Unix 移植到当时最先进的大型机 PDP-2 时,大家立马放弃了 PDP-2 上自带的 DEC 操作系统,而完全改用 Unix ,这标志着 Unix 已经开始初步崭露头角。1973 年的 10 月,在 IBM 举办的操作系统原理专题研讨会上 ,还不太为外界所知的 Unix 被首次提及,当 Ken 和 Dennis 在会上宣读论文并展示了 Unix 后,整个会场瞬间轰动了,大家纷纷涌上前来索取这种新型的操作系统的程序。这次面世正式将 Unix 推向了市场。随后 Unix 的需求量日益增加,Ken 与 Dennis 决定将 Unix 进一步改写,以便可以移植到各种不同的硬件系统。由于 Unix 的源码中不少是用汇编完成,不具备良好的移植性,正好 Dennis 在 1973 年在 B 语言的基础上开发出了 C 语言,C 语言灵活,也更高效,与硬件无关,并且不失其简洁性,正是 Unix 移植所需要的法宝,于是旧版的 Unix 与 C 语言完美结合在一起产生了新的可移植的 Unix 系统。随着 Unix 的广泛使用,C 语言也成为了当时最受欢迎的编程语言一直延续至今。

(ken thompson & dennis ritchie)

神奇的产品总是在一步步的需求驱使下,被不断探索、创新的技术大神开发出来。

说到这不得不说下有关 Ken 和 Unix 的小插曲:在 Unix 最早被装在 PDP-11 上供大家日常使用时,大家发现 Ken 总能以最高权限进入他们的帐户。这是一群心比天高的计算机科学家们,所无法容忍的,于是不断有高手跳出来分析 Unix 代码,想找到后门,修改代码,重新编译整个 Unix 。然而事与愿违,无论他们怎样努力, Ken 总能轻而易举地继续拿到他们的帐户权限,科学家们百思不得其解,郁闷至极又束手无策。直到 14 年,Ken 获得图灵奖之后,在发表自己获奖感言时才道出其中的秘密。原来,代码里的确有后门,但后门不在 Unix 代码里,而在编译 Unix 代码的 C 编译器里。

事件本身不予置评,只想感叹:高手过招,精彩至极。

功成名就,创造仍在延续

Unix 与 C 语言在计算机史上的贡献不用多言, Ken 与 Dennis 也随之声名大噪,美国计算机协会更是在 1983 年破例将图灵奖颁给了作为软件工程师的 Ken 与 Dennis ,并在当年还决定新设立一个奖项――软件系统奖,用来奖励那些优秀的软件开发者, Ken 与 Dennis 当然成为首个获得该奖项的人选。

Ken 与 Dennis 的紧密合作创造了 Unix 传奇,Ken 在随后并没有走上创业的通路,而是在贝尔实验室从事热爱的开发工作直到退休。但传奇者的人生怎么可能就此陨落,Ken 在退休后竟开启了他另一个爱好并当成了职业——那就是飞行员。

2006 年, Ken 又加入了 Google 公司,参与设计 GO 语言。在 2016 年,GO 语言成为热门度上升最快的编程语言。70 多岁的他,至今还在自己喜爱的编程事业上不断探索创造着,而我们又有什么理由不努力呢?

共有 0 条评论