2.3 C/C++发展简史
C语言由贝尔实验室的Dennis Ritchie从两个早期语言BCPL和B发展而来,并于1972年在DEC PDP-11型机上实现。C语言最强大之处在于提供灵活的数据类型和硬件操作能力(位操作能力),因此被广泛用做操作系统软件和设备驱动程序设计的首选语言。UNIX操作系统就是使用C语言开发的第一个大型软件系统。实际上,现在的大多数操作系统都是用C/C++语言实现的。C语言与硬件无关,因此经过认真的设计,程序员编写出的程序可以移植到大多数不同的硬件平台上。
随着C语言的广泛应用,出现了许多不兼容的版本,这对于C的可移植性来说是一个非常严重的问题。1983年,ANSI开始组织C的标准化工作。1989年,ANSI C语言标准正式颁布。此后,ANSI与ISO合作在全世界范围内对C语言进行标准化和推广。1990年,标准文档出版,ANSI/ISO C正式诞生。C语言的最新情况是:1999年,ISO批准了一个新的C语言版本,即C99。
1979年,贝尔实验室的一个年轻工程师Bjarne Stroustrup为了使C语言成为一种更好的实现大型软件工程的编程语言而展开了实验,实验的内容就是对C进行扩展。那时,一般项目都需要十几万行的代码。现在,光是Windows 2000(前身是NT 5.0)就有3000多万行代码。当软件规模超过了100000行代码的时候,C语言的缺陷达到了让人无法忍受的地步。
最初对C的扩展就是给它增加类的概念,从而产生了“带类的C”,它可以很好地支持封装和信息隐藏。1983年,又对带类的C做了几处修改和扩展,于是“C++”这个名字产生了。
Bjarne Stroustrup是C++的鼻祖,受到无数程序员的敬仰。按中国人的说法,Bjarne果真是聪明绝顶。当初他要是把“++”注册了专利,不仅可以发一笔大财,而且也不会导致现在“++”满天飞。
1985至1989年间,C++经历了最主要的革新:相继增加了保护成员、保护继承、模板,以及有争议的多重继承等特性。C++到了需要标准化的时候。
C++的标准化不同于C的标准化,它从一开始就是国际性的合作。ANSI C委员会使用Kernighan和Ritchie写的《The C Programming Language》作为起点,而ANSI C++委员会使用Ellis和Bjarne写的《Annotated C++ Reference Manual (ARM)》作为基础文档。1998年,在做了一些次要的修改后,ANSI/ISO C++产生了。C++的国际性工作使得该标准在世界范围内被广泛接受。
关于C++的设计和演化,在Bjarne Stroustrup的著作《The Design and Evolution of C++》中有详细的叙述,其中总结了C++的一些设计原则:
✧ C++的每一步演化和发展必须是由于实际问题所引起的。
✧ C++是一门编程语言,而不是一个完整的系统。
✧ 不能无休止地一味追求完美。
✧ C++在其存在的“当时”必须是有用处的。
✧ 每一种语言特性必须有明确的实现方案。
✧ 总能提供一种变通的方法。
✧ 不强制于人。
……
从一开始,C++面向的就是那些从事软件开发工作的程序员。所谓的“完美”被认为是不可能达到的。在C++语言的演化过程中,来自用户的反馈和语言实现者们积累的经验是最为重要的。