揭秘C语言到底是什么?
欢迎来到 C语言的世界!本文将带你走进 C语言的历史、发展和现状。我们将介绍 C语言是如何诞生的,它如何成为编程界的佼佼者,以及它在现今的地位。你将会发现学习 C语言是一件很有意义和可行的事情。
然而,MULTICS 项目的进展缓慢,最终在 1969 年被取消。与项目有关的贝尔实验室成员肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)并未放弃,他们继续在贝尔实验室工作,并希望开发出一个新的操作系统。受 MULTICS 的启发,他们重新实现了许多 MULTICS 的功能,并最终成功地推出了第一个版本的操作系统。

图 1 肯·汤普森(左)和丹尼斯·里奇(右)
第一个版本的操作系统由于仅支持两个用户,因此被戏称为不完善的 MULTICS 系统(uniplexed information and computing system,UNICS)。但是,在操作系统的第二次重大升级后,它终于可以支持多人同时使用。布莱恩·克尼汉(Brian Kernighan)提议将其名称从 UNICS 变为 UNIX,这就是著名的 UNIX 操作系统的诞生故事。
UNIX 的发展如下图所示。

图 2 UNIX的发展
20 世纪 70 年代,当时的主流编程语言是汇编语言,几乎所有人都使用汇编语言开发程序,所以可以想象,Ken Thompson 和 Dennis Ritchie 的想法在他人眼中是多么疯狂。
首先,Ken Thompson 和 Dennis Ritchie 尝试使用 Fortran 语言(世界上第一个被正式推广使用的高级语言),但结果令人失望。随后,他们使用了 BCPL(basic combined programming language)语言,并重新整合了 BCPL,产生了 B 语言。
然而,经过一段时间的探究,Dennis Ritchie 认为 B 语言仍然不能满足要求,因此他对 B 语言进行了改进,成功研发了高级编程语言:C语言。
Ken Thompson 和 Dennis Ritchie 成功地利用 C语言重写了 UNIX 操作系统的第三版内核。从此,UNIX 操作系统不管是修改还是移植都变得相当方便,为 UNIX 的普及奠定了坚实的基础。
C语言的诞生与 UNIX 操作系统的发展密切相关,UNIX 操作系统的繁荣也离不开 C语言的支持。UNIX 和 C语言就像一块磁铁,牢牢地吸引着彼此,组成了一个完美的统一体。
该版本的 C语言通常被称为 K&R C,这是对其作者 Brian Kernighan 和 Dennis Ritchie 的简称。
这个委员会制定了 C语言标准,并于 1989 年被批准为《美国国家标准X3.159—1989》,也称为 ANSI C。当 ANSI 完成了这项标准后,国际标准化组织(ISO)对它进行了很少的编辑修改,并将其转化为国际标准 ISO/IEC 9899:1990。
1989 年,美国国家标准委员会也接受了 ISO/IEC 标准,因此这个版本通常被称为 C89。
C89 之后,还有 C95(1995年)、C99(1999年)和 C11(2011年)等修订版本,如下图所示。

图 3 C语言标准修订时间轴
答案是否定的。
TIOBE 编程语言指数是通过搜索引擎(如 Google、Bing 和 Yahoo!)、Wikipedia、Amazon 和 YouTube 统计经验丰富的程序员、课程和第三方厂商的数量,以及对这些编程语言的讨论和使用情况,以反映某种编程语言的热门程度。
重要的是,TIOBE指数不会告诉我们什么是最佳的编程语言(世界并不存在这样的语言),也不会告诉我们世界上哪种语言的代码行数最多。但是,TIOBE 指数可以告诉我们,在某个时间点上,哪种语言正在被广泛地使用和讨论。

