前言

作为理工科的我们,看到一些理论、概念和一些术语,就是脑瓜疼。在大学时,这些知识,很多时候都是作为填空题,最终的答案就跟四级作文差不多,答案脑洞大开。回归正题,其实,有很多东西我们只需要了解一下就好了,知道有这么一回事。例如,C语言是谁搞出来的,C语言又是怎么编译?后者便是经常问到的问题。

这篇文章主要是C语言入门中的了解篇,简单了解一下C语言的发展史和特点,还有C语言编译的过程。

C语言的发展史

所谓“吃水不忘挖井人”,我们学习C语言,那就需要知道C语言之父是哪位大佬了。那么他是来自美国的丹尼斯.里奇(DennisRitchie),生于1941年,在1972年发明了C语言,2011年10月12日永远离开了我们。他可谓是程序员祖师爷,来自于贝尔实验室,1983年获得图灵奖,除了C语言,我们熟知的Unix系统也是他设计开发的。下图就是丹尼斯里奇的照片。

简述c语言的发展史,c语言发展简要过程

C语言并不是只给一个人使用的,使用者就包括开发者、维护者、管理者和实现者,这么多人一起用,假如你一套他一套,没有统一的标准,这时候就乱成一团了,你写的东西他看不懂,他写的东西你也看不懂。所以,C语言就必须有标准,推动其发展。这些标准就可以看似C语言的发展史了。

1.“K&R”标准

1978年,丹尼斯.里奇和布莱恩.科尔尼汗联合出版了《C程序设计语言》(TheC ProgrammingLanguage)的著作,这本书被C语言开发者称为“K&R”,很多年来被当作C语言的非正式的标准说明,人们称这个版本的C语言为“K&RC”。

1988年丹尼斯里奇和布莱恩科尔尼汗修改此书,出版了《C程序设计语言》第二版,第二版就涵盖了ANSIC语言标准,这个版本也成为了大学C语言的经典教材。书本如下图:

简述c语言的发展史,c语言发展简要过程

链接:https://pan.baidu.com/s/12HgGVVGfAMYmzBOAPu6Cqg提取码:gicr

(附件有该书的pdf版本)

2. “C89”标准

C语言在1972年11月问世,1978年由美国电话电报公司(AT&T)贝尔实验室正式发布。1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言很多不同的版本。为了统一C语言版本,1983年,美国国家标准局(AmericanNational StandardsInstitute,ANSI)开始制定C语言标准,于1989年12月完成,在1990年春发布,这个标准称为“ANSIC”标准,也叫“C89”标准。

3.“C90”标准

后来ANSI把“C89”标准提交到ISO(国际化标准组织),1990年被ISO采纳为国际标准,称为“ISOC”标准。又因为这个版本是1990年发布的,因此也被称为“C90”标准。ANSIC(C89)和ISOC(C90)内容基本相同,主要区别在于格式组织不一样而已。

4.“C99”标准

在“C89”标准确立后,C语言的规范在很长一段时间内都没有大的变动。直到1995年,C程序设计语言工作组对C语言进行了一些修改,称为后来在1999年发布的ISO/IEC9899:1999标准,通常被称为“C99”标准。

5.“C11”标准

2007年,C语言标准委员会又重新开始修订C语言,在2011年正式发布了ISO/IEC9899:2011标准,简称为“C11”标准。

以下为C语言发展图。

简述c语言的发展史,c语言发展简要过程

这么多标准,到底是用哪个呢?“K&R”是非正式标准,而且年代久远,现在基本上是不使用;“C89”和“C90”属于同一个标准,内容一样,只是认证的机构不一样而已,这个标准也一直用到现在。目前的主流应该是“C99”标准,GCC编译器对“C99”标准的支持相当于较好。那GCC是啥呢?GCC(GNUCompiler Collection, GNU编译器集合)是一套由GNU工程开发的支持多种编程语言的编译器。

C语言被人称为结构化语言,那么C语言程序设计就是结构化程序设计,主要观点就是采用自顶向下,逐步细分和模块化的程序设计方法,使用顺序、选择、循环三种基本控制结构来构造程序。

C语言从诞生到现在,已经经历了半个多世纪,依然受到开发者的青睐,并称为广大工程师的入门首选语言,并且在TIOBE编程语言榜上都是前三位置(很多时候都是老大位置)。下图就是TIOBE最新编程语言排行榜,也可以通过下面的网址进行查看https://www.tiobe.com/tiobe-index/。

简述c语言的发展史,c语言发展简要过程

C语言的优点

在这里概括为三个:简洁、灵活、高效。

1.简洁性:

C语言一共只有32个关键字和3种基本控制结构,可通过简短的代码实现模块,并对模块加以整合,从而构建出一个庞大而复杂的程序。32个关键字如下图所示,而3种基本控制结构即前面提到的顺序、选择、循环。

简述c语言的发展史,c语言发展简要过程

2.灵活性

C语言程序编写形式比较自由,语法限制不太严格,程序设计自由度大。C语言能通过简单的整数类型、实数类型和字符类型,灵活构造出更加复杂的数组、指针、结构体、联合体等复合数据类型,并以此实现链表、队列、栈、树、图等各种数据结构。特别是C语言的精华“指针”,通过指针可以直接寻址到相对应的内存单元,即可对内存的数据进行访问、修改等操作,从而编写出非常灵动、神奇的C语言程序。

3.高效性

程序设计语言可分为机器语言、汇编语言和高级语言,机器语言是使用0和1二进制码编写的语言,由于计算机能直接识别,所以说用机器语言编写的程序效率很高,但是对于我们来说可读性很差,所以后来就产生了汇编代码,提高了程序的可读性。

用C语言编译生产的目标代码执行的效率仅比汇编语言低一些,但是比其他高级语言(C 、java、C#)编写出的程序要高。

我们天天使用的操作系统、数据库、游戏引擎等大多都是使用C语言进行实现的,还有很多经典算法、框架也是使用C语言进行编写的。学好C语言也是为了嵌入式开发打好基础。

简述c语言的发展史,c语言发展简要过程

C语言的发展史

发展史:

C语言的祖先是BCPL语言。
1967年,剑桥大学的 Martin Richards 对CPL语言进行了简化,于是产生了BCPL(Basic Combined Pogramming Language)语言。

1970年,美国贝尔实验室的 Ken Thompson。以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。

在1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了使UNIX操作系统推广,1977年Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。
1990年,国际标准化组织ISO(International Organization for Standards)接受了89 ANSI C 为I SO C 的标准(ISO9899-1990)。

1994年,ISO修订了C语言的标准。

1995年,ISO对C90做了一些修订,即“1995基准增补1(ISO/IEC/9899/AMD1:1995)”。

1999年,ISO有对C语言标准进行修订,在基本保留原来C语言特征的基础上,针对应该的需要,增加了一些功能,尤其是对C++中的一些功能,命名为ISO/IEC9899:1999。

2001年和2004年先后进行了两次技术修正。
目前流行的C语言编译系统大多是以ANSI C为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则有略有差别。

简述c语言的发展史,c语言发展简要过程

c语言的发展历程

C语言的发展历史
C语言的发展颇为有趣。它的原型ALGOL 60语言。(也成为A语言)
1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。
1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。
1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。
而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。
1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3.C语言的主要特点 。C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。