1.1 C语言的发展
1.1.1 C语言的发展简史
C语言的原型是ALGOL 60语言。1963年,剑桥大学将ALGOL 60语言发展成为CPL (Combined Programming Language)。1967年,剑桥大学的马丁·理查兹对CPL进行了简化,开发出了BCPL(Basic Combined Programming Language)。1970年,美国贝尔实验室的肯·汤普森将BCPL进行了修改,并为它起了一个新名字“B语言”,意思是提炼出CPL的精华,并且他用B语言写了第一个UNIX操作系统。而在1972年,B语言也被“提炼”了一下,美国贝尔实验室的丹尼斯·里奇在 B 语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
为了推广UNIX操作系统,1977年丹尼斯·里奇发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。1978年布莱恩·科尔尼干和丹尼斯·里奇出版了名著《C语言程序设计》The C Programming Language,从而使C语言成为目前世界上使用最广泛的高级程序设计语言。1988年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。
早期的C语言主要是用于UNIX系统。C语言的强大功能和各方面的优点使其逐渐为人们认识,到了20世纪80年代,C开始进入其他操作系统,并很快在各类大、中、小和微型计算机上得到了广泛应用,成为当代最优秀的程序设计语言之一。C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的操作系统软件,如DOS、Windows、Linux都是由C 语言编写的。
1.1.2 C语言的特点
C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构,还可以直接访问内存的物理地址,进行位(bit)一级的操作。
由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件及三维、二维图形和动画,例如,单片机以及嵌入式系统开发 。此外,C语言还具有效率高、可移植性强等特点,被广泛移植到各类计算机上。
1.1.3 C语言的版本
1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159—1989,简称“C89”,不过人们也习惯称其为“ANSIC”。C89在1990年被国际标准组织(International Organization for Standardization,ISO)采纳,所以也有“C90”的说法。
1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,并将其命名为ISO/IEC 9899:1999,简称“C99”。C99被ANSI于2000年3月采用。2011年12月8日, ISO正式发布了新的C语言的新标准C11,之前被称为C1X,官方名称为ISO/IEC 9899:2011。新的标准提高了对C++的兼容性,并增加了一些新的特性。
1.1.4 C和C++
C++语言是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。在C语言的基础上,1983年又由贝尔实验室的本贾尼·斯特劳斯特卢普推出了C++语言。C++语言进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C++语言提出了一些更为深入的概念,它支持的这些面向对象的概念容易将问题空间直接映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。C++语言应用较为广泛,是一种静态数据类型检查的、支持多重编程的通用程序设计语言。C++语言支持过程化程序设计、数据抽象、面向对象设计、制作图标等多种程序设计风格。因而也增加了整个语言的复杂性,掌握起来有一定难度。C++语言目前的最新标准是2014年8月18日经过C++语言标准委员投票通过的C++14。
C语言是一个结构化语言,它的重点在于算法与数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。C++首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制。因此,C语言和C++语言的最大区别在于它们解决问题的思想方法不一样。
C语言是C++语言的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++语言就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。