图 4 TIOBE指数
图中显示了 2002—2023 年各种编程语言的 TIOBE 指数变化情况。从该图中可以看出,C语言在大部分时间段都占据了 20% 左右的市场份额,仅次于 Java。此外,在一些时期,C语言的份额甚至超过了 Java,一度成为 TIOBE 指数的排行榜首。这表明,C语言在编程领域仍然具有较高的地位。
C语言是一种十分流行的编程语言,但网上与它相关的讨论比较少。相比之下,有关 Java、Python、JavaScript 的讨论更多。
这是因为中国的互联网行业正处于全球发展的前沿,互联网企业急需大量的人才来开发网页、移动端应用、服务端程序以及数据分析,供需关系导致了这些语言的广泛讨论。
当然,这并不意味着互联网企业不需要 C语言。在遇到需要高性能的场景,C语言便可以展现出它的优势。例如,在刷短视频时,人们希望看到流畅清晰的画面,这需要 C语言的支持。
如果你是一名在电子、图像处理、音视频处理、通信等领域从事工作的工程师,你会发现 C语言的价值。在这些领域,有必要尽量减少编程语言带来的额外开销,以便最大化利用计算机的性能。
除了汇编语言,C语言是唯一一种能够实现这一目标的语言。它具有汇编语言独有的微调控制能力,可以根据具体情况调整程序,以实现最快的运行速度和最有效的内存使用。因此,C语言最大的优势在于其能够微调控制程序,以获得最佳的性能。
学习 C语言也将为学习其他语言打下基础,因为很多现代语言都沿袭了 C语言的语法和结构。学习 C语言后,你将对编程的基本概念有更深入的了解,并能更快地学习其他语言。
此外,C语言是很多领域的核心语言,如操作系统、编译器、数据库等。如果你想在这些领域工作,那么学习 C语言是必不可少的。
总而言之,学习 C语言不仅能帮助你深入了解计算机编程,还可以为你的职业发展打下基础。
对于电子、图像处理、音视频处理、通信等方向的工程师来说,掌握 C语言是必不可少的,因为 C语言能够提供微调控能力,帮助他们优化程序以获得最大的运行速度和最有效地使用内存。另外,C语言也是许多其他编程语言的基础,所以掌握 C语言后学习其他语言也会更容易。
此外,在当今的计算机行业中,C语言也是一项非常抢手的技能,因此学习 C语言不仅对于现有的职业发展有利,也有助于未来的职业发展。
总之,学习 C语言无疑是一项值得的投资,它有助于提高你的技能,增强你的竞争力,并为你的职业生涯开辟更多的机会。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
C语言的发明及发展
20 世纪 60 年代,贝尔实验室、麻省理工学院和美国通用电器公司联合开发了一个安装在大型主机上的操作系统。它由于具有分时、多用途和多用户的特点,因此被称为多任务信息与计算系统(multiplexed information and computing system,MULTICS)。然而,MULTICS 项目的进展缓慢,最终在 1969 年被取消。与项目有关的贝尔实验室成员肯·汤普森(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)并未放弃,他们继续在贝尔实验室工作,并希望开发出一个新的操作系统。受 MULTICS 的启发,他们重新实现了许多 MULTICS 的功能,并最终成功地推出了第一个版本的操作系统。

图 1 肯·汤普森(左)和丹尼斯·里奇(右)
第一个版本的操作系统由于仅支持两个用户,因此被戏称为不完善的 MULTICS 系统(uniplexed information and computing system,UNICS)。但是,在操作系统的第二次重大升级后,它终于可以支持多人同时使用。布莱恩·克尼汉(Brian Kernighan)提议将其名称从 UNICS 变为 UNIX,这就是著名的 UNIX 操作系统的诞生故事。
UNIX 的发展如下图所示。

图 2 UNIX的发展
1) C语言的诞生
1973 年,Ken Thompson 和 Dennis Ritchie 试图将 UNIX 操作系统移植到不同的硬件平台上。然而,他们逐渐发现,使用汇编语言编写的操作系统在移植过程中非常困难。因此,他们决定在对 UNIX 操作系统进行第三版升级时使用高级语言进行编写,以彻底改变现状。20 世纪 70 年代,当时的主流编程语言是汇编语言,几乎所有人都使用汇编语言开发程序,所以可以想象,Ken Thompson 和 Dennis Ritchie 的想法在他人眼中是多么疯狂。
首先,Ken Thompson 和 Dennis Ritchie 尝试使用 Fortran 语言(世界上第一个被正式推广使用的高级语言),但结果令人失望。随后,他们使用了 BCPL(basic combined programming language)语言,并重新整合了 BCPL,产生了 B 语言。
然而,经过一段时间的探究,Dennis Ritchie 认为 B 语言仍然不能满足要求,因此他对 B 语言进行了改进,成功研发了高级编程语言:C语言。
Ken Thompson 和 Dennis Ritchie 成功地利用 C语言重写了 UNIX 操作系统的第三版内核。从此,UNIX 操作系统不管是修改还是移植都变得相当方便,为 UNIX 的普及奠定了坚实的基础。
C语言的诞生与 UNIX 操作系统的发展密切相关,UNIX 操作系统的繁荣也离不开 C语言的支持。UNIX 和 C语言就像一块磁铁,牢牢地吸引着彼此,组成了一个完美的统一体。
2) 第一个非正式标准K&R
1979 年,Dennis Ritchie 和 Brian Kernighan 合作出版了一本关于 C语言的权威著作:The C Programming Language(《C语言程序设计》)。这本书首次以书籍的形式,全面系统地阐述了 C语言的各个特性和程序设计的基本方法,包括基本概念、数据类型和表达式、控制流程、函数和程序结构、指针和数组、结构体、输入和输出、UNIX 系统接口以及标准库等内容。该版本的 C语言通常被称为 K&R C,这是对其作者 Brian Kernighan 和 Dennis Ritchie 的简称。
3) 第一个正式标准C89
1982 年,美国国家标准委员会(ANSI)认识到,对 C语言进行标准化对于扩大 C语言在商业编程领域的使用是有益的,因此成立了一个委员会来制定 C语言标准。这个委员会制定了 C语言标准,并于 1989 年被批准为《美国国家标准X3.159—1989》,也称为 ANSI C。当 ANSI 完成了这项标准后,国际标准化组织(ISO)对它进行了很少的编辑修改,并将其转化为国际标准 ISO/IEC 9899:1990。
1989 年,美国国家标准委员会也接受了 ISO/IEC 标准,因此这个版本通常被称为 C89。
C89 之后,还有 C95(1995年)、C99(1999年)和 C11(2011年)等修订版本,如下图所示。

