fbpx
维基百科

C语言的历史

本文记述了C语言自20世纪70年代至今的历史及发展。

早期發展

 
肯·汤普逊和丹尼斯·里奇,是C程式語言的开发者.

C語言最早由丹尼斯·里奇(Dennis Ritchie)為了在PDP-11電腦上運行的Unix系統所設計出來的程式語言,第一次發展在1969年到1973年之間。

C源于BCPL语言,后者由馬丁·理察德(Martin Richards)于1967年左右设计实现。BCPL是一门"无类型"的编程语言:它仅能操作一种数据类型,即机器字(machine word)。1970年,肯·汤普逊为运行在PDP-7上的首个Unix系统设计了一个精简版的BCPL,这个语言被称为B语言,它也是无类型的。

Unix最早運行在PDP-7上,是以組合語言寫成。在PDP-11出现後,丹尼斯·里奇與肯·汤普逊着手將Unix移植到PDP-11上,无类型的语言在PDP-11上愈发显得不合适。PDP-11提供了多种不同规格大小的基本对象:一字节长的字符,两字节长的整型数以及四字节长的浮点数。B语言无法处理这些不同规格大小的对象,也没有提供单独的操作符去操作它们。

C语言最初尝试通过向B语言中增加数据类型的想法来处理那些不同类型的数据。和大多数语言一样,在C中,每个对象都有一个类型以及一个值;类型决定了可用于值的操作的含义,以及对象占用的存储空间大小。

1973年,Unix作業系統的核心正式用C語言改寫,這是C語言第一次應用在作業系統的核心編寫上。

1975年C语言开始移植到其他机器上使用。史蒂芬·強生英语Stephen C. Johnson实现了一套「可移植编译器」,这套编译器修改起来相对容易,并且可以为不同的机器生成代码。从那时起,C在大多数计算机上被使用,从最小的微型计算机到与CRAY-2超级计算机。C语言很规范,即使没有一份正式的标准,你也可以写出C程序,这些程序无须修改就可以运行在任何支持C语言和最小运行时环境的计算机上。

C最初在小型机器上实现,并且继承了一系列小语种编程语言的特点;与功能相比,C的设计者更倾向于简单和优雅。此外,从一开始,C语言就是为系统级编程而设计,程序的运行效率至关重要,因此,C语言与真实机器能力的良好匹配也就不足为奇。例如,C语言为典型硬件所直接支持的对象:字符整数(也许有多种大小),以及浮点数(同样可能有多种大小)提供了相应的基本数据类型。[1]

K&R C

 
《C程序设计语言》第一版封面

1978年,丹尼斯·里奇布萊恩·柯林漢合作出版了《C程序设计语言》的第一版。書中介紹的C語言標準也被C語言程式設計師稱作“K&R C”(柯里C),第二版的書中也包含了一些ANSI C的標準。

K&R C主要引入了以下语言特性:

  • 标准I/O库
  • 结构(struct)类型
  • 长整数(long int)类型
  • 无符号整数(unsigned int)类型
  • 把运算符=+=-改为+=-=。因为=+=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產生混淆。

即使在後來ANSI C標準被提出的許多年後,K&R C仍然是許多編譯器的最低標準要求,許多老舊的編譯仍然運行K&R C的標準。[2]

ANSI C 和 ISO C

1989年,C语言被美國國家標準協會(ANSI)标准化,編號為ANSI X3.159-1989。這個版本又稱為C89。标准化的一个目的是扩展K&R C,增加了一些新特性。

  • void 函数
  • 函数可以返回 structunion 类型
  • void * 数据类型

1990年,国际标准化组织(ISO)成立 ISO/IEC JTC1/SC22/WG14 工作组,来规定国际标准的C语言,通过对ANSI标准的少量修改,最终製定了 ISO 9899:1990,又稱為C90。随后,ANSI亦接受國際標準C,並不再發展新的C標準。[3]

K&R C语言到ANSI/ISO标准C语言的改进包括:

  • 增加了真正的标准库
  • 新的预处理命令与特性
  • 函数原型允许在函数申明中指定参数类型
  • 一些新的关键字,包括 constvolatilesigned
  • 宽字符、宽字符串与多字节字符
  • 对约定规则、声明和类型检查的许多小改动与澄清

WG14工作小组之後又於1994年,对1985年颁布的标准做了两处技术修订(缺陷修复)和一个补充(扩展)。下面是 1994 年做出的所有修改:

  • 3 个新的标准库头文件 iso646.h、wctype.h 和 wchar.h
  • 几个新的记号与预定义宏,用于对国际化提供更好的支持
  • printf/sprintf 函数一系列新的格式代码
  • 大量的函数和一些类型常量,用于多字节字符和宽字节字符[4]

C99

