1.1 C++语言的发展过程
C++是一种通用的程序设计语言,它以其独特的语言机制和全面支持面向对象编程的优势受到了很多程序员的钟爱,并在计算机科学领域得到了广泛的应用,例如,读者所熟悉的Windows操作系统就是用C++语言和C语言编写的。
C++语言是直接从C语言发展过来的,C语言的出现是与UNIX操作系统密切联系在一起的,C语言的本身也有一个产生和发展的过程。具体的发展情况如下:
1960年出现的ALGOL 60是一种面向问题的高级语言,由于它离硬件比较远,所以不宜用来编写系统程序。
1963年英国的剑桥大学推出了CPL语言。CPL语言在ALGOL 60的基础上比较接近硬件,但规模比较大,难以实现。
1967 年英国剑桥大学 Matin Richards 对 CPL 语言做了简化,推出了 BCPL(Basic Combined Programming Language)语言。
1970年美国贝尔实验室的Ken Thomson以BCPL语言为语言基础,又做了进一步简化,设计出了既简单又很接近硬件的B语言,并用B语言编写了第一个UNIX操作系统,在PDP-7上实现。但B语言缺乏丰富的数据类型,又以字长编址,有一定的缺陷。
自1971年开始,D.Ritchie用了一年左右的时间,在B语言的基础上加入了丰富的数据类型和强有力的数据结构,从而形成了C语言。Dennis Ritchie开发C语言的主要目的是为了更好地描述UNIX操作系统。
1973年Ken Thomson和D.M. Ritchie两人合作把90%以上的UNIX用C语言改写。
1978年Brian W. Kernighan、Ken Thomson和Dennis Ritchie三人合作,写了一本著名的书《The C Programming Language》,该书介绍的C语言被称为标准C语言。
1983年,美国国家标准化协会(ANSI)建立了一个委员会,着手制定ANSI的标准C。
1988年,ANSI公布了标准ANSIC。这个标准的大部分特性已经由现代的编译系统所支持,使得C的可移植性很强。
1989年,正式制订了C语言的标准:ANSIC。
最初导致C++诞生的原因是在Bjarne博士等人试图去分析UNIX内核的时候,这项工作开始于1979年4月,当时由于没有合适的工具能够有效地分析由于内核分布而造成的网络流量,以及怎样将内核模块化。同年10月,Bjarne博士完成了一个可以运行的预处理程序,称为Cpre,它为C加上了类似Simula的类机制。在这个过程中,Bjarne博士开始思考是不是要开发一种新的语言,当时贝尔实验室对这个想法很感兴趣,就让Bjarne博士等人组成一个开发小组,专门进行研究。
当时不是叫做C++,而是C With Class,这是把它当做一种C语言的有效扩充。由于当时C语言在编程界居于“老大”的地位,要想发展一种新的语言,最强大的竞争对手就是 C 语言,所以当时有两个问题最受关注:C++要在运行时间、代码紧凑性和数据紧凑性方面能够与C语言相媲美,但是还要尽量避免在语言应用领域的限制。在这种情况下,一个很自然的想法就是让C++语言从C语言继承过来,但是Bjarne博士更具有先见之明,他为了避免受到C语言的局限性,参考了很多的语言,例如,从Simula继承了类的概念,从ALGO168继承了运算符重载、引用及在任何地方声明变量的能力。
1983年12月,Rick Mascitti建议命名为CPlusPlus,即C++。在经历了3次对C++的修订后,于1994年ANSI/ISO委员会制订了ANSI C++标准的草案。以后又经过不断完善,1998年11月,正式批准了ANSI C++标准。C++包含C的全部特征、属性和优点,同时又增加了对面向对象编程的支持,而这一关键特性引发了软件业关于程序设计开发的一场革命,使人们从过去的过程式开发技术和结构化开发技术过渡为面向对象开发技术。