1.4 C语言简介
C语言历史悠久,是一种被广泛使用的高级程序设计语言。对操作系统和系统程序以及需要对硬件进行操作的场合,用C语言明显优于其他高级语言。它是最接近机器底层的高级语言之一,这也是开发能在不同硬件平台上运行的应用程序的那些程序员为何选用C语言的原因之一。
C语言的发展颇为有趣,它的原型是ALGOL 60语言。1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了被命名为BCPL(Basic Combined Programming Language)的语言。
1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”,并且他用B语言写了第一个UNIX操作系统。其后,1972年,美国贝尔实验室的Dennis Ritchie(图1-8)设计了C语言,它继承了ALGOL、BCPL和B语言的许多思想,并加入了数据类型的概念。为了推广UNIX操作系统,1977年Dennis Ritchie发表了不依赖于具体机器系统的C语言编译文本——《可移植的C语言编译程序》,之后他与Ken Thompson用C语言重写了UNIX操作系统,使其成为迄今为止最为成功的商用操作系统之一。图1-9是Dennis Richie与Ken Thompson的工作照片。
图1-8 Dennis Ritchie(1941—2011)
图1-9 Ken Thompson and Dennis Ritchie工作照
1978年Brian Kernighan和Dennis Ritchie出版了名著(The C Programming Language),从而使C语言成为世界上流行最广泛的高级程序设计语言之一。
随着微型计算机的普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,1989年,美国国家标准协会(ANSI)为C语言制定了一套ANSI标准,成为C语言标准。1990年,国际标准化组织(ISO)接受了ANSI提出的标准,C的这个版本称为C89。C99是在C89的基础上发展起来的,增加了基本数据类型、关键字和一些系统函数等。2011年12月8号,ISO发布了新的C语言标准——C11,官方名称ISO/IEC 9899:2011。C语言的产生与发展可用图1-10来表示。
图1-10 C语言的产生与发展简图
C语言不仅具有高级语言的特性,而且在某种程度上还具有低级语言的特性,C语言开发的程序具有较高的运行效率。因此,在各种流行程序设计语言大行其道的今天,C语言仍被广泛应用于对性能要求较高的系统,如嵌入式操作系统、实时和通信系统等。例如,Linux、部分Windows操作系统代码、Google Android操作系统(图1-11)都是由C和C++开发的。苹果的OS X则是用C的派生语言Objective-C开发的,如图1-12所示。
图1-11 Android操作系统
图1-12 Apple OS X
众所周知,当前导航仪、智能家居、智能手机、机器人、智能交通和家庭安全监控系统已得到广泛应用,这些嵌入式系统对程序性能具有较高的要求。例如,汽车的辅助制动系统必须有足够快的响应速度在发生事故前将车减速或停下来;视频游戏中游戏控制必须有足够快的响应,使动作与控制之间不产生滞后,并使动画流畅;飞行器控制等实时系统对时间性能的要求极高,它必须实时监控飞行器的位置和速度,并且将这些信息无延时地传输给控制系统,以使飞行器能在发生碰撞之前改变航线。
上述嵌入式系统与物联网的应用使C语言犹如一棵常青树,并焕发出新的生命力,仍然受到很多程序员的青睐。近十年来,位居TIOBE开发语言排名前两位的一直是C语言和Java语言,如图1-13所示。
图1-13 编程语言市场占有率排名(数据来源www.tiobe.com)
TIOBE开发语言排名是一种衡量编程语言流行程度的指标,该指标每月更新一次。市场占有率是根据世界各地的熟练工程师、课程和第三方供应商的数据统计得来的,用于计算市场占有率的流行的搜索引擎包括谷歌、MSN、雅虎、维基百科和YouTube。
由于许多主流的程序设计语言都是在C语言的基础上发展起来的,因此,C语言的学习也为日后学习其他语言打下坚实的基础,这也是许多高等院校采用C语言作为第一门程序设计教学语言的原因之一。