在ANSI的标准确立後,C语言的规范在一段时间内没有大的变动,然而C++在自己的标准化建立过程中继续发展壮大。《标准修正案一》在1994年为C语言建立了一个新标准,但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持。不过,这个标准引出了1999年ISO 9899:1999的发表。它通常被称为C99。C99被ANSI于2000年3月采用。

C11

2011年12月8日,ISO正式发布了新的C语言的新标准C11(之前被称为C1X),官方名称为ISO/IEC 9899:2011。新的标准提高了对C++的兼容性,并增加了一些新的特性。这些新特性包括泛型、多執行緒、帶邊界檢查的函式、匿名結構等[5]

C18

C18没有引入新的语言特性,只对C11进行了补充和修正[6]

C2x

C2x引入了一些新特性。目前可以确定的是,C2x标准将加入符合IEEE标准的十进制浮点数,这使得计算机能够精确地储存浮点数[7]

参考资料

  1. ^ Stephen Prata. C Primer Plus(第5版). 北京: 人民邮电出版社. 2005年2月: 3-4 [2020-06-10]. ISBN 9787115130228 (中文). 
  2. ^ Dennis M. Ritchie,Brian W. Kernighan. C程序设计语言. 北京: 机械工业出版社. 2004年1月 [2020-06-10]. ISBN 9787111128069 (中文). 
  3. ^ Stephen Prata. C Primer Plus(第5版). 北京: 人民邮电出版社. 2005年2月: 12 [2020-06-10]. ISBN 9787115130228 (中文). 
  4. ^ JTC1/SC22/WG14 - C. [2020-06-10]. (原始内容于2020-06-13). 
  5. ^ ISO/IEC 9899:2011 (PDF). [2020-06-10]. (原始内容 (PDF)于2018-03-29). 
  6. ^ ISO/IEC 9899:2018 (PDF). [2020-06-10]. (原始内容 (PDF)于2020-07-22). 
  7. ^ ISO/IEC 9899:202x (PDF). [2020-06-10]. (原始内容 (PDF)于2020-06-10). 

