9

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

 2 years ago
source link: https://www.techug.com/post/he-is-one-of-the-most-outstanding-programmers-in-the-world-he-wrote-an-operating-system-in-a-month-and-retired-to-be-a-pilot.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

2

1983 年,美国计算机协会将图灵奖授予肯·汤普森和与丹尼斯·里奇。

获奖理由是:“For their development of generic operating systems theory and specifically for the implementation of the UNIX operating system.”

翻译过来就是:

“授予肯·汤普森和与丹尼斯·里奇图灵奖,以表彰其在通用操作系统理论领域的贡献,特别是UNIX操作系统的开发与实现。”

老读者知道,老K每次装逼都会引用一段英文,不过这次不是要显摆自己,而是要介绍本文的主人公,肯·汤普森。

在许多读者都还没出生的年代,他就已经取得了计算机界的最高荣誉–图灵奖。

img16218219271367020351.jpeg

01

计算机天才养成记

肯·汤普森出生于1943年。在他小学的时候,有一堂课讲到了二进制,喜欢逻辑的他立刻被吸引住了,在兴趣的驱使下,他做了很多相关的二进制计算,并借助一台十进制计算器将其扩展到各种进制。

其实,老K小时候也有类似的经历,我上初中的时候对物理非常着迷,很早就开始研究,牛顿的头发是在哪烫的?我想,我的物理老师,就是从那个时候开始有心理阴影的。

肯·汤普森,从小就是妥妥的学霸一枚,边玩边学,轻松考上了加州大学伯克利分校,攻读电子工程学士学位。

虽然,国外的大学不像国内这么轻松,随便放飞自我。但是,对于肯·汤普森这样的大神来说,课程so easy,哪里不会点哪里。

于是他迷上了一个新玩意:计算机。

每天晚上,趁着没人的时候,他就偷偷溜进机房,自学了编程,编写游戏、玩游戏,嗨到不行。

大四那年,大神心里还是有点B Tree的,因为觉得自己不务正业,都在玩游戏和编程,电子工程没怎么好好学,所以没有申请读研究生。

正当他准备卷铺盖毕业的时候。一位教过他的老师Berlekamp教授替他申请了研究生,并且通过了,多好的教授啊!

回想起老K大学时候的教授,我的论文改了八回,答辩两次才勉强毕业。同样都是教授,怎么差别就这么大呢?当然了,同样是学生,差别就是这么大。

在研究生阶段,肯·汤普森只用了一年就毕业了,你没看错,他只用了一年就拿到了电子工程和计算机科学的硕士学位。

02

加入贝尔实验室

研究生毕业后,肯·汤普森的才华惊动了当时大名鼎鼎的贝尔实验室,并且向他伸出来橄榄枝。但是,肯·汤普森却看不上,他心想我这么年轻,有才华,又有头发,应该有机会改变世界的。

但是,在贝尔实验室的再三邀请之下,他还是勉强答应去参观一下。

这一参观不要紧啊,他发现汉明码发明人、信息论发明人、晶体管发明人……这些牛逼闪闪的人物,都出自贝尔实验室。

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

贝尔实验室

03

搞砸 “Multics操作系统”项目

1966 年,肯·汤普森加入贝尔实验室,与丹尼斯·里奇(就是文章开头,一同获得图灵奖的另一位大神)一起参与名为 “Multics操作系统”的项目开发。

那个时代的计算机系统还处在批处理的阶段,只能在既慢又笨重的大型机器上工作,要先将程序卡片装入设备,然后等1个小时后才能取运算的结果。不仅慢,还很废纸。

因此,贝尔实验室联合麻省理工学院,以及通用电气公司,想建立一套可以多人使用、多任务、多层次的 Multics 操作系统。

但是,由于大家太过追求完美,导致开发周期过长,成本高,短期内看不到产出。论敏捷交付的思想的重要性啊,可惜那个年代大家并不那么想。

1969 年的时候,贝尔实验室忍无可忍,决定退出这个项目。

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

但是让肯·汤普森失望的是,再也不能玩自己写的名为“star travel”的游戏了,因为这个游戏完全是基于 Multics 的。你看看大神,玩游戏才是主业,上班只是兼职而已。

04

为了玩游戏,开发了UNIX

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

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

肯·汤普森找到了一台废弃已久的老式 PDP-7小型机,虽然称为小型机,那时候也有一个房间那么大!在这台机器上他首先重写了游戏,游戏有了后,肯·汤普森还想着要开发一个全新的操作系统。

正好这个时候,他的老婆带着孩子回娘家住3个礼拜,也就是说他有完整的3个礼拜没有人打扰的时间。

于是他决定利用这段时间开发操作系统,基于之前搞砸“Multics系统”的经验,他很快完成了内核系统、文件系统、编辑器、编译系统,一个月时间竟然编写完了操作系统的内核。

这个故事告诉我们,一个男人想要搞大事,老婆不在家是多么的重要!K嫂你看到了吗?看到了吗?老K这把年纪一事无成,是有原因的。一天查岗八回,就算你是王者,也荣耀不起来啊?

