Unix 与 C 语言的关系

在服务器领域,最著名的系统莫过于Unix了,即便Linux也是类Unix的操作系统。Unix 是用 C 语言编写的,而且是世界上第一个用 C 语言编写的操作系统。但是 Unix 是怎么产生的?C 语言又是怎么产生的?Unix 为什么要用 C 语言来编写?相信看完这篇文章你很快就会有了答案。

Multics 和 Unix

1964年,在 Unix 诞生之前,美国贝尔实验室、通用电气、和麻省理工学院联合开发了一个项目,叫做 Multics操作系统。Multics 在当时取得了巨大的成功,因为它给了人们一个真正可用并且很稳定的操作系统。当时从学校到政府机关,到处都在安装 Multics。

但是时间到了 1969年,因为种种原因,贝尔实验室的 Ken Thompson 和 Dennis Ritchie 决定放弃Multics,于是贝尔实验室退出了这个项目。Ken Thompson 和 Dennis Ritchie 决定开发一个更为简单并且高效的操作系统,并把它命名为 Unix,于是他们俩就成为了 Unix 之父。

和 Unix 相比,Multics 有两个比较致命的缺点,一是需要安装在非常昂贵的机器上,普通的计算机没有办法安装。二是设计非常复杂,这也是贝尔实验室的工程师退出的主要原因。不过 Ken Thompson 和 Dennis Ritchie 还是从 Multics 上得到很多启发,可以说 Unix 是 Multics 的简化以及更新。

说到这里,C 语言还没有出场,因为它在那个时候还没有被发明出来。Unix 操作系统的第一个版本是纯粹用汇编语言编写出来的。一直到了 1974年,第四个版本才改用 C 语言进行开发。在讲 C 语言之前,我们还不得不先说一下 BCPL 和 B 语言。

BCPL 与 B 语言

Ken Thompson 和 Dennis Ritchie 最初用汇编语言来开发 Unix,因为在那个时候,所有的操作系统都是用汇编语言来开发的。不过当时 Multics 是一个例外,Multics 项目组使用了 PL/1 来进行开发。它的价值就在于向世人展示了用一门高级语言也可以开发出一套操作系统。Ken Thompson 和 Dennis Ritchie 也受到了鼓舞,他们决定用汇编之外的语言重新开发 Unix。他们最初的选择是 BCPL。BCPL 最早是由 Martin Richards 发明用来开发编译器的语言。但是 Ken Thompson 和 Dennis Ritchie很快发现,如果他们想在小型计算机 DEC PDP-7 上使用 BCPL,就需要对这个语言本身进行一些修改。于是就产生了后来的 B 语言。

B 语言作为系统开发语言,也存在很多的缺点,于是后来它又被改进为 NB 语言 (New B)。可是 NB 还是有很多的问题,于是 Dennis Ritchie 就又发明了 C 语言,最终在 1974年,Ken Thompson 和 Dennis Ritchie 一起用 C 语言重新编写了第四版的 Unix 系统。现在,C 语言已经成为了操作系统开发最常用的编程语言。

通往 C 语言与 Unix 之路

Dennis Ritchie 曾经解释过自己为什么要发明 C 语言,以及使用 B 语言过程中遇到的一些困难:

  • 只能处理计算机字:B语言所有的操作都是通过计算机字来处理的,在那个时候,能够处理字节的编程语言对工程师们来说是一个梦。

  • 没有类型:准确的说,B语言只有一种类型,计算机字。如果你有一个字符串,可能你需要把它分成多个变量来保存,比如一个21个字符的字符串,就需要 6 个变量。

  • 不支持浮点类型运算:在那个时候,大部分硬件已经都可以开始支持浮点运算了,但是 B 语言还不支持这种操作。

B 语言的这些问题,开发低效,在机器上运行缓慢等等,都迫使 Dennis Ritchie 发明一种新的编程语言。最开始被称为 New B,后来逐渐演化成了 C 语言。

C 语言解决了 B 语言的很多缺陷,并很快成为了开发操作系统最流行的一种编程语言。新版本的 Unix 以及今天很多类 Unix 的操作系统都是用 C 语言开发出来的。

好了,讲到这里,我想大家都清楚了 Unix 和 C 语言是怎么来的了,以及为什么要用 C 语言来编写 Unix。现在有很多非常流行的语言比如 Java 和 Python,它们是一种更高级的编程语言,是在 C 语言这一层之上的。但是如果大家想做设备驱动或者系统内核模块的修改,还是离不开 C 语言这把利器。

来源:https://blog.csdn.net/jfchef/article/details/106562676

