C语言程序设计教程
上QQ阅读APP看书,第一时间看更新

1.1 C语言概述

1.1.1 计算机语言发展史

在揭开C语言的神秘面纱之前,先来认识一下什么是计算机语言。计算机语言(Computer Language)是人与计算机之间通信的语言,它主要由一些指令组成,这些指令包括数字、符号和语法等内容,编程人员可以通过这些指令来指挥计算机进行各种工作。

计算机语言有很多种类,根据功能和实现方式的不同大致可分为三大类,即机器语言、汇编语言和高级语言,下面针对这三类语言的特点进行简单介绍。

1.机器语言

计算机不需要翻译就能直接识别的语言被称为机器语言(又被称为二进制代码语言),该语言是由二进制数0或1组成的一串指令,对于编程人员来说,机器语言不便于记忆和识别。

2.汇编语言

人们很早就认识到这样一个事实,尽管机器语言对计算机来说很好懂也很好用,但是对于编程人员来说记住由0和1组成的指令简直就是煎熬。为了解决这个问题,汇编语言诞生了。汇编语言用英文字母或符号串来替代机器语言,把不易理解和记忆的机器语言按照对应关系转换成汇编指令。这样一来,汇编语言就比机器语言更加便于阅读和理解。编译器可以把写好的汇编语言程序翻译成机器语言程序,实现和计算机的沟通。

3.高级语言

由于汇编语言依赖于硬件,程序的可移植性差,而且编程人员在使用新的计算机时还需学习新的汇编指令,大大增加了编程人员的工作量,为此计算机高级语言诞生了。高级语言不是一种语言,而是一类语言的统称,它比汇编语言更贴近于人类使用的语言,易于理解、记忆和使用。由于高级语言和计算机的架构、指令集无关,因此它具有良好的可移植性。

高级语言应用非常广泛,世界上绝大多数编程人员都在使用高级语言进行程序开发。常见的高级语言包括C、C++、Java、VB、C#、Python、Ruby等。本书讲解的C语言就是目前最流行、应用最广泛的高级语言之一,也是计算机高级编程语言的元老。

1.1.2 什么是C语言

C语言是一种高级程序设计语言,具有简洁、紧凑、高效等特点。它既可以用于编写应用软件,也可以用于编写系统软件。自1973年问世以来,C语言迅速发展并成为最受欢迎的编程语言之一,下面针对C语言的发展史和C语言标准分别进行讲解。

1.C语言的发展史

早期的系统软件设计均采用汇编语言,例如大家熟知的UNIX操作系统。尽管汇编语言在可移植性、可维护性等方面远不及高级语言,但是一般的高级语言有时难以实现汇编语言的某些功能。那么,能否设计出一种集汇编语言和高级语言优点于一身的语言呢?于是,C语言就应运而生了。

C语言的发展颇为有趣,它的原型是ALGOL 60语言(也称A语言)。

1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)。

1967年,剑桥大学的马丁·理查兹(Matin Richards)对CPL进行了简化,于是产生了BCPL。

1970年,美国贝尔实验室的肯·汤普森(Ken Thompson)将BCPL进行了修改,并为它起了一个有趣的名字“B语言”,其含义是将CPL“煮干”,提炼出它的精华,并且他用B语言写了第一个UNIX操作系统。

1973年,美国贝尔实验室的丹尼斯·里奇(Dennism.Ritchie)在B语言的基础上设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,即C语言。

1978年,布赖恩·凯尼汉(Brian W.Kernighan)和丹尼斯·里奇(Dennism.Ritchie)出版了名著《THE C PROGRAMMING LANGUAGE》,从而使C语言成为目前世界上广泛应用的高级程序设计语言。

2.C语言标准

随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准学会(ANSI)为C语言制定了一套ANSI标准,即C语言标准。

在1989年美国国家标准学会(ANSI)通过的C语言标准ANSI X3.159—1989被称为C89。之后在1990年,国际标准化组织(ISO)也接受了同样的标准ISO9899—1990,该标准被称为C90。这两个标准只有细微的差别,因此,通常来讲C89和C90指的是同一个版本。

后来随着时代的发展,1999年ANSI又通过了C99标准。C99标准相对C89做了很多修改,例如变量声明可以不放在函数开头,支持变长数组等。但由于很多编译器仍然没有对C99提供完整的支持,因此本书将按照C89标准来进行讲解,在适当时会补充C99标准的规定和用法。

1.1.3 C语言的特点

C语言是一种通用的、面向过程的程序语言,它的诸多特点使它应用面很广,下面我们简单学习一下C语言的特点。

1.语言简洁,使用方便灵活

C语言是现有程序设计语言中规模最小的语言之一,它仅有32个关键字,9种控制语句,压缩了一切不必要的成分。其32个关键字与9种控制语句在后续章节中会陆续学习。

2.结构化程序设计

C语言是面向过程的语言,它以函数作为程序设计的基本单位,具有自定义函数的功能。因此使用C语言可以很容易地进行结构化程序设计。

3.能进行硬件操作

C语言既具有高级语言的功能,又具有低级语言的许多功能,C语言的这种双重性使它既是成功的系统描述语言,又是通用的程序设计语言。

4.执行速度快

众所周知,汇编语言程序目标代码是效率最高的,而C语言的目标代码效率仅比汇编语言低10%~20%。

尽管C语言具有很多的优点,但和其他任何一种程序设计语言一样也有其自身的缺点,如编写代码实现周期长,可移植性较差,过于自由,经验不足易出错,对平台库依赖较多。但总的来说,C语言的优点远远超过了它的缺点。

1.1.4 C语言的发展趋势

从20世纪70年代起,C语言通过UNIX操作系统迅速发展起来,逐渐在大型、中型、小型机,以及微型机中得到应用,成为风靡世界的计算机语言。大多数软件开发商都优先选择C语言来开发系统软件、应用程序、编译器和其他产品。

这样的现象一直保持了20年,直到20世纪90年代,一种代表着先进思想的语言问世,也就是C语言的超集C++,由于C++解决了C语言不能解决的诸多难题,所以许多开发商开始使用C++来开发一些复杂的、规模较大的项目,因此,C语言进入一个冷落时期。

这个冷落时期并没有持续太长时间,随着嵌入式产品的增多,C语言简洁高效的特点又被重视起来,其强大的功能被广泛应用于各领域:

(1)C语言可以写网站后台程序,诸如百度、腾讯后台。

(2)C语言可以写出绚丽的GUI界面,诸如苹果界面。

(3)C语言可以专门针对某个主题写出功能强大的程序库,然后供其他程序方便使用,从而让其他程序节省开发时间。

(4)C语言可以写出大型游戏的引擎。

(5)C语言可以写操作系统和驱动程序,并且只能用C语言编写。例如,用C语言编写的Linux操作系统的全部源代码都可以从网上得到,要深入了解操作系统的运行秘密,只要懂得C语言即可。

(6)任何设备只要配置了微处理器,就都支持C语言。从微波炉到手机,都是由C语言技术来推动的。

随着信息化、智能化、网络化的发展,以及嵌入式系统技术的发展,C语言的地位也会越来越高。C语言还将在云计算、物联网、移动互联网、智能家居、虚拟世界等未来信息技术中发挥重要作用。因此,学好C语言是很有必要的,掌握好C语言的编程知识,也是求职拿高薪的敲门砖。而且掌握了C语言后,很容易学习其他语言,学习C++、Java、ObjectiveC、PHP等将事半功倍,因为万变不离其宗,只是语法上有些许更改,而思想却没有更改。