1.1 C语言的发展及特点
1.1.1 程序设计语言的发展
程序设计语言是指用来编制和设计程序所使用的计算机语言,是人类和计算机之间信息交流的一种工具。程序设计语言本身也随着计算机技术的发展,经历了一个从简单到复杂、从初级到高级的不断演进的过程。
(1)机器语言
机器语言是人类最早使用的一种程序设计语言。在计算机诞生之初,人类就使用机器语言与计算机进行交流。机器语言是以二进制代码形式表达并能被计算机所直接识别和处理的,因此也是直接面向计算机或者称之为最底层的程序设计语言。虽然对于计算机来说,机器语言是最直观、最方便的语言,可以不经翻译就直接使用,但是对于人类来说,机器语言却是难以识别、难以记忆和容易出错的。因此在不久之后就产生了汇编语言。
(2)汇编语言
汇编语言是用英文缩写和数字等帮助记忆的符号来代表机器指令的符号式语言。例如,用ADD表示加法(add),用SUB表示减法(subtract),用MOV表示传送(move),等等。
由于采用了助记符,因此相对于机器语言而言,汇编语言显得更加直观,易于记忆、检查和编程。而正是因为采用了助记符,汇编语言就不能被计算机所直接识别。汇编语言程序必须通过汇编程序的翻译,使之成为对应的机器语言程序(目标程序)后才能被计算机所执行。汇编程序与机器语言一样是随机器不同而不同的,它们都是面向机器的程序设计语言,又称为初级语言。
由于汇编语言的功能与机器语言十分接近,而与人们在日常生活中使用的自然语言差别较大,因此仍然不便于使用。为此,人们又开发了被称为高级语言的程序设计语言。
(3)高级语言
高级语言又称为算法语言,它是独立于机器的程序设计语言。高级语言的语法十分接近于自然语言和数学公式的表达。在使用高级语言设计程序时可以较少考虑所用的机器,编写的源程序可以在不同型号的机器上使用(有的可能要稍加修改),从而克服了初级语言的一些弱点。常用的高级语言包括BASIC、FORTRAN、PASCAL、C语言、C++等。
需要说明的是,高级语言与汇编语言一样也是不能被计算机所直接识别和运行的。因此必须通过翻译程序把高级语言源程序翻译成机器语言形式的目标程序后,才能在计算机中运行。通常把这个翻译过程称为编译,而实现编译功能的程序,就称为编译器或编译程序。
由于各种高级语言的表达方式、语法规则各不相同,因此,为它们服务的“编译程序”也各不相同,每种语言都有自己的“编译程序”。所谓在某种类型的机器配有某种语言,其实就是指在该机器上已配有此语言的“翻译程序”,例如汇编程序、FORTRAN编译程序、C编译程序等。
1.1.2 C语言的发展
C语言是1972年由美国贝尔实验室的Dennis Ritchie设计的一种通用编程语言。设计C语言的最初目的是用作UNIX操作系统的描述语言。因此,C语言的产生和发展与UNIX操作系统具有十分密切的联系。
UNIX操作系统的第一版是由贝尔实验室的Ken Thompson在DEC公司的PDP-7型计算机上用汇编语言实现的。由于汇编语言存在可移植性差、编程困难、难以调试等缺点,因此,在Dennis Ritchie成功开发C语言之后,又用C语言重写了UNIX操作系统的新版本。
C语言在诞生之初,只是作为一种内部语言在贝尔实验室内部使用。但是进入20世纪80年代后,随着UNIX操作系统的成功和广泛流行,C语言便逐渐在大学和研究机构中流行起来,并成为世界上使用最为广泛的几种编程语言之一。目前,在全世界有大量程序员使用C语言进行编程,并积累了丰富的C语言库代码和应用软件。这些都是人类社会发展的巨大财富。
1.1.3 C语言的特点
C语言之所以能够成功推广并成为主流编程语言,除了其与UNIX操作系统之间具有天然的血缘关系之外,还与其本身所具有的特点和优点是分不开的。
①C语言是一种兼有高级语言优点和汇编语言优点的语言。它一方面具有高级语言面向用户、语句简单、便于编程的优点,另一方面它又可以像汇编语言一样直接进行位运算、地址运算和寄存器操作。
②C语言是一种结构化程序设计语言。使用C语言的控制语句(例如,if-else语句、while语句、do-while语句、for语句、switch语句等),可以使得程序结构清晰;利用函数将程序划分为功能相对独立的模块,可以便于程序组织和大型软件的模块化开发。
③C语言具有丰富的数据类型。C语言除具有整型、实型、字符型等基本数据类型外,还具有数组、指针、结构类型、共用体、枚举类型等复合数据类型,可以用来实现各种复杂的数据结构。因此,C语言具有较强的数据处理能力。
④C语言具有种类丰富的运算符。除具有一般高级语言的通用运算符外,还可以实现以二进制为单位的位运算,以及自增、自减等单目运算和各种复合赋值运算。丰富的数据类型与运算符相结合,使得C语言具有表达灵活、代码高效的特点。
⑤C语言具有较好的可移植性。只要严格按照ANSI C的规定进行开发,其程序几乎可以不加修改地运行于不同的系统之上。
由于C语言具有上述优点,因此C语言既可以用于编写各种系统软件(例如操作系统、编译系统、编辑器等),也可以用于编写各种应用程序(例如图形处理软件、实时控制系统、游戏程序等),因而具有十分广泛的应用。