CSDN世上最杰出程序员,B 语言、Unix 之父为玩游戏,写了个操作系统


CSDN世上最杰出程序员,B 语言、Unix 之父为玩游戏,写了个操作系统
本文插图
作者 | 年素清责编 | 伍杏玲出品 | 程序人生(ID:coder_life)Unix之父——肯?汤普森(Ken Thompson)被称作“世界上最杰出的程序员” , 他自学编程 , 26岁创造Unix , 改写了计算机操作系统的历史 , 并在古稀之年成为Go语言的共同开发者之一 。 笔者通过本文带你了解这位Unix之父的传奇一生 。 喜欢逻辑学 , 自学编程1943年 , 汤普森出生在美国新奥尔良 。 上小学时 , 有一堂课讲二进制 , 喜欢逻辑的他立即被迷住了 , 他做了很多二进制运算 , 还借助一台十进制计算器扩展到各种进制 。 进入中学阶段 , 汤普森又迷上了电子器件 , 他曾自己制作无线电、示波器和放大器 。 1960年 , 汤普森考入加州大学柏克莱分校 , 攻读电气工程专业 。 大二时 , 他接触到模拟计算机 。 他在上面做了很多相关的二进制计算 , 但他嫌解释程序太慢 , 不能直接用汇编编程 。 在暑假里 , 他想方设法弄到了解释程序的源代码清单 , 在不懂程序语言的情况下 , 仔细研读 , 终于学会了编程 , 并在学校找到编程的工作 。 1965年本科毕业 , 汤普森留校 。 有个教授为他申请了硕士 , 师从著名的信息论和博弈论专家埃尔温?伯利坎普(Elwyn Berlekamp) 。 伯利坎普问他为什么学编程时 , 汤普森说:“因为我从小喜欢逻辑学 。 ”据汤普森回忆 , 他读硕期间 , 大部分都是靠自学 。 从入学到硕士毕业 , 汤普森仅仅用了一年的时间 。 为了玩游戏 , 动手设计操作系统1966年 , 汤普森加入贝尔实验室 。 1968年 , 汤普森参与了贝尔实验室与麻省理工学院、通用电气公司联合开发的一个多用户分时操作系统 , 取名为Multics(多路信息计算系统) 。 一年后 , 贝尔实验室认为Multics系统周期长、成本高、前景不佳 , 便决定撤出 。 汤普森非常失落 , 他自己写的一款叫做“star travel”的游戏就是完全基于Multics的 , 退出Multics项目意味着他将没有机器可以玩这个游戏了 。 于是汤普森决定自己设计一个操作系统来玩游戏 , 他本来打算向实验室申请在DEC-10上写 , 然而没有申请到 , 只能找到了一台废弃已久的老式PDP-7小型机 , 虽然称为小型机 , 也有一个房间大 。 汤普森先在这台机器上重写了游戏 , 接着他用一周时间设计出操作系统的内核 , 再用一周时间创造出文件系统 , 一周时间写编辑器 , 一周时间写编译程序 , 最终在一个月内编写完了整个操作系统 。 汤普森将其命名为UNICS (UNiplexed Information and Computing System) 。 后面陆续做了一些改动和优化 , 便有了第一版UNIX操作系统 。 这一年 , 汤普森年仅26岁 。 共获图灵奖Unix的诞生在贝尔实验室并没有惊起多大的波澜 , 只有一位叫做丹尼斯?里奇(Dennis M. Ritchie)的同事对它表现出了不小的兴趣 , 主动请求加入进来共同完善这个系统 。 1972年 , 汤普森与里奇共同将Unix移植到了当时最先进的大型机PDP-2上 。 由于Unix的简洁、稳定与高效 , 大家纷纷放弃了PDP-2上自带的DEC操作系统 , 完全改用Unix 。 尽管此时的Unix在两人的努力下趋于完善 , 但外界不为所知 。 1973年10月 , 在IBM举办的操作系统原理专题研讨会上 , 汤普森与里奇宣读了相关的论文并展示了Unix , 整个会场为之轰动 , 大家都立即涌上来索取这种新型的操作系统的程序 。 随后 , 业界对Unix的需求日益增加 , 两人决定将Unix进一步改写 , 以便可以将它移植到各种不同的硬件系统 。 最终 , 他们将Unix与C语言完美地结合在一起 , 产生了新的可移植的Unix系统 。 正式推出后 , 改写了计算机的历史 。 鉴于Unix的诸多优点 , 人们将它称为是软件界的“瑞士军刀” 。 一位贝尔高级主管形容Unix是继晶体管以后的第二个最重要发明 。 两位发明者谦虚地说:“就其受公众瞩目程度而言 , Unix确实是一项重要的开发” 。 由于Unix深远影响 , 1983年美国计算机协会将当年的图灵奖破例颁给了汤普森与里奇 , 并在当年新设立了一个奖项――ACM Software System Award(软件系统奖) , 主要颁发给开发出具有长远影响力软件系统的机构或个人 , 而汤普森与里奇则成了首届获奖者 。 惨淡的职业生涯1980年代 , 汤普森与C++语言之父Bjarne Stroustrup、图灵奖获得者之一Brian Kernighan等几位计算机大佬合作 , 为朗讯公司开发Plan 9操作系统 , 该项目的初衷是希望能够开发出取代Unix的新一代分布式多用户和图形化的操作系统 , 在1992年、1995年先后发布了两个正式版本 。 但此时Linux异军突起 , 很快抢夺了市场 , Plan 9的发展也受到了限制 。 1990年代后期 , 朗讯公司不得不取消了Plan 9项目 。 不久之后 , 朗讯又启动了Inferno操作系统研究项目 , 汤普森再次参与其中 。 1997年 , 发布了Inferno第一版 , 并用在了朗讯的两个产品之中 , 为此公司还成立了专门的业务部门 。 然而 , 此时互联网悄然兴起 , Sun公司开发的Java开始占据主流市场 。 因为失败的营销和运营模式 , Inferno并没有在互联网大潮中占得一席之地 , 三年后 , Inferno惨淡收场 , 知识产权被出售给英国公司Vitanuova 。 Go语言的共同创造者2007年9月 , 汤普森以优秀工程师的身份加入Google , 与之前在贝尔实验室时的老同事罗布?派克(Rob Pike) , 一起为Google设计基础设施 。 他的工作内容主要涉及操作系统方面 。 他在《编程人生》一书中所说 , 虽然他对Google大规模海量用户的计算环境以及相关的制度还不太适应 , 他还没有资格提交代码 , 但他总体上还是很喜欢这里的工作 。 2009年11月 , 汤普森与派克一起公布了他们的工作的第一个成果——Go语言 , 这是一款带垃圾收集、编译型的并发系统语言 , 一经问世便引起了广大的关注 。 世界上最杰出的程序员除了Unix和Go语言之外 , 汤普森还间接地发明了许多计算机编程相关的产物 。 早在开发Multics的期间 , 他便创造出了一种叫做“Bon”的编程语 。 为了开发Unix , 汤普森开发了一种新的语言——B语言 , 后来成了里奇开发C语言的基础 。 受导师伯利坎普的影响 , 汤普森还曾开发了一个名为Belle的国际象棋专用计算机 , 据说曾经打遍天下无敌手 , 他还编写了一个程序扩展象棋残局库 。 此外 , 汤普森在开发编辑器的过程中发明了正则表达式 , 在开发Plan 9操作系统的过程中发明了UTF-8编码 。 因为他的这些成就 , 一生荣誉颇多 。 除了1983年被授予图灵奖之外 , 他在1994年获得由电气和电子工程师协会颁发的计算机学会先锋奖 , 1998年被授予国家科技奖章 , 并于1997年入选计算机历史博物馆名人录 。 业界对他的评价极高 , 称他是“世界上最杰出的程序员” 。 有意思的是 , 尽管汤普森在计算机方面成就显赫 , 但他却建议自己的儿子去读生物而非计算机 , 理由是计算机发展太慢了 。 对此 , 你怎么看?


推荐阅读