C
语言的历史,必须从ALGOL
——国际代数语言讲起。
ALGOL
是计算机发展史上首批产生的高级语言,当时还是晶体管计算机流行的时代, 由于ALGOL
语句和普通语言表达式接近,更适于数值计算,所以ALGOL
多用于科学计算机。
ALGOL
这个名称是算法语言(ALGOrithmic Language
)的简称, 这种语言不是计算机制造公司为某种特定机器设计的, 而是纯粹面向描述计算过程的,也就是所谓面向算法描述的。
ALGOL
是第一个清晰定义的语言,其语法是用严格公式化的方法说明的。
ALGOL
语言并没有被广泛的使用,但它是许多现代程序语言的概念基础。
1958年,ACM小组和以当时联邦德国的应用数学和力学协会GAMM在苏黎世把他们关于算法表示法的建议综合为一, 形成了Algol 58
,先被命名为IAL(国际代数语言,International Algebraic Language),后来改称Algol 58
。
1960年1月,图灵奖获得者艾伦.佩利(Alan J.Perlis)在巴黎举行的有全世界一流软件专家参加的讨论会上, 发表了"算法语言Algol 60
报告",确定了程序设计语言Algol 60
。1962年,艾伦.佩利又对Algol 60
进行了修正。
Algol 60
引进了许多新的概念如:局部性概念、动态、递归、巴克斯瑙尔范式BNF(Backus-Naur Form)等等。
Algol 60
是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科, 并为后来软件自动化及软件可靠性的发展奠定了基础。
1963年,英国剑桥大学推出了CPL
(Combined Programming Language
)语言。CPL
语言在Algol 60
的基础上接近硬件一些,但规模比较大,难以实现。
1967年,英国剑桥大学的Matin Richards
对CPL
语言做了简化, 推出了BCPL
(Base Combined Programming Language
)语言。
1969年,美国贝尔实验室的Ken Thompson以BCPL
语言为基础,又作了进一步的简化, 设计出了很简单的而且很接近硬件的B
语言(取BCPL
的第一个字母),并用B
语言写出了第一个UNIX操作系统。 但B
语言过于简单,功能有限。
1971年,美国贝尔实验室的D.M.Ritchie在B
语言的基础上开发了NEW B
语言,也就是我们现在说的C
语言。 最初,C
语言的主要客户是编译器设计者,这也就是为什么“数组是从0开始而不是从1开始的原因”(其实还有许多为编译器设计者设计的特性)。
1973年,Ken Thompson和D.M.Ritchie将UNIX用C
语言重写,UNIX VersionV
诞生,从此UNIX就和C
语言成了孪生兄弟。
随着C语言越来越受欢迎。 1978年,Brian W.Kernighan
和D.M.Ritchie以Steve Johnson
编写的PCC
这个C语言编译器 (后来这个编译器被广泛移植)为基础,编著了《The C Programming Language》(简称TCPL
), 人们把这个C语言版本称为K&R C
。
20世纪80年代,C语言广泛流行,许多人为其写变种, 各种C语言版本涌出。 因为C语言没有一个统一的标准,导致了它的代码无法在各种编译器上实现,C语言受到了变种松散的威胁,因此,C语言必须进行标准化。
version | 别名 | 编号 |
---|---|---|
C89 | ANSI C | ANS X3.159-1989 |
C90 | ISO C | ISO/IEC 9899:1990 |
C99 | ISO C | ISO/IEC 9899:1999 |
C11 | ISO C | ISO/IEC 9899:2011 |
C18 | ISO C | ISO/IEC 9899:2018 |
ANSI C
或ISO C
都是定义的最基本的,没有涉及到操作系统级别的内容, 操作系统级别的标准就是由POSIX来定义的。
编程语言标准可以看作语言使用者和编译器实现者之间的协议。 协议的一部分是编译器实现者同意提供,用户可以使用的功能。而其它部分则包括用户同意遵守, 编译器实现者认为会被遵守的规则。只要双方都恪守自己的保证,程序就可以正确运行。 如果任何一方违背它的诺言,则结果肯定失败。
C标准实现库
就是实现了C的标准
的库。对于这个名称还有其他称呼,比如CRT
(C Runtime Library
,C运行时库), 这是因为C标准实现库
通常被编译成动态库
,其他软件在运行的时候加载这些动态库
。还有人称呼C标准实现库
为libc
或者C函数库
, 这些都是说的一个意思,只是他们站在不同的角度上说的。
C
语言是编译型语言,我们将源码编辑好之后,在运行之前, 必须要将这些源码转换成二进制的机器码,这样运行起来就会非常的快。
C
语言的编译器常用的有:
IDE
(Integrated Development Environment
,集成开发环境)
IDE
是代码编辑器、编译器、调试器、运行可执行文件等功能全部集成在一起的软件。
IDE
可以大大提高开发的效率和速度。
常用的开发C
语言项目的IDE
有: