目录

从头学C(1): C语言简介

目录

要了解一座城市的过去和现在,你需要从博物馆开始。一座博物馆,就是一段发展史,通过文物,穿越时空的阻隔,回顾历史的那些风风雨雨。

城市如此,C语言亦是如此,历史值得被回忆。

起源

1960年,ALGOL 60ALGOrithmic Language 1960`,即算法语言60)横空出世,标志着程序设计语言由技艺转向科学,这也是C语言最早的原型。

1963年,英国剑桥大学在ALGOL 60的基础上推出了CPL(Combined Programming Langurage)语言,使其更接近硬件,但规模比较大,难以实现。

1967年,英国剑桥大学的Matin Richards(马丁·理察德)对CPL语言做了简化,推出了BCPL(Base Combined Programming Langurage)语言。

1970年,美国贝尔实验室(Bell Labs)的 Ken Thompson(肯·汤普逊)对BCPL进行了修改,并取名叫做B语言,意思是提取CPL的精华(Boiling CPL down to its basic good features)。并用B语言写了第一个UNIX系统。

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

./Dennis_Ritchie.jpg
Dennis Ritchie

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

随着 C 语言在多个领域的推广、应用,一些新的特性不断被各种编译器实现并添加进来。于是,建立一个新的"无歧义、与具体平台无关的 C 语言定义”成为越来越重要的事情。

1983 年,ASC X3(ANSI 属下专门负责信息技术标准化的机构,现已改名为INCITS)成立了一个专门的技术委员会 J11(J11 是委员会编号,全称是 X3J11),负责起草关于 C语言的标准草案。

1989 年,草案被ANSI正式通过成为美国国家标准,被称为 C89 标准。

随后,《The C Programming Language》第二版开始出版发行,书中内容根据 ANSI C(C89)进行了更新。

1990 年,在 ISO/IEC JTC1/SC22/WG14 (ISO/IEC 联合技术第 I 委员会第 22 分委员会第 14 工作组) 的努力下,ISO 批准了 ANSI C 成为国际标准。于是 ISO C(又称为 C90) 诞生了。除了标准文档在印刷编排上的某些细节不同外,ISO C(C90) 和 ANSI C(C89) 在技术上完全一样。

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

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

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

后记

感觉以前学的很是零散,是时候好好整理下C语言的知识了,这次的《从头学C》系列正是本着这样初衷,也算是给自己一个交代吧。

内容基于机械工业出版社的《C程序设计语言》第2版,均是偏基础的东西,老鸟请自觉无视。

./the_c_programming_language.jpg
《C程序设计语言》第2版