操作系统 VS 编程语言 UNIX VS C语言相关推荐

  1. c语言吗 程序语言,编程语言为什么从c语言开始,那有没有a语言b语言呢?

    实际上没有A语言叫法. B语言 B语言是贝尔实验室的计算机先驱Ken Thompson 和 Dennis Ritchied与1969年设计开发.他们的主要其他功绩还有Unix操作系统和C语言.可以说C ...

  2. 为什么中国开发不出流行的操作系统和编程语言?

    " 知乎有两个帖子很有意思,中国能不能写出操作系统?中国为什么没有自己的编程语言? 看了很多回答,有的答案写的很认真,按照编程语言出现的时间顺序等梳理:有的也非常认真,但是逻辑是错的:还有一 ...

  3. 操作系统及编程语言历史以及shell命令

    操作系统OS:Windows,Linux,Windows,Android,iOS等 操作系统的作用:向下控制硬件,向上支持软件的运行,同时运行多个程序 操作系统发展历史:用B语言写了Unix系统(兼容 ...

  4. photoshop是用什么编程语言开发的_为什么中国开发不出流行的操作系统和编程语言?...

    作者:Stitch 出处:www.cnblogs.com/StitchSun/p/12889614.html 知乎有两个帖子很有意思,中国能不能写出操作系统?中国为什么没有自己的编程语言? 看了很多回 ...

  5. 为什么中国开发不出流行的操作系统和编程语言呢?

    中国为什么不能开发出自己的编程语言和流行的操作系统呢?是中国的IT产业就这么落后吗? 看了很多回答,有的答案写的很认真,按照编程语言出现的时间顺序等梳理:有的也非常认真,但是逻辑是错的:还有一种是搞笑 ...

  6. 2020年6月编程语言排行榜:C语言蝉联榜单第一

    IOBE公布了6月份编程语言排行榜. C语言蝉联榜单第一,随后分别是Java.Python.C++.C#.前20名排行如下: 5月份的时候,C就已经超越Java了,登上第一的宝座,为了重回第一,C语言 ...

  7. 常用的编程语言介绍以及各语言的特点(前端,前端框架,后端)

    常用的编程语言介绍以及各语言的特点 编程语言(programming language),是用来定义计算机程序的形式语言.它是一种被标准化的交流技巧,用来向计算机发出指令.一种计算机语言让程序员能够准 ...

  8. 学习Unix,可从事什么样的工作(1)《精通Unix下C语言与项目实践》读书笔记(3)...

    <精通Unix下C语言编程与项目实践>读书笔记(new) 文章试读 不拘一个遍程序系列:编程序不能一个脑袋钻到底,有时要学会变通,即所谓的曲线救国.一.二.三.四 职场规划:一些杂七杂八的 ...

  9. python是中国的吗-操作系统3:编程语言和操作系统是什么关系?

    首先需要知道编程语言是可运行的计算机程序的一种代名词,说白了就是可以驱动计算机内部各种电路的电信号.而操作系统本身是一个程序,也是运行在计算机上的,也是编程语言写出来的.最早的计算机没有真正意义上的操 ...

最新文章

  1. nslookup type值_nslookup命令详解【转】
  2. linux创建多个子进程,[Linux进程]使用fork函数创建多个子进程
  3. mysql语言的简介_谁能帮我介绍一下 MY SQL ?
  4. C++利用访函数进行选择排序
  5. centos7重新加载服务的命令_Centos7 常用防火墙操作命令
  6. Luogu P3455 [POI2007]ZAP-Queries
  7. 【XML DOM】解析XML Dom
  8. python pyautogui_python模块------pyautogui
  9. C语言和设计模式(责任链模式)
  10. 小强的HTML5移动开发之路(51)——jquerymobile中改善页面访问速度
  11. react build后直接从浏览器打开
  12. Python操作数据库遇到的问题
  13. ionic3学习之懒加载
  14. 软件评测师考试需要知道什么?
  15. 究竟是谁弄脏了我们的世界
  16. 云计算十字真言及其在小博无线的实践
  17. 贴片工字电感的封装及结构
  18. HTML5 SVG蝴蝶飞舞动画3D效果
  19. 完成知乎项目的登录和注册功能(一)
  20. 国外兼职网站列举 79个

热门文章

  1. hibernateTemplate的load方法
  2. Happy New Year
  3. @Singleton能保证单例吗
  4. AngularJS快速入门指南04:指令
  5. Objective-C Runtime
  6. 使用RawSocket进行网络抓包
  7. 将动态库添加到VC程序中
  8. 关闭不安全端口的脚步
  9. MongoRepository
  10. 安装php5、卸载php、安装php7的教程