一站式电子元器件采购平台

华强商城公众号

一站式电子元器件采购平台

元器件移动商城,随时随地采购

华强商城M站

元器件移动商城,随时随地采购

半导体行业观察第一站!

芯八哥公众号

半导体行业观察第一站!

专注电子产业链,坚持深度原创

华强微电子公众号

专注电子产业链,
坚持深度原创

电子元器件原材料采购信息平台

华强电子网公众号

电子元器件原材料采购
信息平台

回顾一下 C 语言的发展历程

来源:工程师进阶笔记 发布时间:2022-01-08

摘要: 1973 年,AT&T贝尔实验室的Dennis Ritchie(D.M.RITCHIE) 在BCPL 和B 语言的基础上设计出了一种新的语言,取BCPL 中的第二个字母为名,这就是大名鼎鼎的C 语言。随后不久,UNIX的内核(Kernel)和应用程序全部用C 语言改写,从此,C语言成为UNIX 环境下使用最广泛的主流编程语言。

01
各个版本详解

1、K&RC

1978 年,DennisRitchie 和Brian Kernighan 合作推出了《TheC Programming Language》的第一版(按照惯例,经典著作一定有简称,该著作简称为K&R),书末的参考指南(Reference Manual) 一节给出了当时C 语言的完整定义,成为那时C 语言事实上的标准,人们称之为K&R C。从这一年以后,C语言被移植到了各种机型上,并受到了广泛的支持,使C 语言在当时的软件开发中几乎一统天下。

2、ANSIC(C89)

随着C语言在多个领域的推广、应用,一些新的特性不断被各种编译器实现并添加进来。于是,建立一个新的“无歧义、与具体平台无关的C 语言定义”成为越来越重要的事情。1983 年,ASCX3(ANSI 属下专门负责信息技术标准化的机构,现已改名为INCITS)成立了一个专门的技术委员会J11(J11 是委员会编号,全称是X3J11),负责起草关于C 语言的标准草案。1989年,草案被ANSI 正式通过成为美国国家标准,被称为C89 标准。

3、ISOC(C90)

随后,《TheC Programming Language》第二版开始出版发行,书中内容根据ANSI C(C89)进行了更新。1990年,在ISO/IEC JTC1/SC22/WG14 (ISO/IEC 联合技术第I 委员会第22 分委员会第14 工作组)的努力下,ISO批准了ANSI C 成为国际标准。于是ISO C(又称为C90) 诞生了。除了标准文档在印刷编排上的某些细节不同外,ISOC(C90) 和ANSI C(C89) 在技术上完全一样。 

4、C95

之后,ISO在1994、1996年分别出版了 C90 的技术勘误文档,更正了一些印刷错误,并在1995年通过了一份C90 的技术补充,对C90 进行了微小的扩充,经过扩充后的ISO C 被称为C95

5、C99

1999 年,ANSI和ISO 又通过了最新版本的C 语言标准和技术勘误文档,该标准被称为 C99 。这基本上是目前关于C 语言的最新、最权威的定义了

6、C11

在2011年12月,国际标准化组织(ISO)和国际电工委员会(IEC)采纳了第三个C语言标准,名叫ISO/IEC9899:2011 - Information technology -- Programming languages --C,简称C11标准。它是C程序语言的最新标准。

总结一张图如下

微信图片_20220429093135.png


02
编译器相关


现在,各种C 编译器都提供了C89(C90) 的完整支持,对 C99 还只提供了部分支持,还有一部分提供了对某些K&R C 风格的支持。 

目前主要的C语言规范有c89(c90),c95(94)和c99。C89是最早的C语言规范,于89年提出,90年先由美国国家标准局推出ANSI版本,后来被接纳为ISO国际标准 (ISO/IEC9899:1990),因而有时也称为c90。但在94和96年分别对c90进行了两次错误修正,gcc支持的是修正后的c89(90)版本的C语言规范。

在95年提出过对90版规范的修订案,称为C95或者AMD1。gcc也支持c95规范。最新的一次C规范修订在99年制定(ISO/IEC9899:1999),即常称的C99规范。

在2001年对C99的错误进行了修正,gcc支持的修正后的c99规范,但是到目前为止,gcc还没有完成对c99规范的完全支持


03
通俗理解


从第1点来看,刚开始美国自己的标准协会ANSI给C语言定义了一套标准,我取名叫C标准1。国际标准化组织ISO看到了,眼红了,就把C标准1拿来瞧了瞧,跟ANSI说“不错,蛮牛逼的,但是有几个地方还不完善啊,这样,我来修改下”。于是ISO修改了一些地方,然后也发布了一个标准,我取名叫C标准2吧。ANSI一看,哟,老兄帮我修改了下,不错嘛,那我也接受,于是ANSI与ISO就承认这个C标准2了。但是ANSI的fans还是把C标准2念成ANSIC标准,ISO的fans就把C标准2念成ISOC标准,既不是ANSI的fans也不是ISO的fans就把C标准2念成StandardC。

从第2点来看,刚开始ANSI制定了C标准,这一制定就耗费了6年时间,终于在89年发布了,所以就叫C89标准了,也就是我取名的C标准1;

从第3点来看,在90年的时候,ISO等组织采纳了C89标准,然后做了一些修改再发布,就变成C90标准了,也就是我取名的C标准2;

从第4点来看,到了2000年,ISO可能又修改了C90标准,并且发布新标准,就叫C99标准了;

从第5点来看,到了2011年,ISO可能又修改了C99标准,并且发布新标准,就叫C11标准了。看来一般是每隔10年就会发布一个新标准啊。


04
C语言起源问题


C 语言最早的原型是ALGOL 60 1963 年,剑桥大学将其发展成为CPL(Combined Programing Language)。1967 年,剑桥大学的Matin Richards 对CPL 语言进行了简化,产生了BCPL 语言。1970 年,美国贝尔实验室(BellLabs)的Ken Thompson 将BCPL 进行了修改,并取名叫做B 语言,意思是提取CPL 的精华(BoilingCPL down to its basic good features)。并用B 语言写了第一个UNIX 系统。1973 年,AT&T贝尔实验室的Dennis Ritchie(D.M.RITCHIE) 在BCPL 和B 语言的基础上设计出了一种新的语言,取BCPL 中的第二个字母为名,这就是大名鼎鼎的C 语言。随后不久,UNIX的内核(Kernel)和应用程序全部用C 语言改写,从此,C语言成为UNIX 环境下使用最广泛的主流编程语言。

声明:本文观点仅代表作者本人,不代表华强商城的观点和立场。如有侵权或者其他问题,请联系本站修改或删除。

社群二维码

关注“华强商城“微信公众号

调查问卷

请问您是:

您希望看到什么内容: