C语言是在什么语言的基础上发展起来的?

Python038

C语言是在什么语言的基础上发展起来的?,第1张

C语言的前身是1967年由Martin Richards为开发操作系统和编译器而提出的两种高级程序设计语言BCPL和B.BCPL。Ken Thompson在BCPL的基础上,提出了新的功能更强的B语言,并在1970年用B语言开发出UINX操作系统的早期版本。BCPL语言和B语言都属于“无数据类型”的程序设计语言,即所有的数据都是以“字”(Word)为单位出现在内存中,由程序员来区分数据的类型。

1972年,贝尔实验室的Dennis Ritchie在BCPL语言和B语言的基础上,又增加了数据类型及其他一些功能,提出了C语言,并在DEC PDP-11计算机上实现。以编写UINX操作系统而闻名的C语言,目前已经成为几乎所有操作系统的开发语言。应当指出的是,C语言的实现是与计算机无关的,只要精心设计,就可以编写出可移植的(Portable)C语言程序。

到20世纪70年代末,C语言已经基本定型,这个C语言版本现在被称为“传统C语言”。1978年,Kernighan和Ritchie编著的《C程序设计语言》出版后,人们开始关注起程序设计语言家族的这个新成员,并最终奠定了C语言在程序设计中的地位。《C程序设计语言》也成为历史上计算机科学领域最成功的专业书籍之一。

当年C语言还是一种与硬件相关的语言,为了让它能够运行于各种类型的计算机上,即各种硬件平台(Hardware platforms)上,人们就提出了多种相似但却常常不能相互兼容的C语言版本。这就出现了一个很严重的问题:能够在一台机器上运行的C语言程序往往不能够在另外一台机器上运行,除非程序被重新编写。因此,退出C语言标准的呼声日益强烈。1983年,美国国家标准委员会(American National Standards Committee,ANSC)下属的计算机与信息处理部(X3)成立了“X3J11技术委员会”,专门负责制定“一个无二义性的硬件无关的C语言标准”。1989年,“标准C”诞生。1999年,这个标准被更新为“INCITS/ISO/IEC9899-1999”(即C99)。

C 语言由一系列旨在进行系统编程的语言演变而来,系统编程就是编写像编译器、汇编器、编辑器以及最终的操作系统这样的程序。麻省理工学院有一个与贝尔实验室合作的 Multics 项目,它计划用一种高级语言编写系统的所有部分(这在 1965 年那时候是一个新想法)。他们打算使用 IBM 的 PL/1,但它非常复杂,而且承诺的编译器也没有及时交付。

当 肯·汤普逊Ken Thompson 开始研究后来的 Unix 时,他在 BCPL 的基础上创造了一种更简单的语言,他称之为 B 语言。在 1969 年,他为搭载了第一个 Unix 原型系统的 PDP-7 计算机实现了这种语言。

BCPL 和 B 都是“无类型”语言。也就是说,它们只有一种数据类型,即整数。DEC 公司的 PDP-11 计算机大约在 1971 年投入使用,它搭载了第一个真正的 Unix 系统。PDP-11 支持几种数据类型,特别是 8 位字节和 16 位整数。因此,一种同样支持几种数据类型的语言是更好的选择。这就是 C 语言的起源。

C 语言最初只在 Unix 上使用,尽管过了一段时间,也有了用于其他机器和操作系统的 C 语言编译器。大多数情况下,它被用于系统级的编程,涵盖了相当多有趣的领域,还有很多用于管理 AT&T 电话网络运营的系统。