跳转到内容

C语言

轻之舟百科,让知识轻装启航
C
中文名C语言
英文名C
设计者丹尼斯·里奇(Dennis Ritchie)、肯·汤普森(Ken Thompson)
设计年份1972年
主要实现GCC、Clang、MSVC、Intel C++ Compiler等
影响语言C++、Objective-C、Java、C#、Go、Rust等
操作系统跨平台

C(全称:C Programming Language)是一种通用的、面向过程的计算机程序设计语言。它由丹尼斯·里奇(Dennis Ritchie)于1972年在贝尔实验室设计并实现,最初目的是作为Unix操作系统的系统实现语言[1]。C语言兼具高级语言和汇编语言的特点,能够以简易的方式编译、处理低级存储器,产生少量的机器码,且不需要任何运行环境支持便可运行[2]。凭借其高效性、灵活性和可移植性,C语言被广泛应用于系统软件、嵌入式系统、操作系统和编译器等的开发中,并对后续众多编程语言产生了深远影响[3]。

起源与早期发展

[编辑 | 编辑源代码]

C语言的起源可以追溯到20世纪60年代。1967年,剑桥大学的马丁·理查兹(Martin Richards)对CPL语言进行了简化,创造了BCPL(Basic Combined Programming Language)语言[4]。1969年,肯·汤普森(Ken Thompson)在贝尔实验室以BCPL为基础,设计出了更接近硬件的B语言,并用它编写了第一个版本的Unix操作系统[1]。

1971年,丹尼斯·里奇加入Thompson的项目,致力于改进B语言。在将B语言移植到PDP-11计算机的过程中,他们遇到了一系列问题,于是里奇在B语言的基础上增加了数据类型等特性,创造了一种新语言。1972年,这种新语言被正式命名为“C”,取自BCPL的第二个字母。1973年,C语言的主体完成,Thompson和Ritchie随即用C语言重写了Unix内核[1]。

经典时期与标准化

[编辑 | 编辑源代码]

1978年,布莱恩·科尔尼干(Brian Kernighan)和丹尼斯·里奇合著了《The C Programming Language》(中文译名《C程序设计语言》)。这本书被广泛称为“K&R C”,成为C语言事实上的标准规范[2]。

随着C语言的普及,为了统一不同实现之间的差异,美国国家标准协会(ANSI)于1983年成立了X3J11委员会,开始着手C语言的标准化工作[5]。1988年,K&R C的第二版出版,以反映即将到来的ANSI标准。1989年,ANSI正式批准了C语言标准(ANSI X3.159-1989),即C89。1990年,该标准被国际标准化组织(ISO)采纳为ISO/IEC 9899:1990,即C90[6]。

此后,C语言标准经历了多次修订和扩展,主要包括:1995年的C95(扩充了宽字符和多字节字符支持)、1999年的C99(增加了long long、<stdint.h>、restrict等新特性)、2011年的C11、2017年的C17以及2023年发布的C23[7][8]。

设计哲学与特性

[编辑 | 编辑源代码]

C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量机器码且无需运行环境支持的编程语言。其核心特性包括:

  • 面向过程:C语言是一种面向过程的语言,强调通过函数(过程)来组织代码,与C++、Java等面向对象语言有所不同[2]。
  • 指针与内存管理:C语言通过指针提供了对内存的直接访问能力。程序员可以使用malloc()和free()等函数进行显式的动态内存管理[2]。
  • 高效与灵活:C语言的代码质量与汇编语言相当,一般只比汇编语言生成的目标程序效率低10%~20%。它提供了丰富的运算符和数据结构,既适合编写系统软件,也适合编写应用软件[1]。
  • 可移植性:C语言程序可以在多种计算机平台上编译运行,只要该平台拥有对应的C语言编译器和库[2]。

C语言的设计和成功对后来的编程语言发展产生了深远影响。许多主流编程语言都直接或间接地借鉴了C语言的语法和思想[3],例如:

  • C++:在C语言基础上增加了面向对象编程特性[3]。
  • Objective-C:在C语言基础上增加了Smalltalk风格的消息传递机制。
  • Java和C#:借鉴了C语言的语法风格,但采用了不同的运行时和内存管理模型。

此外,C语言也是许多操作系统(如Linux、Unix)和嵌入式系统开发的核心语言。

参考文献

[编辑 | 编辑源代码]
  1. ↑ 1.0 1.1 1.2 1.3 Ritchie, Dennis M. "The Development of the C Language." ACM SIGPLAN Notices 28, no. 3 (March 1993): 201–208.
  2. ↑ 2.0 2.1 2.2 2.3 2.4 Kernighan, Brian W., and Dennis M. Ritchie. *The C Programming Language*. 2nd ed. Prentice Hall, 1988.
  3. ↑ 3.0 3.1 3.2 Stroustrup, Bjarne. *The Design and Evolution of C++*. Addison-Wesley, 1994.
  4. ↑ Richards, Martin. "BCPL: A Tool for Compiler Writing and Systems Programming." Proceedings of the Spring Joint Computer Conference, 1969.
  5. ↑ American National Standards Institute. "Programming Language C." ANSI X3.159-1989, 1989.
  6. ↑ International Organization for Standardization. "Programming Languages — C." ISO/IEC 9899:1990, 1990.
  7. ↑ International Organization for Standardization. "Programming Languages — C." ISO/IEC 9899:2011, 2011.
  8. ↑ International Organization for Standardization. "Programming Languages — C." ISO/IEC 9899:2023, 2023.