Unix之父和Go语言设计者竟然是同一个人!看Ken Thompson的传奇生涯

简评:相信作为程序员的我们对Unix一定不陌生吧?什么?你没用过Unix(小编我其实也没用过),那你一定知道Linux吧,没错,Linux就是由Unix演变过来的,而它是Thompson设计的。如果你喜欢追求新技术,学习新语言,那么你或多或少也听过Go语言吧!没错它也是Thompson设计的,除此之外还有像B语言、C语言等等。如果大家有志向研究操作系统或是发明一种新的语言的话,那就一定得了解了解Thompson的故事啦!小编将为各位读者勾勒出Ken Thompson的传奇生涯。


如果你对计算机有一定了解,那么 Unix 一定不会陌生了。

1965 年时,贝尔实验室加入一项由通用电气和麻省理工学院合作的计划;该计划要建立一套多使用者、多任务、多层次(multi-user、multi-processor、multi-level)的 MULTICS 操作系统。直到 1969 年,因 MULTICS 计划的工作进度太慢,该计划被停了下来。当时,Ken Thompson 已经有一个称为"星际旅行"的程序在 GE-635 的机器上跑,但是反应非常慢,正巧被他发现了一部被闲置的 PDP-7(Digital 的主机),Ken Thompson 和 Dernis Ritchie 就将"星际旅行"的程序移植到 PDP-7 上。而这部 PDP-7 就此在整个计算机历史上留下了芳名。

MULTICS 其实是"Multiplexed Information and Computing Service"的缩写。然而在 1970 年时,那部 PDP-7 只能支持两个使用者,当时,Brian Kernighan 就开玩笑地称他们的系统其实是:"UNiplexed Information and Computing Service",缩写为"UNICS",后来,大家取其谐音,就称其为"UNIX"了。1970 年可称为"UNIX 元年",而 Ken Thompson 被人们称为“Unix 之父 ”。

1943 年 2 月 4 日 Ken Thompson 出生于美国新奥尔良。在《编程人生》一书的访谈中,他回忆自己小学时受到的教育很烂,但有一堂课讲了二进制,自小喜欢逻辑的他立即被迷住了,他做了很多二进制运算,还借助一台十进制计算器扩展到各种进制。

1960 年, Ken Thompson 如愿进入加州大学伯克利分校主修电气工程。二年级的时候他有机会使用一台模拟计算机,因为没有别人抢,实际上成了他的专用。解释程序太慢,他不得不直接用汇编编程,并从中学会了什么是计算机。后来一个假期他又得到了解释程序的源代码清单,在不懂程序所用语言的情况下,他仔细研读,学会了编程,并在学校找到编程的工作。1966 年他加入了贝尔实验室。

Ken Thompson 除了是 Unix 的发明人之一,他同时也是 C 语言前身 B 语言的作者,第一版的 Unix 就是基于 B 语言来开发的。然而 B 语言在进行系统编程时不够强大,所以 Thompson 和 Ritchie 对其进行了改造,并于 1971 年共同发明了 C 语言。1973 年 Thompson 和 Ritchie 用 C 语言重写了 UNIX。安装于 PDP-11 的机器之上。

1983 年,美国计算机协会将图灵奖授予 Ken Thompson 与Dennis Ritchie。2000 年 12 月时,Thompson 退休,离开贝尔实验室,成为了一名飞行员。

Ken Thompson 与 Dennis M.Ritchie

不过, Ken Thompson 的传奇生涯并没有结束。2006 年,汤普逊加入 Google 公司工作,参与设计了 Go 语言。在 2016 年,GO 语言成为热门度上升最快的编程语言。


本文转载自:计蒜课微信公众号 原文有删改

时间: 2024-07-29 16:56:52

Unix之父和Go语言设计者竟然是同一个人!看Ken Thompson的传奇生涯的相关文章

我们从UNIX之父丹尼斯身上学到了什么

我们大家都熟知的UNIX之父,同时也是C语言支之父丹尼斯·里奇( Dennis MacAlistair Ritchie )在上周离开了大家.但是,他对计算机科学及相关领域的的影响之大,甚至可与计算机之父图灵以及最近去世的乔布斯齐名(虽然会有一些争议,但历史告诉我们的确就是这样). UNIX ,是一个强大的多用户.多任务操作系统,支持多种处理器架构.UNXI是这样发展而来的,当时UNIX开发者之一的Ken Thompson开发了一个叫Space Travel的游戏,在MULTICS上运行后他发现这

