自图灵奖诞生以来,其获得者一直都是计算机领域的科学家与学者,而在所有这些界的图灵奖中只有唯一的一届有个例外,那就是Ken ThompsonDennis M. Ritchie,他们都是计算机软件工程师。

Ken Thompson,1943年出生于美国新奥尔良。1960年,Ken进入加州大学伯克利分校主修电气工程。1965年从伯克利毕业后,又花了一年的时间在该校取得了电子工程硕士的学位。不知道是时代造就英雄,还是英雄顺应时代而生,在Ken读书期间,正好赶上了计算机时代蓬勃发展的起步阶段,自小喜欢电气的Ken接触到计算机后,立即完全沉迷了进去,从1962年的开始,他就在学校的计算机中心找到份工作,专门负责程序的编写。这也为其后他一手开创的Unix时代奠定了良好基础。

1966年离开校园的Ken加入了贝尔实验室。那时的计算机系统还是批处理的天下,程序员只能在又慢又笨重大型机上工作,一般来讲是先将程序卡片装入设备,然后再等1个小时再过来取回运算的结果,其效率之低可想而知。应市场的需要,当时贝尔实验室与麻省理工学院以及通用电气公司联合开发了一个多用户分时操作系统,取名为Multics(多路信息计算系统),Ken当时就是这个系统的开发人员之一,在开发Multics的期间,Ken创造出了名为Bon的编程语言。可惜因为这个系统不但开发周期长,成本高,而且庞大而缓慢,市场前景完全不被看好,最后贝尔实验室从这个项目中撤了出来。这对于Ken而言,简直是个巨大的不幸,因为他自己用写的一个“star travel”游戏就是完全基于Multics的,退出Multics项目意味着Ken将没有机器可以再玩这个游戏了。

面对此情此景,Ken作为一个创造者的本性立即体现了出来,于是他决定自己写一个操作系统来满足他玩游戏的需要,说干就干,Ken找到了一台废弃已久的老式PDP-7,并在这台机器上重写了他的游戏。在这个过程中,Ken有了一个主意,要开发一个全新的操作系统。利用PDP-7上的汇编语言,Ken只花了一个月就编写完了操作系统的内核,在这个一个月中,他一周一个内核,一个文件系统,一个编辑器和一个编译程序的完成。做完这个系统后,Ken将其命名为UNiplexed Information and Computing System,缩写为 UNICS,后来做了一下改动,称为UNIX。在开发第一版Unix的过程中,Ken还开发出一种新的语言,即C语言的前身——B语言,这种语言简洁明了,接近于硬件语言,第一版的Unix就是基于B语言来开发的。

Unix的出现开始虽然并不为大家所看好,但是却引起了贝尔实验室另一位同事的注意,这就是Dennis M. Ritchie,于是Dennis主动加入了进来共同完善这个系统。至此一场轰轰烈烈的Unix的传奇时代才真正的拉开了序幕。1972年,他们联手将Unix移植到当时最先进的大型机PDP-2上,由于Unix是如此的简洁、稳定与高效,以至于当时大家都放弃了PDP-2上自带的DEC操作系统,而完全改用Unix,这时的Unix已经开始走向成熟了。

在1973年之前Unix还不太为外界所知,到同年10月,Unix在IBM举办的操作系统原理专题研讨会上被提及,当Ken和Dennis在会上宣读论文并展示Unix后,整个会场轰动了,大家都立即涌上来索取这种新型的操作系统的程序。随着Unix的需求量的日益增加,Ken与Dennis决定将Unix进一步改写,以便可以移植到各种不同的硬件系统,由于Unix的原码中不少是用汇编完成,不具备良好的移植性,正好Dennis在1973年在B语言的基础上开发出了C语言,C语言灵活,高效性,与硬件无关,并且不失其简洁性,正是Unix移植所需要的法宝,于是旧版的Unix与C语言完美结合在一起产生了新的可移植的Unix系统。随着Unix的广泛使用,C语言也成为了当时最受欢迎的编程语言一直到延续至令。

说到Unix与C语言,还有一段小故事,当时安装了Unix的PDP-11被放在贝尔实验室供大家使用,有一天大家伙发现Ken总是可以得到最高的权限轻松进入他们的帐户,在贝尔实验室这种高人云集的地方,这简单是太不能容忍了,于是有若干高人跳了出来,仔细分析Unix代码,找到后门,修改后再重新编译整个Unix,当所有人都以为这个世界应该从此清静了的时候,却发现Ken还是很容易就取得了他们的帐户权限,为此大家郁闷不已。只到很多年后,Ken才道出其中的原委,原来代码里确实存在后门,不过并不在Unix代码中,而是藏在编译Unix的编译器里,每次编译器编译时就会自动加入后门代码,而当时整个贝尔实验室都用的是Ken所写的C编译器。

由于Unix与C语言的深远影响,1983年美国计算机协会将当年的图灵奖破例颁给了作为软件工程师的Ken与Dennis,并在当年还决定新设立一个奖项――软件系统奖,以奖励那些优秀的软件开发者,当然首个软件系统奖也是非他们两人莫属了。

虽然Unix与C语言让Ken与Dennis功成名就,但是他们两人都没有走那些IT史上自己创业的通用套路,而是一直留在贝尔实验室从事其喜爱的软件开发工作。到了2000年12月时,Ken正式退休,离开了工作了几十年的贝尔实验室开始享受他晚年的时光,但是Ken怎么能闲得下来呢,于是他干脆将他的另一个爱好:飞机,变成正式的职业,成为了一名专职的飞行员。至此,他所开创的Unix时代已经完全与他无关了。

