C语言的发展历史大概经历了 5 个阶段,如下图所示:
C语言的发展颇为有趣,它的原型是 ALGOL 60 语言(也就是算法语言 60),也称A语言。
ALGOL 60 是一种面向问题的高级语言,它“离硬件比较远”,不适合用于编写系统程序。ALGOL 60 是程序设计语言“由技艺转向科学”的重要标志,具有局部性、动态性、递归性和严谨性等特点。
1963 年,剑桥大学将 ALGOL 60 语言发展成为 CPL(Combined Programming Language),CPL 在 ALGOL 60 的基础上与硬件接近了一些,但规模仍然比较宏大,难以实现。
1967 年,剑桥大学马丁·理查兹对 CPL 进行了简化,推出了 BCPL(Basic Combined Programming Language)。BCPL 是计算机软件人员在开发系统软件时作为记述语言使用的一种结构化程序设计语言,它能够直接处理与计算机本身数据类型相近的数据,具有与内存地址对应的指针处理方式。
在 20 世纪 70 年代初期,美国贝尔实验室的肯·汤普森对 BCPL 进行了修改,设计出比较简单而且“很接近硬件”的语言,取名为B语言。B语言还包括了汤普森的一些个人偏好,比如在一些特定的程序中减少非空格字符的数量。
和 BCPL 以及 FORTH 类似,B语言只有一种数据类型——计算机字。大部分的操作将其作为整数对待,例如进行+、-、*、/操作;但进行其余的操作时,则将其作为一个复引用的内存地址。
在许多方面,B语言更像是一种早期版本的C语言,它还包括了一些库函数,其作用类似于C语言中的标准输入/输出函数库。
由于B语言过于简单,数据没有类型,功能也有限,所以美国贝尔实验室的丹尼斯·M·里奇在B语言的基础上设计出了一种新的语言,取名为C语言,并试着以C语言编写 UNIX 操作系统。1972 年,丹尼斯·M·里奇完成了C语言的设计,并成功地利用C语言编写出了操作系统,从而降低了操作系统的修改难度。
1978 年,C语言先后被移植到大、中、小、微型计算机上,风靡世界,成为应用最广泛的几种计算机语言之一。
1989 年,美国国家标准协会(American National Standard Institute,ANSI)发布了第一个完整的C语言标准——ANSI X3.159-1989,简称 C89;1994年,国际标准化组织(International Organization for Standardization,ISO)修订了C语言的标准。
C语言标准 C99 是在 1999 年颁布、在 2000 年3月被 ANSI 采用的,正式名称是 ISO/IEC 9899:1999。