验证码-c语言,学生信息管理系统。看不懂错误提示??

问题描述 c语言,学生信息管理系统.看不懂错误提示?? #include #include #include #include #include #define N 100 typedef struct student { int num; //学号,姓名,年龄,性别,出生年月,地址,电话, char name[18]; char sex; int age; int y, m; int tel; char add[30]; char mail[20]; int res; int stu; } S

C语言 计算器问题(请大神看一下)

问题描述 C语言 计算器问题(请大神看一下) 123+213-67*34+345/23*45*(34+34-345+245+567)=359 183 可我的程序等于-363067 代码如下 #include#include#include#define MAXZISE 1000struct oper{ char name; int priority; int opnum;};typedef struct oper OPERATOR;OPERATOR opStack[MAXZISE];int OT

C语言--有木有大神帮帮看看我的折半法代码,已经自己研究了好长时间,还是弄不出来???

问题描述 C语言--有木有大神帮帮看看我的折半法代码,已经自己研究了好长时间,还是弄不出来??? #include #include #define M 3 void inputName(char name[][121],double money[]); void ouput(char name[][121],double money[]); void sortPay(char name[][121],double money[]); void sortName(char name[][121]

新人问一个c语言问题,麻烦各位帮忙看一下

问题描述 新人问一个c语言问题,麻烦各位帮忙看一下 一个小型成绩管理系统:#include #include #define N 40int Readscore(int score[]long id[]);int Linsearch(long id[]long mint n);void Linsort(int score[]long id[]int n);void Selectsort(int score[]long id[]int n);int Binsearch(long id[]long

有人懂fortran语言吗?可以帮我看下代码,写成c语言吗?十分感谢!

问题描述 有人懂fortran语言吗?可以帮我看下代码,写成c语言吗?十分感谢! FUNCTION XTERP(XCC,X,Y,NDEG,NPTS,DINT,IER) XTR 0001 C XTR 0002 C FUNCTION PERFORMS NEWTONS INTERPOLATION FOR DISCRETE DATA XTR 0003 C AS A FUNCTION OF ONE VARIABLE XTR 0004 C XTR 0005 C WHERE XC - INDEPENDENT

c语言-C语言寻找矩阵鞍点问题麻烦看看我的算法哪里有问题

问题描述 C语言寻找矩阵鞍点问题麻烦看看我的算法哪里有问题 我写了个算法,但是不知道为什么运行不出结果. 麻烦看看我的算法错在了哪里(请不要更换我的算法). 解决方案 /*寻找行里面最大的值所在列,找到后再看该元素是不是所在列的最小值,如果是则找到,否则下一行接着找,弱到最后一行都没有则没有鞍点*/ for(i = 0; i < n; i++) { max = a[i][0]; //记录行里面的最大值 column = 0; //记录行最大值所在列号 //找行最大值的列号 for(j = 1;

我想深入的系统的学习java语言,但是我不知道该看哪些方面的书?

问题描述 我想深入的系统的学习java语言,但是我不知道该看哪些方面的书?像html,JavaScript,jsp等,顺便推荐一下比较好的书名,请各位大侠指点一二!!谢了...还有就是我用的是eclipse工具. 解决方案 解决方案二:满江红开源网站很干净的网站没一个广告非赢利书有点少但是也很不错解决方案三:html,JavaScript其实没必要什么书籍,去网上找些实例学习学习会更快JSP方面可以看下孙卫琴的<TOMCAT与JAVAWEB详解>解决方案四:corejava解决方案五:深入学习

Unix和Linux下C语言学习指南

尽管 C 语言问世已近 30 年,但它的魅力仍未减退.C 语言继续吸引着众多的开发者,他们为了编写.移植或维护应用程序而必须学习新技能. 本文是为了满足对C语言初学者或想提高自身C语言修为的开发人员的需要而写的.希望对您的学习和工作有所帮助.您也许不赞同其中的某些方法,但我们希望您会喜欢其中的一些. 本文不介绍作为一个程序员应掌握得语言细节,而是与初学者分享自己的UNIX 下C语言编程学习经验;也不说明一个合格的编程人员应该掌握的计算机知识,比如:操作系统.数据结构与算法.数据库等等. 不管您出