1.1 C语言介绍
专题讲座:光盘\MR\Video\1\C语言介绍.exe
视频速递:全面解读C语言的产生和发展
本节首先从C语言的发展历史谈起,简要概述了C语言的产生、发展、背景等,然后详细论述了C语言与其他主流语言比较的优势、C语言的特点、C语言的发展趋势、C语言开发的成功案例和C语言的应用领域等方面的内容。相信读者阅读本节之后,不仅会对C语言产生浓厚的兴趣,坚定学好C语言的信心,而且会爱上这门高级编程语言。
1.1.1 简述编程语言
时代在发展,人类在进步,人们的需求也在日益变化,任何事物的发展都会经历一定的过程。计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。如图1.1所示。
图1.1 计算机语言的发展历程
◆ 机器语言
计算机所使用的是由“0”和“1”组成的二进制数,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。使用机器语言是十分痛苦的,在程序有错需要修改时,更是如此。机器语言,是第一代计算机语言。
◆ 汇编语言
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等。
这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。汇编语言同样十分依赖于机器硬件,其缺点是移植性不好。
◆ 高级语言
1954年,第一个完全脱离机器硬件的高级语言——FORTRAN问世了,40多年来,共有几百种高级语言出现,具有重要意义的有几十种,目前影响较大、使用较普遍的有C、C++、Delphi、Java等。
1.1.2 C语言的产生
从程序语言的发展过程可以看到,以前的操作系统等系统软件主要是用汇编语言编写的。虽然汇编语言容易理解程序用途、方便纠错和维护,但是汇编语言程序的可读性和可移植性都不是很好,因为它过于依赖硬件设备。
因为汇编语言程序的缺点,无法再满足人们的需求,人们开始寻找一种语言,一种不过分依赖于硬件,可读性和移植性又高的高级编程语言。人们希望这种语言既具有高级语言的特性,又不失低级语言的好处。于是,在这种需求下产生了C语言。
C语言是由UNIX的研制者丹尼斯·里奇(Dennis Ritchie)和肯·汤普逊(Ken Thompson)于1970年研制出的BCPL语言(简称B语言)的基础上发展和完善起来的。19世纪70年代初期,AT&T Bell实验室的程序员Dennis Ritchie第一次把B语言改为C语言。
最初,C语言运行于AT&T的多用户、多任务的UNIX操作系统上。后来,Ritchie用C语言改写了UNIX C的编译程序,UNIX操作系统的开发者Ken Thompson又用C语言成功地改写了UNIX,从此开创了编程史上的新篇章。UNIX操作系统成为第一个不是用汇编语言编写的主流操作系统。
1983年,美国国家标准委员会(ANSI)对C语言进行了标准化,于1983年颁布了第一个C语言草案(83ANSI C),后来于1987年又颁布了另一个C语言标准草案(87ANSI C),最新的C语言标准C99在1999年颁布,并在2000年3月被ANSI采用。但是由于未得到主流编译器厂家的支持,C99也并未广泛使用。
尽管C语言发展于大型商业机构和学术界的研究实验室,但是当开发者们为第一台个人计算机提供C编译系统之后,C语言就得以广泛传播,为大多数程序员所接受。对MS-DOS操作系统来说,系统软件和实用程序都是用C语言编写的。Windows操作系统大部分也是用C语言编写的。
C语言是一种面向过程的语言,同时具有高级语言和汇编语言的优点。C语言可以广泛应用于不同的操作系统,例如:UNIX、MS-DOS、Microsoft Windows及Linux等。
本书介绍的C语言开发工具为Turbo C 2.0和Visual C++ 6.0,目前最流行的C语言开发工具有以下三种,如图1.2所示。
图1.2 最流行的三种C语言
历史背景:C语言的由来
C语言是在B语言的基础上发展起来的,最早的时候,C语言只是用来描述和实现UNIX操作系统,并为其提供一种工作语言而设计的,当然,当时的C语言并不像现在这么完善和强大,C语言经过了很多次的改进,逐步地被人们重视和注意。
有人曾经说过“C语言和UNIX操作系统是一对孪生兄弟”,由此可见C语言和UNIX操作系统的关系非同一般,因为C语言是因UNIX而设计的,同时由于UNIX新版本不断地推出,C语言也被不断改进完善,随着UNIX操作系统日益广泛地被人们接受,C语言也同时被迅速地推广。
学习手册说明 C语言不是面向对象的编程语言,它是一种面向过程的计算机程序设计语言。
1.1.3 C语言的特点
C语言与C#、C++和Java有着密切的“血缘”关系,可以说C语言是这几种语言的“始祖”,因为这几种语言都是在C语言的基础上发展起来的,所以常常能听到“C语言是一切语言的基础”这类话。没错,真正把C语言学明白后,再学习其他语言则非常简单,反之,如果连C语言都没有学会,那么,再怎么学别的语言也不能算是编程高手。
C语言以其简洁、灵活、表达能力强、产生的目标代码质量高、可移植性好的特点而著称于世,一种语言要具有长久的生命力,总是有一些不同于其他语言的特点,详细归纳起来有以下几点,如图1.3所示。
图1.3 C语言的特点
为了方便读者理解,下面对C语言的特点进行详细的解说。
C语言程序结构简洁、紧凑、规整、表达式简练、使用灵活。
C语言编写的程序可读性强、编译效率高。
C语言具有丰富的运算符,多达34种。丰富的数据类型与丰富的运算符相结合,使C语言具有表达灵活和效率高等特点。
C语言数据类型种类繁多。C语言具有五种基本的数据类型和多种构造数据类型,以及复合的导出类型,同时还提供了与地址密切相关的指针机器运算符。指针可以指向各种类型的简单变量、数组、结构和,乃至函数等。C语言还允许用户自己定义数据类型。
C语言是一种结构化程序设计语言,特别适合于大型程序的模块化设计。C语言具有编写结构化程序所必需的基本流程控制语句,C语言程序是由函数集合构成的,函数各自独立,并且可作为模块化设计的基本单位。
学习手册说明 C语言的源文件可以分割成多个源程序分别进行编译,然后连接起来构成可执行的目标文件,为开发大型软件提供了极大的方便。C语言还提供了多种存储属性,使数据可以按其需要在相应的作用域下使用,从而提高了程序的可靠性。
C语言语法限制不太严格,程序设计自由度大。例如,对数组下标越界不做检查,由程序编写者自己保证程序的正确。一般的高级语言语法检查比较严,能检测出几乎所有的语法错误,而C语言允许程序编写者有较大的自由度,因此放宽了语法的检查。程序员应当仔细检查程序,保证其正确,而不要过分依赖C语言编译程序去查错。
C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此,C语言既具有高级语言的功能,又兼容低级语言的许多功能,可用来编写系统软件。
生成目标代码质量高,程序执行效率高。C语言一般只比汇编程序生成的目标代码率低10%~20%。
C语言具有较高的可移植性。C语言的语句基本上不做修改就能用于各种型号的计算机和各种操作系统。
C语言是处于汇编语言和高级语言之间的一种中间型程序设计语言,常被称为中级语言。它把高级语言的基本结构和汇编语言的高效率结合起来。因此,它既具有高级语言面向用户、可读性强、容易编程和维护等特点,又具有汇编语言面向硬件和系统,可以直接访问硬件的功能。
C语言是每个刚开始学习程序的人的首选,就像每个学英语的人,在刚开始时都要学习英语中的语法知识一样,只有语法知识掌握牢固了,学起其他内容才更加得心应手,C语言也是一样的,把C语言学好了,再学其他语言就更容易了。