【历史】- Unix时代的开创者Ken Thompson的更多相关文章

  1. Unix时代的开创者Ken Thompson

    自图灵奖诞生以来,其获得者一直都是计算机领域的科学家与学者,而在所有这些界的图灵奖中只有唯一的一届有个例外,那就是Ken Thompson与Dennis M. Ritchie,他们都是计算机软件工程师 ...

  2. [计算机、网络相关历史]unix简史

    本文2001年由台湾“网络农夫”所写,其人生平不祥,此文受鸟哥大力推崇,两人应该相识.文章写得很不错,应该是查了很多资料整理而成的,美中不足的是好多语句不通顺,国考语文绝对不及格,哈哈. 0.我的准备 ...

  3. 【说文解字】Unix与Linux

    历史 Unix操作系统是由Ken Thompson和Dennis Ritchie于1969-1970年发明. 它的部分技术来源可以追溯到Multics工程,后者因为过于庞大复杂而失败. 研究人员吸取教 ...

  4. (译文)The Linux Programming Interface:第1章(历史和标准)

    1 HISTORY AND STANDARDS (译者:鱼时代  校对:fgn) Linux 是UNIX操作系统家族中的一员,在计算机出现以来,UNXI已经有很长的历史了.在这一章中的第一部分将对Un ...

  5. 【Linux】- cat命令的源码历史

    转自:Cat 命令的源码历史 以前我和我的一些亲戚争论过计算机科学的学位值不值得读.当时我正在上大学,并要决定是不是该主修计算机.我姨和我表姐觉得我不应该主修计算机.她们承认知道如何编程肯定是很有用且 ...

  6. unix简史及应用

    Unix 简史 1965年时,贝尔实验室(Bell Labs)加入一项由奇异电子(General Electric)和麻省理工学院(MIT)合作的计画:该计画要建立一套多使用者.多任务.多层次(mul ...

  7. linux历史及基本知识

    1. Linux的历史: 1973年,Ken Thompson以C语言写出第一个正式版的UNIX内核, 1977年:重要的UNIX分支——BSD(Berkeley Sofeware Distribut ...

  8. Linux入门(历史与现状)

    Linux 入门之 历史与现状   Linux是一个计算机的操作系统,与windows类似,是一款系统软件.操作系统首先是一个计算机程序,使用计算机语言开发,比如C语言.VC语言.是计算机硬件和应用软 ...

  9. 第02课 操作系统及Linux 系统介绍

    1.操作系统介绍 操作系统(Operating System,简称OS),是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心. 操作系统的作用是管 ...

随机推荐

  1. 『ACM C++』HDU杭电OJ | 1425 - sort (排序函数的特殊应用)

    今天真的是累哭了,周一课从早八点半一直上到晚九点半,整个人要虚脱的感觉,因为时间不太够鸭所以就回头看看找了一些比较有知识点的题来总结总结分析一下,明天有空了就开始继续打题,嘻嘻嘻. 今日兴趣电影: & ...

  2. jzoj5195. 【NOIP2017提高组模拟7.3】A(递推,打表)

    Description

  3. 谈谈toLocaleString()

    如何理解toLocaleString()? toLocaleString()就是把数组转换为本地字符串.首先调用每个数组元素的toLocaleString()方法,然后使用地区特定的分隔符把生成的字符 ...

  4. Python学习 :深浅拷贝

    深浅拷贝 一.浅拷贝 只拷贝第一层数据(不可变的数据类型),并创建新的内存空间进行储蓄,例如:字符串.整型.布尔 除了字符串以及整型,复杂的数据类型都使用一个共享的内存空间,例如:列表 列表使用的是同 ...

  5. (数据科学学习手札13)K-medoids聚类算法原理简介&Python与R的实现

    前几篇我们较为详细地介绍了K-means聚类法的实现方法和具体实战,这种方法虽然快速高效,是大规模数据聚类分析中首选的方法,但是它也有一些短板,比如在数据集中有脏数据时,由于其对每一个类的准则函数为平 ...

  6. .Net 面试题 汇总(一)

    1.@page指令只能在_aspx___文件(填写扩展名)中使用,而@Control指令只能用在_ascx___文件(填写扩展名)中使用. 2.说明控件DataGrid,DataTable,DataV ...

  7. atlas+mysql主主集群实现读写分离

     atlas+mysql主主集群实现读写分离 前言: 目前线上系统数据库采用的是主主架构.其中一台主仅在故障时切换使用,(仅单台服务器对外提供服务,当一台出现问题,切换至另一台).该结构很难支撑较大并 ...

  8. JSON初体验(一):JsonObject解析

    在学校的呆了一段时间,马上又要回去工作了,不说了,我现在介绍一下json相关的内容 1.JSON数据格式(总的来说,json就是一个字符串) 1.整体结构 String json1 = "{ ...

  9. Xshell启动时显示丢失MSVCP110.dll解决方法

    成功安装xshell之后,在运行时却弹出“无法启动此程序,因为计算机中丢失MSVCP110.dll.尝试重新安装该程序以解决此问题”,很多人按照提示重装了还是出现同样的问题,本集教程将具体讲解如何处理 ...

  10. (转载)深入super,看Python如何解决钻石继承难题

    1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object): def __init_ ...