文章标题

什么是C语言?它是20世纪70年代初期在贝尔实验室开发出来的一种用途广泛的编程语言。也许这种简单回答传递出C语言特有的风味。在深入学习这门语言之前,让我们来回顾一下C语言的起源,C语言的设计目标,以及其后续的转变历程。我们还将讨论C语言的优缺点。

1.1 C语言的历史

C语言的历史可以追溯到上个世纪70年代。让我们对C语言发展史作一简单回顾,从它在贝尔实验室的起源开始,再到它作为一种标准化语言的时代。最后谈到它对近代编程语言的影响。
1.1.1追随起源
C语言是贝尔实验室由Ken Thompson以及其他同事在开发UNIX操作系统的过程中的副产品。Ken Thompson独自动手编写了UNIX操作系统的最初版本,这套系统运行在DECPDP-7计算机上。这款早期的小型操作系统仅有16KB字节内存(毕竟那是在1969年!)
与同时期的其它操作系统一样,UNIX系统最初也是用汇编语言编写的。用汇编语言编写的程序往往难以调试和改进,UNIX系统也不例外。Thompson意识到需要一种更加高级的编程语言来完成UNIX系统未来的开发,于是他设计了一种小型的B语言Thompson。的B语言是在BCPL语言的基础上开发的(BCPL语言是20世纪60年代中期产生的一种系统编程语言)。而BCPL语言的起源又可以追溯到一种更早的(并且影响最深远的)Algol60语言。不久,Ritchie也加入到UNIX项目,并且开始着手用B语言编写程序,1970年,贝尔实验室为UNIX项目争取到一台PDP-11计算机。当B语言经过改进并且运行在PDP-11计算机上时,Thompson就用B语言重新编写了部分UNIX代码。到了1971年,B语言已经开始暴露出非常不适合PDP-11计算机的问题,于是开始开发B语言的升级版,使其更加成熟。他最初将新开发的语言命名为NB(意为“New B”),但是最后,新语言越来越脱离B语言(它充分结合了汇编语言和高级语言的优点,高效而灵活,又容易移植。),于是他决定将它改名为C语言,到1973年,C语言已经足够稳定,可以用来重新编写UNIX系统。改用C语言编写程序显示出一个非常重要的好处:可移植性。通过贝尔实验室里为其他类型计算机编写C语言编译器,UNIX系统也同样可以在不同类型的计算机上运行了。

1.1.2标准化历程

整个20世纪70年代,特别是1977年到1979年之间,C语言一直在持续发展,这一时期出现了第一本关于C语言的书,1978年,Brian Kernighan 和 Dennis Ritchie合作编写并出版了《The C Programming Language》一书。此书一经出版就迅速成为C程序员的宝典,由于当时缺少C语言的正式标准,所以这本书就成为了事实上的标准,C语言开发者们一般将它称为“K&R”或者“白皮书”。在20世纪70年代,C语言程序员相对较少,而且他们中的大多数人都是UNIX系统的用户,然而到了20世纪80年代,C语言已经超越了UNIX领域的界限,运行在不同操作系统下的多种类型的计算机开始使用C语言编译器,特别是,迅速壮大的IBM PC机平台也开始使用C语言。
随着C语言的迅速普及,一系列问题也接踵而至。编写新的C语言编译器的程序员们都把“K&R”作为参考,但是遗憾的是,“K&R”对一些语言特征的描述非常模糊。以至于编译器常常会对这些特征进行不同的处理。而且,“K&R”也没有对属于C语言的特征和属于UNIX系统的内容进行明确的区分。何况在“K&R”出版后,C语言仍在不断变化,增加了新特征并且去除了少量过时的特征。
不久,这种对C语言进行全面,准确并且最新描述的需求开始显现出来,如果没有这样一种标准,就将会出现各种“方言”,显然,这势必将会影响C语言的主要优势之一——程序的可移植性。
1983年,美国国家标准协会(ANSI)开始编写C语言标准,经过多次修订,C语言标准于1988年完成,并且在1989年12月正式通过,成为ANSI标准X3.159-1989。1990年,国际标准组织(ISO)通过此项标准,将其作为ISO/IEC 9899-1990国际标准。我们把这些标准中描述的C语言称为“ANSI C”、“ANSI/ISO C”或者叫做“标准C”,习惯上我们一般称之为“标准C”。
关于叫法,有一点是值得注意的:虽然经常把“K&R”第一版中描述的C语言称为K&R C但是自从1988年“K&R”的第二版出版以后,这种叫法显然已经不再合适了,这是因为新版反应出的变化都源于ANSI C。所以这里将“K&R”第一版称为经典C,以示区分,这种叫法已经变得非常普遍了。

1.1.3 C++语言

虽然采纳了ANSI/ISO标准以后的C语言自身不再发生变化,但是,从某种意义上来说,随着基于C的新式语言的产生,C语言的演变还在继续。新式语言的包括Concurrent C和Objective C,以及最著名的C++语言。
随着计算机性能的飞速提高,硬件配置与几十年前已有天壤之别,软件规模也不断增大,用C语言开发这些软件就显得非常吃力了,这时候C++就应运而生了。C++语言是贝尔实验室的Bjarne Stroustrup设计,它在许多方面对C语言进行了扩展尤其是增加了面向对象编程的特性。目前看来,C++和C语言虽然是两门独立的语言,但是他们却有着密切的联系。早期并没有“C++”这个名字,而是叫做“带类的C”。“带类的C”的出现是作为C语言的一个扩展和补充出现的,目的很明确:提高开发效率。
这个时期的C++较为普通,仅支持简单的面向对象编程,也没有自己的编译器,而是通过一个预处理程序(即cfront),先将C++代码“翻译”成C语言代码,在通过C语言编译器合成最终的程序。
随着C++的完善,它的语法也越来越强大,已经能够很完善的支持面向对象编程。但是一直也没有诞生出新的C++编译器,而是通过对原有C语言编译器的不断扩展,让它支持C++的新特征,我们一般称之为C/C++编译器,因为它同时支持C和C++。可以这样说,无论你写的是C代码,还是C++代码,最终都会通过一个编译器来编译。
C语言和C++的关系

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值