
1.2 C语言的发展
C语言是一门面向过程的计算机编程语言,其设计目标是,提供一种能以简易的方式编译、处理存储器、仅产生少量的机器码且不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好,易于调试、修改和移植,其代码质量与汇编语言相当接近。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言常用来编写系统软件。
C语言是1972年由美国的Dennis Ritchie设计发明的。它是由早期的编程语言BCPL(Basic Combined Programming Language)发展演变而来的。1970年,美国贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,后期的改进版称为C语言。
随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准学会(ANSI)为C语言制定了一套标准,成为现行的C语言标准,被称为“标准C语言”。
C语言发展迅速,并成为最受欢迎的语言之一,主要因为它具有强大的功能和许多非常成功的应用案例归纳起来,C语言具有以下特点:
(1)简洁的语言。
C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入、输出、文件管理等功能,如需此类功能,需要配合编译系统所支持的各类库进行编程,故C语言拥有非常简洁的编译系统。
(2)具有结构化的控制语句。
C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if...else语句和switch语句等,可以用于实现函数的逻辑控制,方便面向过程的程序设计。
(3)丰富的数据类型。
C语言包含的数据类型广泛,不仅包含传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,例如指针数据类型的使用便较为灵活,可以通过编程对各种数据结构进行计算。
(4)丰富的运算符。
C语言包含34个运算符,它将赋值、括号等均视为运算符来操作,使C程序的表达式类型和运算符类型更丰富。
(5)可直接对物理地址进行操作。
C语言允许对硬件的内存地址直接进行读写,以此可以实现汇编语言的主要功能,并可直接操作硬件。C语言不但具备高级语言所具有的良好特性,而且包含了许多汇编语言的优势,故在系统软件编程领域有着广泛的应用。
(6)代码具有较好的可移植性。
C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件的具体特性,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植。这就意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行,从而极大地减少了程序移植的工作强度。
(7)可生成高质量、目标代码执行效率高的程序。
与其他高级语言相比,C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。