c语言的历史, 本文记述了c语言自20世纪70年代至今的历史及发展, 目录, 早期發展, ansi, 参考资料早期發展, 编辑, 汤普逊和丹尼斯, 里奇, 是c程式語言的开发者, c語言最早由丹尼斯, 里奇, dennis, ritchie, 為了在pdp, 11電腦上運行的unix系統所設計出來的程式語言, 第一次發展在1969年到1973年之間, c源于bcpl语言, 后者由馬丁, 理察德, martin, richards, 于1967年左右设计实现, bcpl是一门, 无类型, 的编程语言, 它仅能操作一种. 本文记述了C语言自20世纪70年代至今的历史及发展 目录 1 早期發展 2 K amp R C 3 ANSI C 和 ISO C 4 C99 5 C11 6 C18 7 C2x 8 参考资料早期發展 编辑 肯 汤普逊和丹尼斯 里奇 是C程式語言的开发者 C語言最早由丹尼斯 里奇 Dennis Ritchie 為了在PDP 11電腦上運行的Unix系統所設計出來的程式語言 第一次發展在1969年到1973年之間 C源于BCPL语言 后者由馬丁 理察德 Martin Richards 于1967年左右设计实现 BCPL是一门 无类型 的编程语言 它仅能操作一种数据类型 即机器字 machine word 1970年 肯 汤普逊为运行在PDP 7上的首个Unix系统设计了一个精简版的BCPL 这个语言被称为B语言 它也是无类型的 Unix最早運行在PDP 7上 是以組合語言寫成 在PDP 11出现後 丹尼斯 里奇與肯 汤普逊着手將Unix移植到PDP 11上 无类型的语言在PDP 11上愈发显得不合适 PDP 11提供了多种不同规格大小的基本对象 一字节长的字符 两字节长的整型数以及四字节长的浮点数 B语言无法处理这些不同规格大小的对象 也没有提供单独的操作符去操作它们 C语言最初尝试通过向B语言中增加数据类型的想法来处理那些不同类型的数据 和大多数语言一样 在C中 每个对象都有一个类型以及一个值 类型决定了可用于值的操作的含义 以及对象占用的存储空间大小 1973年 Unix作業系統的核心正式用C語言改寫 這是C語言第一次應用在作業系統的核心編寫上 1975年C语言开始移植到其他机器上使用 史蒂芬 強生 英语 Stephen C Johnson 实现了一套 可移植编译器 这套编译器修改起来相对容易 并且可以为不同的机器生成代码 从那时起 C在大多数计算机上被使用 从最小的微型计算机到与CRAY 2超级计算机 C语言很规范 即使没有一份正式的标准 你也可以写出C程序 这些程序无须修改就可以运行在任何支持C语言和最小运行时环境的计算机上 C最初在小型机器上实现 并且继承了一系列小语种编程语言的特点 与功能相比 C的设计者更倾向于简单和优雅 此外 从一开始 C语言就是为系统级编程而设计 程序的运行效率至关重要 因此 C语言与真实机器能力的良好匹配也就不足为奇 例如 C语言为典型硬件所直接支持的对象 字符 整数 也许有多种大小 以及浮点数 同样可能有多种大小 提供了相应的基本数据类型 1 K amp R C 编辑 C程序设计语言 第一版封面 1978年 丹尼斯 里奇和布萊恩 柯林漢合作出版了 C程序设计语言 的第一版 書中介紹的C語言標準也被C語言程式設計師稱作 K amp R C 柯里C 第二版的書中也包含了一些ANSI C的標準 K amp R C主要引入了以下语言特性 标准I O库 结构 struct 类型 长整数 long int 类型 无符号整数 unsigned int 类型 把运算符 和 改为 和 因为 和 會使得編譯器不知道使用者要處理i 10還是i 10 使得處理上產生混淆 即使在後來ANSI C標準被提出的許多年後 K amp R C仍然是許多編譯器的最低標準要求 許多老舊的編譯仍然運行K amp R C的標準 2 ANSI C 和 ISO C 编辑主条目 ANSI C 1989年 C语言被美國國家標準協會 ANSI 标准化 編號為ANSI X3 159 1989 這個版本又稱為C89 标准化的一个目的是扩展K amp R C 增加了一些新特性 void 函数 函数可以返回 struct 或 union 类型 void 数据类型1990年 国际标准化组织 ISO 成立 ISO IEC JTC1 SC22 WG14 工作组 来规定国际标准的C语言 通过对ANSI标准的少量修改 最终製定了 ISO 9899 1990 又稱為C90 随后 ANSI亦接受國際標準C 並不再發展新的C標準 3 K amp R C语言到ANSI ISO标准C语言的改进包括 增加了真正的标准库 新的预处理命令与特性 函数原型允许在函数申明中指定参数类型 一些新的关键字 包括 const volatile 与 signed 宽字符 宽字符串与多字节字符 对约定规则 声明和类型检查的许多小改动与澄清WG14工作小组之後又於1994年 对1985年颁布的标准做了两处技术修订 缺陷修复 和一个补充 扩展 下面是 1994 年做出的所有修改 3 个新的标准库头文件 iso646 h wctype h 和 wchar h 几个新的记号与预定义宏 用于对国际化提供更好的支持 printf sprintf 函数一系列新的格式代码 大量的函数和一些类型与常量 用于多字节字符和宽字节字符 4 C99 编辑主条目 C99 在ANSI的标准确立後 C语言的规范在一段时间内没有大的变动 然而C 在自己的标准化建立过程中继续发展壮大 标准修正案一 在1994年为C语言建立了一个新标准 但是只修正了一些C89标准中的细节和增加更多更广的国际字符集支持 不过 这个标准引出了1999年ISO 9899 1999的发表 它通常被称为C99 C99被ANSI于2000年3月采用 C11 编辑主条目 C11 C语言标准 2011年12月8日 ISO正式发布了新的C语言的新标准C11 之前被称为C1X 官方名称为ISO IEC 9899 2011 新的标准提高了对C 的兼容性 并增加了一些新的特性 这些新特性包括泛型 多執行緒 帶邊界檢查的函式 匿名結構等 5 C18 编辑主条目 C18 C語言標準 C18没有引入新的语言特性 只对C11进行了补充和修正 6 C2x 编辑C2x引入了一些新特性 目前可以确定的是 C2x标准将加入符合IEEE标准的十进制浮点数 这使得计算机能够精确地储存浮点数 7 参考资料 编辑 Stephen Prata C Primer Plus 第5版 北京 人民邮电出版社 2005年2月 3 4 2020 06 10 ISBN 9787115130228 中文 Dennis M Ritchie Brian W Kernighan C程序设计语言 北京 机械工业出版社 2004年1月 2020 06 10 ISBN 9787111128069 中文 Stephen Prata C Primer Plus 第5版 北京 人民邮电出版社 2005年2月 12 2020 06 10 ISBN 9787115130228 中文 JTC1 SC22 WG14 C 2020 06 10 原始内容存档于2020 06 13 ISO IEC 9899 2011 PDF 2020 06 10 原始内容存档 PDF 于2018 03 29 ISO IEC 9899 2018 PDF 2020 06 10 原始内容存档 PDF 于2020 07 22 ISO IEC 9899 202x PDF 2020 06 10 原始内容存档 PDF 于2020 06 10 取自 https zh wikipedia org w index php title C语言的历史 amp oldid 73107555 C2x, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。