|
|
|
|
||
C语言是目前世界上流行的、使用最广泛的高级程序设计语言。它适用于系统软件和应用软件、以及需要对硬件进行操作的软件的编写。
一、C语言的产生
以前的操作系统(包括UNIX操作系统)等系统软件主要是用汇编语言编写的。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高其可读性和可移植性,最好改用高级语言,但一般的高级语言又难以实现汇编语言的诸如可直接对硬件进行内存地址操作、位操作等功能。于是,人们设想找到既具有高级语言特性,又具有低级语言特性的语言,C语言便产生了。
二、C语言的发展
(一)、C语言的根源
C语言是在B语言的基础上发展起来的,它的原型是ALGOL 60语言。见下表C语言的发展情况:
语言名称 |
出现时间 |
全称 |
特点 |
应用 |
命名 |
出处 |
作者 |
ALGOL 60 |
1960年 |
面向问题的高级语言,离硬件较远,不宜编写系统程序。 |
|||||
CPL语言 |
1963年 |
combined programming language |
在 ALGOL 60的基础上接近硬件,但规模较大,难以实现。 |
英国剑桥大学 |
|||
BCPL语言 |
1967年 |
basic combined programming language |
相对CPL语言做了简化 |
英国剑桥大学 |
Matin Richards | ||
B语言 |
1970年 |
basic combined programming language |
相对BCPL语言做了进一步简化,语言简单、很接近硬件,但功能有限。 |
编写出第一个UNIX操作系统,在PDP-7上实现。 |
取BCPL的第一个字母 |
美国贝尔实验室 |
Ken Thompson |
B语言 |
1971年 |
basic combined programming language |
在PDP-11/20上实现,并写了UNIX操作系统 |
取BCPL的第一个字母 |
美国贝尔实验室 |
||
1972年至1973年间 |
basic combined programming language |
语言精练,接近硬件,娄据 |
取BCPL的第二个字母 |
美国贝尔实验室 |
(二)、C语言的应用
1、最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言设计的。1973年,K.Thompson和D.M.Ritchie两人合作把UNIX的90%以上用C改写,即UNIX第5版。之后对C语言做了多次改进,但主要还是在贝尔实验室内部使用。
2、直到1975年UNIX第6版公布后,C语言的优点才引起人们的普遍注意。
3、1977年出现了不依赖于具体机器的《可移植C语言编译程序》,使C移植到其它机器时所需工作简化,从而使C语言迅速推广。
4、1978年以后,C语言已先后移植到大、中、小、微型机上,独立于UNIX和PDP。
(三)、C语言版本的基础——标准C
1、标准C——以1978年发表的UNIX第7版中的C编译程序为基础,Brian W.Kernighan和Dennis M.Ritchie(合称K&R)合著了影响深远的名著《The C Programming Language》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础。
2、ANSI C——1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充,制定的新的标准。
3、87 ANSI C——1987年ANSI公布的新标准。
4、ISO C——1990年,国际标准化组织ISO(International Standard Organization)接受87 ANSI C 为ISO C的标准(ISO 9899——1990)。
(四)、C语言的特点
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
2、运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构(如链表、树、栈等)的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4、C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5、C语法限制不太严格、程序设计自由度大
一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。
6、C语言允许直接访问物理地址,可以直接对硬件进行操作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
7、C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
8. C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。
1、最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言设计的。1973年,K.Thompson和D.M.Ritchie两人合作把UNIX的90%以上用C改写,即UNIX第5版。之后对C语言做了多次改进,但主要还是在贝尔实验室内部使用。
2、直到1975年UNIX第6版公布后,C语言的优点才引起人们的普遍注意。
3、1977年出现了不依赖于具体机器的《可移植C语言编译程序》,使C移植到其它机器时所需工作简化,从而使C语言迅速推广。
4、1978年以后,C语言已先后移植到大、中、小、微型机上,独立于UNIX和PDP。
(三)、C语言版本的基础——标准C
1、标准C——以1978年发表的UNIX第7版中的C编译程序为基础,Brian W.Kernighan和Dennis M.Ritchie(合称K&R)合著了影响深远的名著《The C Programming Language》,这本书中介绍的C语言成为后来广泛使用的C语言版本的基础。
2、ANSI C——1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充,制定的新的标准。
3、87 ANSI C——1987年ANSI公布的新标准。
4、ISO C——1990年,国际标准化组织ISO(International Standard Organization)接受87 ANSI C 为ISO C的标准(ISO 9899——1990)。
(四)、C语言的特点
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。
2、运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
3、数据结构丰富
C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构(如链表、树、栈等)的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
4、C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
5、C语法限制不太严格、程序设计自由度大
一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度。
6、C语言允许直接访问物理地址,可以直接对硬件进行操作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
7、C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
8. C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。