目录
一、诞生背景
计算机只认识0和1,比如指令10000000代表加, 指令1100000代表减,人想和计算机沟通,必须用这些指令,而且,不同的计算机指令也是不一样的,换一个计算机可能就指令10000000代表减, 指令1100000代表减加了。
所以出现了汇编语言,用助记符取代0和1,这样人就可以轻松的和计算机沟通。但是计算机并不懂汇编语言,所以需要一个“翻译官”,这个翻译官即认识计算机语言,又认识汇编语言。他就是编译器,将标识符转换成0和1。
所以当时(1960年代末左右),汇编语言是计算机编程的主要语言,但是汇编语言依赖于硬件系统,更换到不同的计算机就要重新移植,兼容性不是很好。
那有没有更见的语言呢,不依赖于硬件系统,还比较贴近人的自然语言呢?
1970年左右,贝尔实验室的研究员Ken Thompson(肯·汤普森)发明了B语言,Dennis Ritchie(丹尼斯·里奇)以B语言为基础开发了C语言,因为C语言源自Ken Thompson发明的B语言,而B语言则源于BCPL语言,所以取B后面的字母C,命名为C语言。
C语言可以广泛的用在不同的操作系统上,如Linux,windows等。C语言的出现,让开发人员摆脱了计算机硬件的限制,可以把主要精力放在程序设计上,这类语言就称之为高级语言。
但是高级语言也要被计算机执行,所以需要一个“翻译官”将其翻译成机器语言,这个翻译官也是编译器。
二、发展
二十世纪八十年代,为了避免各个开发厂商使用C语言语法产生差异,由美国国家标准局(ANSI)为C语言指定了一套标准语法,成为ANSI C。这套标准是C语言最初标准。
后续又发展了多套标准。
C89
C89,也称为 ANSI C。该标准随后被 ISO 采纳,成为国际标准(ISO/IEC 9899:1990)。
C95
这是对 C89 的一个修订和扩充,称为“C89 with Amendment 1”或 C95,严格说来并不是一个真正的标准。
C99
1999年,在做了一些必要的修正和完善后,ISO 发布了新的 C 语言标准,命名为 ISO/IEC 9899:1999,简称“C99”。
C11
2007 年,C语言标准委员会又重新开始修订C语言,到了 2011 年正式发布了 ISO/IEC 9899:2011,简称为 C11 标准。
C17
C17(也被称为为 C18)是于2018年6月发布的 ISO/IEC 9899:2018 的非正式名称,也是目前(截止到2020年6月)为止最新的 C语言编程标准,被用来替代 C11 标准。
C17 没有引入新的语言特性,只对 C11 进行了补充和修正。
C2x
下一个版本的 C 标准。
三 、编译器
GCC(GNU Compiler Collection,)