1.3 C语言概述
早期的编程工程师只能借助查表的方法和机器语言编写程序,但随着计算机技术的发展,这种低级语言编程已不能满足需求,随之出现了不同类型的编程语言,其中,C语言就是出现最早的编程语言之一。本节我们将介绍C语言,让初学者对C语言有清晰的认识。
1.3.1 C语言的发展史
C语言特性源自一种称为“B”的早期语言(基本组合编程语言,BCPL),其设计是为了实现UNIX操作系统。
1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。
1967年,剑桥大学的马丁·理查兹(Matin Richards)对CPL语言进行了简化,BCPL语言诞生。
1970年,美国贝尔实验室的肯·汤普森(Ken Thompson)对BCPL进行了修改,并将其命名为“B语言”,其含义是将BCPL语言“煮干”,提炼出它的精华,之后他用B语言编写了第一个基于非汇编语言的UNIX操作系统。
1972年,美国贝尔实验室的丹尼斯·里奇(Dennis M.Ritchie)在B语言的基础上设计出了一种新的语言,他取了BCPL的第2个字母作为这种语言的名字,即C语言。之后丹尼斯·里奇与肯·汤普森成功地使用C语言重写了UNIX的第3版内核,该版内核具有良好的可移植性且易于扩展,为UNIX日后的普及打下了坚实基础。
1978年,布赖恩·凯尼汉(Brian W.Kernighan)和丹尼斯·里奇(Dennis M.Ritchie)出版了名著《The C Programming Language》,从而使C语言成为目前世界上使用最广泛的高级程序设计语言。
1.3.2 C语言的标准
随着微型计算机的普及,C语言衍生出了诸多版本,这些版本之间存在差异,为了使C语言得到统一,美国国家标准学会(ANSI)制定了一套标准,称为ANSI C。ANSI C标准自1989年诞生以来,又历经了下述几次修改。
• 1989年,美国国家标准学会(ANSI)通过的C语言标准ANSI X3.159-1989被称为C89。
• 1990年,国际标准化组织(ISO)接受C89作为国际标准ISO 9899-1990,该标准被称为C90。这两个标准只有细微的差别,因此,通常来讲C89和C90指的是同一个版本。
• 1999年,ANSI通过了C99标准。C99标准相对C89做了很多修改,例如变量声明可以不放在函数开头,支持变长数组,初始化结构体允许对特定的元素赋值等。本书将以C99标准为主进行讲解。
• 2011年,ISO和IEC(国际电工委员会)正式发布C语言标准第3版草案(N1570),提高了C语言对C++的兼容性,并增加了一些新的特性。这些新特性包括泛型宏、多线程、带边界检查的函数等。
1.3.3 C语言的应用领域
根据TIOBE网站公布的编程语言热门程度排行榜,C语言热门程度稳居前三。历年语言热门程度排名如图1-4所示。
图1-4 编程语言排行
C语言也获得了远高于大多数编程语言的评分,TIOBE于2018年10月公布的编程语言评分如图1-5所示。
图1-5 2018年10月语言评分排行
C语言之所以稳居前三,获得高度评价,与其良好的性能及广泛的应用领域密不可分,C语言常被应用在以下领域。
1. 操作系统
C语言可以开发操作系统,主要应用在个人桌面领域的Windows系统内核、服务器领域的Linux系统内核、FreeBSD、苹果公司研发的Mac系统。
2. 应用软件
C语言可以开发应用软件。在企业数据管理中,需要可靠的软件处理有价值的信息,C语言具有高效、稳定等特性,企业数据管理中使用的数据库如Oracle、MySQL、MS SQL Server和SQLite等都由C语言开发。此外金山办公软件WPS及微软的Office办公软件、功能强大的数学软件MatLab等都使用C语言开发。
3. 嵌入式底层开发
当今时代,生活的各个方面都在智能化,智能城市、智能家庭等概念已不再是设想。这些智能领域离不开嵌入式开发,熟知的智能手环、智能扫地机器人、轿车电子系统等都离不开嵌入式开发。
组成这些智能系统的东西,如底层的微处理器控制的传感器、蓝牙、WiFi网络传输模块等使用的硬件驱动库、嵌入式实时操作系统FreeRtos、UCOS和VxWorks等,都主要由C语言开发。
4. 游戏开发
C语言具有强大的图像处理能力、可移植性、高效性等特点。一些大型的游戏中,游戏环境渲染、图像处理等使用C语言来处理,成熟的跨平台游戏库OpenGl、SDL等也由C语言编写而成。