1.1 程序设计语言
程序设计语言是人和计算机交流信息的工具,就好比人与人之间交流所使用的语言,如汉语、英语等。因此,程序设计语言是软件的重要组成部分。本节将简要介绍程序设计语言的发展史、结构化程序设计的基本要素及C语言的特点和使用,为以后各章的学习奠定基础。
1.1.1 程序设计语言的发展
计算机语言也称程序设计语言,即编写程序、开发软件所用的语言。粗略地划分,计算机语言分为机器语言、汇编语言和高级语言。
高级语言是与自然语言相近并为计算机所接受和执行的计算机语言。它独立于计算机,用户可以在不了解机器指令,以及不了解机器的内部结构和工作原理的情况下,就能用高级语言编写程序,进行软件开发。高级语言可使用于不同的操作系统,不受机器型号的限制,而且易于交流和推广。
机器语言是完全属于机器的语言,其结构由0和1组成。机器语言受机器的限制,学习它就必须要学习机器的内部结构和工作原理,而且只能针对专门的机器编写,不易学习。
早期计算机都采用机器语言,读写困难,编程效率极低。为了方便编程,随即出现了汇编语言,虽然提高了效率,但仍然不够直观、简便,不易被其他人读取。从1954年起,计算机界逐步开发出一批像FORTRAN、COBOL和ALGOL等“高级语言”,它们采用英文词汇、符号和数字,遵照一定的规则来编写程序。
但是到20世纪60年代中期,美国达特默斯学院的约翰·凯梅尼(J.Kemeny)和托马斯·卡茨(T.Kurtz)认为,像FORTRAN那样的语言都是为专业人员设计的,没有办法普及。于是,他们在简化FORTRAN的基础上,研制出一种“初学者通用符号指令代码”(Beginner's All purpose Symbolic Intruction Code),简称BASIC。由于BASIC语言易学、易用,很快就成为最流行的计算机语言之一,几乎所有的小型计算机和个人计算机都在使用它。经过不断改进,它一直沿用至今,出现了像QBASIC、VB等新一代BASIC版本。之后到1971年,瑞士联邦技术学院的尼克劳斯·沃尔斯(N. Wirth)教授发明了另一种简单明晰的计算机语言,这就是Pascal语言。Pascal语言语法严谨,层次分明,程序易写,具有很强的可读性,是第一个结构化的编程语言。
1983年的图林奖则授予了AT&T贝尔实验室的两位科学家邓尼斯·里奇(D.Ritchie)和他的协作者肯·汤姆森(K. Thompson),以表彰他们共同发明了著名的计算机C语言。C语言的设计哲学是“Keep It Simple,Stupid”,因而程序员可以轻易掌握整个C语言的逻辑结构,而不用一天到晚翻手册写代码。于是,众多的程序员投向了C语言的怀抱,C语言迅速并广泛地传播开来。
说明:C语言是当今软件工程师最宠爱的语言之一。
1.1.2 C语言的发展
C语言最早可以追溯到ALGOL60。ALGOL60是面向问题的高级语言,产生于20世纪60年代,但是由于自身的局限性,它并不适用于编写系统程序。于是,1963年剑桥大学推出了CPL语言,虽然解决了一些问题,比ALGOL60更加接近硬件了,但是规模较大,难以实现。1967年剑桥大学继续改写,推出了BCPL语言,主要对CPL进行了简化。
1970年,英国的贝尔实验室进一步简化了BCPL,并以BCPL的第一个字母命名了该语言,但是B语言太过简单了,导致功能十分有限。1972年,英国贝尔实验室的D.Ritchie一个人完成了C语言的定义,不仅保留了B语言的精练、更接近硬件的特点,还克服了B语言过于简单、功能不足的缺点。1973年,K.Thompson和D.Ritchie合作,利用C语言改写了UNIX,奠定了操作系统的基础,并在1978年美国电话电报公司(AT&T)贝尔实验室正式发布了C语言。随后C语言开始进入其他操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为现代最优秀的程序设计语言之一。
随着计算机的普及,出现了许多C语言版本。由于没有统一的标准,使得这些语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,这也成了现行的C语言标准版本。
如今,在计算机上有许多性能良好的C语言系统可用,包括Borland公司早期的Turbo C和后续Borland C/C++系列产品;Microsof(t微软)公司的Microsoft C和后续Visual C/C++,以及如今的VS系列产品等。各种工作站系统大都采用UNIX和Linux,C语言是它们的标准系统开发语言。
注意:除了上面介绍的产品外,还有很多廉价或免费的C语言系统。其他微型机也有多种C语言系统。各种大型机上也有自己的C语言系统。
1.1.3 C语言的特点
C语言是一种通用的、面向过程的程序语言,具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,在程序员中备受青睐。下面介绍C语言最容易理解的一般特点,由于C语言的这些优点,使C语言应用面很广。
1.C语言数据类型丰富,运算符使用方便
C语言的数据类型有整型、浮点型(实型)、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据结构(如链表、树、堆栈等)的运算,尤其是指针类型数据,使用起来比Pascal更灵活、多样。C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理,从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。
2.语言简洁、紧凑,使用方便、灵活
C语言的一个语句可以完成一项或多项操作。一个表达式也可以完成多项操作。书写简练,源程序短,因而输入程序的工作量小。
3.面向结构化的程序设计语言
结构化语言的显著特点是代码、数据的模块化,C程序是以函数形式提供给用户的,这些函数调用方便。C语言具有多种条件语句,循环控制程序流向(如if…else语句、switch语句、while语句、do…while语句、for语句、break语句、continue语句等),从而使程序完全结构化。
4.C语言能进行位(bit)操作
C语言能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此,C语言不但具有高级语言的特征,还具有低级语言的许多功能,可用来编写系统软件。C语言的这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。有人把C语言称为“高级语言中的低级语言”或“中级语言”,意为兼有高级和低级语言的特点。
5.生成目标代码质量高,程序执行效率高
C程序一般只比汇编程序生成的目标代码效率低10%~20%。
6.移植性好
C语言移植性好,主要表现在只要对这种语言稍加修改,便可以适应不同型号的机器或各类操作系统。
注意:许多大的软件都用C语言编写,这主要是由于C语言的可移植性和硬件控制能力高,表达和运算能力强。许多以前只能用汇编语言处理的问题,现在可以改用C语言来处理。