图 3 C语言标准修订时间轴
C语言现状
在学习编程时,我们通常会浏览一些门户网站或论坛,发现网络上讨论最多的编程语言大多是时髦的语言,如 Java、Python 和 JavaScript。C语言是一种高级编程语言,于 1972 年创建,已经接近半个世纪了。随着计算机技术的不断发展,人们自然会产生疑问,C语言是否已经过时?答案是否定的。
1) 从TIOBE指数看C语言
要确认 C语言是否真的过时,我们可以参考 TIOBE 编程语言指数。TIOBE 编程语言指数是通过搜索引擎(如 Google、Bing 和 Yahoo!)、Wikipedia、Amazon 和 YouTube 统计经验丰富的程序员、课程和第三方厂商的数量,以及对这些编程语言的讨论和使用情况,以反映某种编程语言的热门程度。
重要的是,TIOBE指数不会告诉我们什么是最佳的编程语言(世界并不存在这样的语言),也不会告诉我们世界上哪种语言的代码行数最多。但是,TIOBE 指数可以告诉我们,在某个时间点上,哪种语言正在被广泛地使用和讨论。

图 4 TIOBE指数
图中显示了 2002—2023 年各种编程语言的 TIOBE 指数变化情况。从该图中可以看出,C语言在大部分时间段都占据了 20% 左右的市场份额,仅次于 Java。此外,在一些时期,C语言的份额甚至超过了 Java,一度成为 TIOBE 指数的排行榜首。这表明,C语言在编程领域仍然具有较高的地位。
C语言是一种十分流行的编程语言,但网上与它相关的讨论比较少。相比之下,有关 Java、Python、JavaScript 的讨论更多。
这是因为中国的互联网行业正处于全球发展的前沿,互联网企业急需大量的人才来开发网页、移动端应用、服务端程序以及数据分析,供需关系导致了这些语言的广泛讨论。
当然,这并不意味着互联网企业不需要 C语言。在遇到需要高性能的场景,C语言便可以展现出它的优势。例如,在刷短视频时,人们希望看到流畅清晰的画面,这需要 C语言的支持。
如果你是一名在电子、图像处理、音视频处理、通信等领域从事工作的工程师,你会发现 C语言的价值。在这些领域,有必要尽量减少编程语言带来的额外开销,以便最大化利用计算机的性能。
除了汇编语言,C语言是唯一一种能够实现这一目标的语言。它具有汇编语言独有的微调控制能力,可以根据具体情况调整程序,以实现最快的运行速度和最有效的内存使用。因此,C语言最大的优势在于其能够微调控制程序,以获得最佳的性能。
2) 从学习角度看C语言
从学习的角度看,C语言是一种非常重要且有趣的编程语言。它作为一种高级语言,具有易于理解的语法和结构,而且具有低级语言的一些特性,如汇编语言的控制能力,这使得学习者可以在学习过程中了解计算机的底层工作原理。学习 C语言也将为学习其他语言打下基础,因为很多现代语言都沿袭了 C语言的语法和结构。学习 C语言后,你将对编程的基本概念有更深入的了解,并能更快地学习其他语言。
此外,C语言是很多领域的核心语言,如操作系统、编译器、数据库等。如果你想在这些领域工作,那么学习 C语言是必不可少的。
总而言之,学习 C语言不仅能帮助你深入了解计算机编程,还可以为你的职业发展打下基础。
3) 从职业角度看C语言
从职业的角度看,学习 C语言是非常重要的。C语言是计算机编程领域中最广泛使用的编程语言之一,并且在多种应用领域,如操作系统、编译器、图形用户界面、网络通信、数据库等方面都有广泛的应用。对于电子、图像处理、音视频处理、通信等方向的工程师来说,掌握 C语言是必不可少的,因为 C语言能够提供微调控能力,帮助他们优化程序以获得最大的运行速度和最有效地使用内存。另外,C语言也是许多其他编程语言的基础,所以掌握 C语言后学习其他语言也会更容易。
此外,在当今的计算机行业中,C语言也是一项非常抢手的技能,因此学习 C语言不仅对于现有的职业发展有利,也有助于未来的职业发展。
总之,学习 C语言无疑是一项值得的投资,它有助于提高你的技能,增强你的竞争力,并为你的职业生涯开辟更多的机会。
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。