话说这个系统做完后,肯·汤普森将其命名为 UNiplexed Information and Computing System,缩写为 UNICS 。但是怎么念都拗口,后来改名为UNIX,陆续做了一些改动后,第一版UNIX操作系统诞生了。

那一年,肯·汤普森年仅26岁。

05

UNIX 跟C语言更配

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

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

由于UNIX的源码中不少是用汇编完成,不具备良好的移植性,正好丹尼斯·里奇在 1973 年在 B 语言的基础上开发出了 C 语言。C 语言灵活,也更高效,与硬件无关,并且不失其简洁性,正是UNIX移植所需要的法宝。

于是旧版的UNIX与 C 语言完美结合在一起,产生了新的可移植的UNIX系统。随着UNIX的广泛使用,C 语言也成为了当时最受欢迎的编程语言,一直延续至今。

UNIX经典的设计哲学KISS,就是在那个时候被提出来的——Keep It Simple, Stupid。

06

黑客与“后门”

肯·汤普森还有一个备受争议的行为,就是在UNIX里留后门。是的,这哥们竟然在代码里下毒。

最开始的时候,UNIX系统在贝尔实验室是供大家免费使用的。有人发现,肯·汤普森总能进入每个人的账户,于是一位同事就分析UNIX代码,重新编译了系统。

令人意想不到的是,肯·汤普森还是能进入他们的账户,贝尔实验室的科学家们却对此束手无策。

直到1983年,肯·汤普森在他的图灵奖获奖感言里揭示了这一秘密,原来,让他轻松“侵入”各位同事账户的秘诀不在UNIX代码,而在编译UNIX代码的C编译器里,而肯·汤普森正是编译器的开发者。这个操作666,你以为看透了大神,可你就是玩不过他。

那位头发比他多,胡子跟他一样长的自由软件之父、著名黑客–理查德·斯托尔曼,曾这样定义过黑客,一名黑客必须包含三个特点:好玩、高智商、探索精神,而且三项必须同时满足。

黑客追求的不是实用性技术或金钱。老K作为一名技术从业者,经过多年的努力,我已经满足了黑客精神的其中一点:好玩。当然了,主要是被别人玩。

自由软件之父 理查德·斯托尔曼

或许从这个角度,更能理解肯·汤普森的行为,他并非违背了道德准则,对他来说这个事就是一逗乐。不难发现,黑客的价值观跟德云社还挺配的。

07

加盟Google,参与Golang语言开发

2000年,57岁的肯·汤普森在贝尔实验室退休。是的,这哥们的整个职场生涯都是在贝尔实验室度过的,期间有几年去了大学教UNIX系统课程。

然而,退休后这位老爷子也闲不住。

2006 年,肯·汤普森加入了 Google 公司。看看吧,谁说程序员做到35岁以后就找不到工作?关键还是技术过硬,别做了10几年技术还是写CRUD。玩技术的要么越钻越底层,要么就高屋建瓴搞架构,千万别原地踏步。

加入谷歌后,肯·汤普森又搞了一件大事。

他跟其它优秀的科学家一起开发了Go语言,也就是Golang。主要开发者有:肯.汤姆逊(Ken Thompson)、罗布.派克(Rob Pike)和罗伯特.格里泽默(Robert Griesemer)。另外两位也是大神,有机会再仔细写写。

Go语言不用多介绍了,有人形容Go语言:Go = C + Python , 说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。

国内不少科技公司都是Go的拥护者。比如七牛云的CEO许式伟,就是国内较早一批Go的使用者,他还出版了《Go语言编程》一书。

08

写最骚的代码,开最酷的飞机

肯·汤普森并没有像许多技术大神那样,走上技术创业的道路,成就更大的商业梦想。

他在贝尔实验室、谷歌,一直从事自己热爱的开发工作。

除了写程序之外,肯·汤普森是一位狂热的飞行爱好者,并且还获得了飞行执照。

闲暇之余,他会跟同事们一起自驾,来一场说走就走的飞行。你不用羡慕大神的生活,其实你也可以拥有,但首先你得有架飞机。

没有飞机也不用沮丧,说不定哪天,你用滴滴打飞机,就能叫到他。

你以为大神光是开私人飞机就完事了?肯·汤普森就算是爱好也要玩到极致。

1992年他特意到莫斯科,玩了一把米格29战斗机。不想开战斗机的飞行员不是好骑手。有钱、有闲、有胆,就这么任性,你有办法吗?

09

结语

肯·汤普森,对计算机软件业的发展,贡献是巨大的。不仅是UNIX系统发明人,在他的职业生涯里还开发了B程序语言(C语言的前身),UTF-8编码,ed文本编辑器,以及参与开发了Go程序语言。

除了获得图灵奖之外,他还先后获得了多项至高荣誉:

1994年,他获得了IEEE(电气和电子工程师协会)计算机学会先锋奖。

1998年,被授予美国国家科技奖章。

1997年,入选计算机历史博物馆名人录。

最后,以作家罗兰的一句名言与你共勉:“成功的意义应该是发挥了自己的所长,尽了自己的努力之后,所感到的一种无愧于心的收获之乐,而不是为了虚荣心或金钱。”


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK