26 岁创造 UNIX,退休后却成为一名飞行员
肯·汤普森,图源:维基百科
UNIX 之父、图灵奖得主、C 语言的前身 B 语言的开发者、操作系统 Plan 9 的主要作者、Belle(一个国际象棋程序)作者之一,这些成就都出自一人之手,编程史上从来不缺大人物,但是肯·汤普逊(一般称之为 Ken Thompson,肯·汤普森)绝对是一个传奇。
在《编程人生》一书的访谈中,肯·汤普森曾回忆:
“小学时受到的教育很烂,但唯独一堂课讲了二进制,从此我便被迷住,因为从小就喜欢逻辑,因此做了很多二进制的运算,甚至还借助一台十进制计算器扩展到各种进制。
”
汤普森 1943 年出生在美国新奥尔良。
1960 年,就读于加州大学伯克利分校主修电气工程,并取得电子工程硕士学位。
当时,他的论文导师是埃尔温·伯利坎普,同样也是一位传奇人物。
埃尔温·伯利坎普的博士导师是香农、Gallager 等大师,他发明了 Berlekamp 、Welch-Berlekamp 和 Berlekamp-Massey 等著名算法,还花了不少时间研究围棋等博弈游戏,他是组合博弈论的创始人之一。
1966 年,毕业后的汤普森被贝尔实验室聘用。
他跟丹尼斯·里奇(C语言创始人)在 Multics 操作系统上工作。
那时候,计算机还处在批处理的阶段,技术不够发达,程序员的工作效率不高,他们只能在既慢又笨重的大型机器上工作。
为了解决一系列问题,Multics 操作系统应运而生,它是由美国高级研究计划局资助、由麻省理工学院、贝尔实验室和通用电气公司的研究人员共同开发的分时操作系统。
可是好景不长,因为开发周期过长、成本过高,1969 年贝尔实验室决定撤出这个项目。
令汤普森最不开心的是他曾为 Multics 写过一个游戏《太空旅行》,这下也玩不了了。
为了继续玩游戏,汤普森找到了一台旧的 PDP-7 计算机,他重新编写了这个游戏,还花了一个月的时间开发了全新的操作系统 UNiplexed Information and Computing System(UNICS),后来改称为 UNIX。
UNIX 首次运行在 DEC PDP-7 上,图源:维基百科
在 UNIX 的开发过程中,汤普森决定 UNIX 需要一种系统编程语言。
于是他开发了 B 语言,也就是 C 语言的前身。
B 语言在进行系统编程时不够强大,所以 1973 年丹尼斯·里奇用 C 语言重写了 UNIX,安装在 PDP-11 计算机上。
随着后来 UNIX 的广泛使用,C 语言也成为了当时最受欢迎的编程语言延续至今。
坐着的肯·汤普森与丹尼斯·里奇一起在 PDP-11 旁工作,图源:维基百科
1980 年,汤普森与贝尔实验室的另一位工程师约瑟夫·康登开发了一款硬件辅助程序 Belle,一个会下国际象棋的计算机。
同年,汤普森当选为美国国家科学院和美国国家工程院院士。
1990年代带有液晶显示屏的压感国际象棋计算机,图源:维基百科
1983 年,汤普森被贝尔实验室任命为研究员。
他还协助丹尼斯·里奇在贝尔实验室创建了 Plan 9 和 Inferno 操作系统。
这一年,美国计算机协会将图灵奖授予肯·汤普森和丹尼斯·里奇。
2000 年底,汤普森从贝尔实验室退休了,他成为了一名飞行员。
在编程的世界里遨游半生,也想去真正的天空看看了。
如果你以为他的传奇生涯就这么结束了,那就太天真了。
2006 年,他又加入了 Google 公司,参与设计 Go 语言。
当提到他与其他 Go 语言的原始作者时,他说:
“当我们三个人(Thompson,Rob Pike 和 Robert Griesemer )准备开始开发 Go 的时候,纯粹是为了研究。
我们一起讨厌 C ++。
(笑声)回到 Go,我们开始的想法是,对于语言的每个功能都要碰头交流,因此不管什么原因,我们都不会在语言中添加多余的垃圾。
”
罗伯特·格瑞史莫,罗勃·派克和肯·汤普森,图源:谷歌
他认为优秀开发人员的标志是热情,虽然他是编程狂魔,但是他却不建议自己的儿子去读计算机,理由竟然是计算机发展太慢了。
大佬果然是大佬。
现在已经 77 岁的汤普森依然在编程路上不断探索,我们又怎么能停下脚步呢?
今天是 2 月 4 日,是肯·汤普森的生日,在这里我们要祝愿大佬生日快乐。
同样,今天也是立春的日子,一年的初始,也希望小伙伴们能保持初心,迎接新一年的工作和学习。
从零开始编写一个五脏俱全的图形操作系统
这是一本兼具趣味性、实用性与学习性的书籍。
作者从计算机的构造、汇编语言、C 语言开始解说,让你在实践中掌握算法。
在这本书的指导下,从零编写所有代码,30 天后就可以制作出一个具有窗口系统的 32 位多任务操作系统。
和所有“大全”系列图书一样,这本书涵盖了详尽的动手教程和实践信息,还提供了与所学内容相关的参考信息和背景资料。
它是关于 Linux 命令行和 shell 命令的相当全面的资源。
读完之后,你将可以轻松写出自己的 shell 脚本来实现 Linux 系统任务自动化处理。
本书极为实用,通过对 101 个 shell 脚本实例及其核心内容的讲解,展示如何在实际工作中利用 shell 脚本解决各种常见问题。
涉及的主要内容有:
简化 shell 脚本的工具和技巧,用户命令改进,UNIX 调校,用户管理,系统维护,网络资源处理,网站管理,Internet 服务器管理,OS X 脚本,云服务相关脚本,图像处理。
本书对 C 语言的基础知识进行了彻底剖析,内容涉及数组、函数、指针、文件操作等。
对于 C 语言语法以及一些难以理解的概念,均以精心绘制的示意图,清晰、通俗地进行讲解。
原著在日本广受欢迎,始终位于网上书店 C 语言著作排行榜首位。
本书最大特色是通过一种“现代方法”来介绍 C 语言,书中强调标准 C,强调软件工程,不再强调“手工优化”。
这一版中紧密结合了 C99 标准,并与 C89 标准进行对照,补充了 C99 中的最新特性。
本书分为 C 语言的基础特性、 C 语言的高级特性、 C 语言标准库和参考资料 4 个部分。
每章末尾都有一个“问与答”小节给出一系列与该章内容相关的问题及答案。
标签: