当前位置: 首页 > 科技观察

程序员盘点:从开发Unix系统到成为飞行员!他过着辉煌的一生

时间:2023-03-17 21:04:08 科技观察

1983年,美国计算机协会将图灵奖授予了肯·汤普森和丹尼斯·里奇。获奖理由是:“因为他们开发了通用操作系统理论并专门用于UNIX操作系统的实现。”翻译过来就是:“授予肯·汤普森和丹尼斯·里奇图灵奖,以表彰其在通用操作系统系统论领域的贡献,特别是UNIX操作系统的开发和实现。”老读者都知道老K每次都会引用一段英文,不过这次不是炫耀自己,而是介绍本文的主角肯·汤普森。在很多读者还没出生的年代,他就已经获得了计算机界的最高荣誉——图灵奖。01.计算机天才肯·汤普森的发展1943年出生,在他上小学的时候有一节关于二进制的课,他立刻被他对逻辑的热爱所吸引。在兴趣的驱使下,他做了很多相关的二进制计算,并借助十进制计算器将其扩展到各个领域。一种系统。其实老K小时候也有过类似的经历。我在初中的时候就对物理很着迷。我很早就开始研究了。牛顿在哪里烫头发?我想我的物理老师就是从那个时候开始有心理阴影的。肯·汤普森从小就是个好学生。他边玩边学,轻松考入加州大学伯克利分校,攻读电气工程学士学位。虽然,国外的大学不像国内的那么容易,在那里你可以放飞自我。然而,对于肯汤普森这样的大师来说,课程是如此简单,而且没有地方可以点。于是他迷上了一个新玩意儿:电脑。每天晚上,趁没人的时候,他就偷偷溜进机房,自学编程,写游戏,玩游戏,兴奋不已。大四的时候,大神心里还有点B树,因为他觉得自己不是在做本职工作,在打游戏,在编程,电子工程学的也不是很努力,所以他没有申请研究生。就在他准备收拾东西毕业的时候。一位教过他的老师Berlekamp教授为他申请了研究生并通过了。什么教授!想起老K大学毕业时的教授,论文修改八次,答辩两次才勉强毕业。同为教授,为什么差距这么大?当然,同样是学生,差别就这么大。在研究生阶段,KenThompson只用了一年就毕业了,你没有看错,他只用了一年就拿到了电气工程和计算机科学的硕士学位。02.加入贝尔实验室研究生毕业后,KenThompson的才华震惊了当时赫赫有名的贝尔实验室,并向他伸出了橄榄枝。然而,肯汤普森并不喜欢它。他觉得我年轻,有才华,头发多,理应有机会改变世界。但在贝尔实验室的再三邀请下,他勉强答应了访问。这次拜访没关系,他发现了海明码的发明者、信息论的发明者、晶体管的发明者……这些惊人的数字都出自贝尔实验室。肯汤普森想,像我这样的天才不应该在这里吗?于是他接受了贝尔实验室的offer。贝尔实验室03,搞砸了“Multics操作系统”项目1966年,KenThompson加入贝尔实验室,参与了一个名为“Multics操作系统”的项目开发。那个时代的计算机系统还处于批处理阶段,只能在缓慢笨重的大型机器上工作。需要先将程序卡加载到设备中,然后等待一个小时才能得到计算结果。不仅速度慢,而且还浪费纸张。因此,贝尔实验室联合麻省理工学院、通用电气,想打造一个多人、多任务、多层次的Multics操作系统。但由于大家过分追求完美,导致开发周期过长,成本高,短期内看不到产出。关于敏捷交付思想的重要性,可惜那个时代的人不这么认为。1969年,贝尔实验室无法忍受,决定退出该项目。对于程序员来说,搞砸一个项目是很常见的事情,就像老K在过去10年的职业生涯中搞砸的项目,他可以写出一个“破系列”。但令肯·汤普森失望的是,他不能再玩他编写的名为“星际旅行”的游戏了,因为这款游戏完全基于Multics。看看师傅,打游戏才是主要工作,上班只是个兼职。04.为了玩游戏开发了UNIX。如果是这样,那就自己开发一个操作系统,这样你就可以继续玩游戏了。有技术就任性。如果你不同意,你可以开发一个操作系统。所以别把程序员逼急了,他们连操作系统都能做,还有什么不会的?KenThompson找到了一台废弃已久的老旧PDP-7小型机,尽管它被称为小型机,但在当时有一个房间那么大!在这台机器上,他首先重写了游戏。游戏面世后,肯·汤普森还想过要开发一个全新的操作系统。恰在此时,他的妻子带着孩子回娘家住了3周,也就是说,他有整整3周的时间不受任何人打扰。于是他决定利用这段时间开发操作系统。凭着之前搞砸“Multics系统”的经验,他很快就完成了内核系统、文件系统、编辑器、编译系统,甚至一个月就写完了操作系统内核。这个故事告诉我们,一个男人要想做大事,家里没有老婆是多么的重要!K小姐,你看到了吗?看见?老K这个年纪一事无成是有原因的。一天查八次,就算你是国王,你也得不到荣幸吧?据说在系统完成后,KenThompson将其命名为UNiplexedInformationandComputingSystem,简称UNICS。但是不管怎么读都是一口,后来才改名为UNIX。经过一些改动,第一个版本的UNIX操作系统诞生了。那一年,肯汤普森只有26岁。05.UNIX对C语言的兼容性更好。1973年10月,在IBM举办的操作系统原理研讨会上,UNIX首次问世。当肯·汤普森和丹尼斯·里奇向人们宣读论文并展示UNIX之后,整个会场轰动一时,人们惊呼:靠,牛逼,你还能这么玩!后来,随着UNIX用户越来越多,KenThompson和DennisRitchie决定进一步重写UNIX,使其可以移植到各种硬件系统中。由于UNIX的很多源代码都是用汇编完成的,移植性不好,正好DennisRich在1973年在B语言的基础上开发了C语言。做硬件,又不失简洁,这是UNIX移植需要的法宝。于是旧版本的UNIX和C语言完美结合,产生了一个新的可移植的UNIX系统。随着UNIX的广泛使用,C语言也成为了当时最流行的编程语言,并一直延续至今。经典的UNIX设计哲学KISS就是在那个时候提出来的——KeepItSimple,Stupid。06、黑客与“后门”KenThompson还有一个颇受争议的行为,就是在UNIX中留下后门。没错,这哥们居然给代码下毒了。起初,UNIX系统是免费提供给贝尔实验室的所有人使用的。发现KenThompson总能进入大家的账户,于是同事分析了UNIX代码,重新编译了系统。令人惊讶的是,KenThompson仍然能够访问他们的帐户,但贝尔实验室的科学家们却束手无策。直到1983年,肯·汤普森(KenThompson)在他的图灵奖获奖感言中才揭开了这个秘密。原来,让他轻松“闯入”同事账户的秘诀并不在于UNIX代码,而在于编译UNIX代码的C编译器。KenThompson是编译器的开发者。666这个操作,你以为你看透了高手,只是玩不过他。自由软件之父、头发比他还多、胡子和他一样长的著名黑客理查德·斯托曼(RichardStallman)曾这样定义黑客。一个黑客必须具备三个特点:有趣和高智商、探索精神,而且三者必须同时满足。黑客追求的不是实用技术或金钱。老K,作为一名技术从业者,经过多年的努力,我已经满足了一种黑客精神:乐趣。当然,主要是别人玩的。自由软件之父理查德·斯托曼或许从这个角度更能理解肯·汤普森的行为。他没有违反道德准则。对于他来说,这件事只是一个笑话。不难发现,黑客的价值观与德云社是相当契合的。07.加入谷歌,参与了Golang语言的开发。2000年,57岁的肯·汤普森从贝尔实验室退休。是的,这个人在贝尔实验室度过了他的整个职业生涯,并在大学里教了几年UNIX系统课程。然而,老人退休了也不能闲着。2006年,肯·汤普森(KenThompson)加入了谷歌。看看,谁说程序员35岁就找不到工作了?关键是要有过硬的技术,不要10年以上的技术再写CRUD。玩技术的要么会钻到最底层,要么会从高处规划搭建架构,所以不要原地踏步。加入谷歌后,肯·汤普森又干了一件大事。他与其他杰出的科学家一起开发了Go语言,即Golang。主要开发人员是:KenThompson、RobPike和RobertGriesemer。另外两位也是高手,有机会也会认真写。Go语言就不用介绍了。有人这样形容Go语言:Go=C+Python,可见Go语言既有C静态语言程序的运行速度,又能实现Python动态语言的快速开发。国内很多科技公司都是围棋的支持者。比如七牛云的CEO徐世伟,就是围棋在中国的早期用户之一,他还出过一本书《Go语言编程》。08.写最酷的代码,开最酷的飞机肯·汤普森并没有像很多科技大神一样走上科技创业之路,实现更大的商业梦想。他一直在贝尔实验室和谷歌从事他热爱的开发工作。除了编写程序,肯·汤普森还是一位狂热的飞行爱好者,还获得了飞行员执照。空闲时间,他会和同事一起自己开车,想坐飞机就坐飞机。大神的生活不用羡慕,其实你也可以拥有,但首先你得有飞机。没有飞机也不要灰心,说不定有一天,你可以用滴滴打飞机给他打电话。你以为开私人飞机就大神了?肯汤普森即使是业余爱好也必须发挥到极致。1992年,他专程去莫斯科玩米格229战斗机。一个不想驾驶战斗机的飞行员不是一个好的骑手。有钱、自由、勇敢,就这么任性,什么都做不了?09.结语KenThompson为计算机软件行业的发展做出了巨大的贡献。不仅是UNIX系统的发明者,还开发了B编程语言(C语言的前身)、UTF-8编码、ed文本编辑器,职业生涯中还参与了Go编程语言的开发。除了获得图灵奖外,他还获得了多项最高荣誉:1994年获得IEEE(电气和电子工程师协会)计算机学会先驱奖。1998年获美国国家科学技术奖章。1997年,他被列入计算机历史博物馆名人录。……最后,用作家罗兰的一句名言勉励大家:“成功的意义应该是发挥自己的特长,竭尽全力,感受一种收获的无愧喜悦,不是为了虚荣或金钱。”