C是计算史上最重要的编程语言之一。 今天,出现了许多不同的编程语言,提供许多不同的特性,但在许多方面,C 为这些语言提供了基础。
C 应运而生。
目前尚不清楚它的创造者是否预见到了 C 将继续实现的伟大成就。 像大多数创新一样,C 随着时间的推移经历了许多变化。 它最大的成就之一可能是即使在充满活力的现代时代也能保持相关性。
C 的创造者必须感到满足,因为他们观察到他们的创造没有被认为是过时的或被归类为仅对少数利基领域有用。 相反,C 已被公认为可以应用于许多领域的通用、强大的语言。 (另请阅读:直接来自编程专家:现在最好学习哪种函数式编程语言?。)
C语言的起源
开发 C 最初并不是其创始人的目标。 事实上,各种情况和问题为它的创作创造了理想的情况。 在 1960 年代,身为诺基亚贝尔实验室 (AT&T) 员工的丹尼斯·里奇 (Dennis Ritchie) 和他的一些同事一直致力于开发一种可以同时供许多用户使用的操作系统。
这个操作系统被称为 Multics,旨在让许多用户共享公共计算资源。 Multics 提供了很多好处,但也有很多问题。 这是一个庞大的系统,从成本效益的角度来看,成本似乎超过了收益。 渐渐地,贝尔实验室退出了这个项目。
就在那时,里奇加入了肯·汤普森和布赖恩·克尼汉的另一个项目。 该项目涉及开发一个新的文件系统。 汤普森用汇编语言为 DEC PDP-7 超级计算机开发了一个新的文件系统。
此后,文件系统的创造者对其进行了多次改进,UNIX操作系统诞生了。 甚至 UNIX 这个名字的由来也可以追溯到它的前身 Multics。 最初,名称是 Unics(Uniplexed Information and Computing Service),是 Multics(Multiplexed Information and Computer Services)的双关语。
后来Unic改成了UNIX。 UNIX 是用汇编语言编写的,虽然它是机器学习的理想选择,但对人类来说却是一个难题。 (什么是机器学习?阅读机器学习 101 即可了解。)
为了解释和操作 UNIX,使用了 Fortran 和 B 语言。 正是在这里,开发 C 语言的想法开始在其创建者的脑海中形成。
查看此详细介绍编程语言历史的信息图。
为什么开发C
在 UNIX 的创建者面临操作系统挑战的背景下,B 语言是一种有用的语言。 B 语言取自 Martin Richards 的 BCPL。 如前所述,UNIX 是用汇编语言编写的。 要在 UNIX 中执行即使是很小的操作,也需要编写许多页代码。
B 解决了这个问题。 与汇编语言不同,B 在 UNIX 中执行任务所需的代码行要少得多。 不过,B 做不到的事情还有很多。 在需求快速变化的背景下,B 的期望值更高。
例如,B 不识别数据类型。 即使是 B,数据类型也是用机器语言表达的。 B也不支持数据结构。
很明显,有些事情必须改变。 因此,里奇和他的同事开始着手克服这些局限性。 C语言是在1971-73年开发的。 请注意,尽管存在所有局限性,但 C 的诞生要归功于 B,因为 C 保留了 B 提供的许多功能,同时添加了数据类型和数据结构等特性。
选择名称 C 是因为它继承了 B。在早期,C 的设计考虑了 UNIX。 C 用于执行任务和操作 UNIX。 因此,考虑到性能和生产力,许多 UNIX 组件都从汇编语言改写为 C。 例如,UNIX 内核本身于 1973 年在 DEC PDP-11 上重写。
Ritchie 和 Kernighan 以名为“The C Programming Language”的书的形式记录了他们的创作。 尽管 Kernighan 声称他在 C 的设计中没有任何作用,但他是著名的“Hello World”程序和许多其他 UNIX 程序的作者。
C的演变
随着时间的推移,C 开始在个人计算机中用于开发软件应用程序和其他目的。
当美国国家标准协会 (ANSI) 于 1983 年成立一个标准化 C 的委员会时,第一个变化(即使只有一点点)出现了。在审查该语言之后,他们对其进行了一些修改,使其也与其他程序兼容 那先于C。所以新的ANSI标准在1989年应运而生,被称为ANSI C或C89。 国际标准化组织 (ISO) 也为 C 语言的标准化做出了贡献。
随着时间的推移,C 在其丰富的功能集中添加了一些重要的功能,如内存管理、函数、类和库。 C 正在世界上一些最大和最著名的项目和产品中使用。
C 还影响了众多语言的发展,例如 AMPL、AWK、csh、C++、C–、C#、Objective-C、Bit C、D、Go、Java、JavaScript、Julia、Limbo、LPC、Perl、PHP、 Pike、Processing、Python、Rust、Seed7、Vala 和 Verilog。 (要了解有关语言的更多信息,请参阅构建互联网的 5 种编程语言。)
您使用 Microsoft Windows 吗? 那你就得感谢C了,因为Windows的开发大部分是用C来的,MacOS、Linux、Android、iOS和Windows Phone也是如此,所以几乎所有的现代操作系统都是基于C的。它在嵌入式中也被广泛使用 系统,例如车辆、智能电视和无数物联网 (IoT) 设备中的系统。 (阅读物联网 (IoT) 对不同行业的影响。)
C 的所有应用程序太多,无法在此处列出,但其他一些应用程序包括:
编译器、数据库和电子表格的开发
电脑和手机游戏
更新 UNIX 内核
评估数学方程式
设计网络设备
我们学到了什么
就像世界上大多数最伟大的发明一样,C 语言的诞生也是出于需要。 环境和问题提供了灵感。 然而,与许多现在已经灭绝或几乎灭绝的编程语言不同,C 经受住了时间的考验并蓬勃发展。
有些语言现在被归类为利基语言——例如,Fortran 现在主要仅用于工程目的,而 COBOL 正在努力保持相关性。 C 不仅保持相关性,而且还为许多其他编程语言的开发提供了灵感。
即使是强大的技术浪潮,如物联网、人工智能和自动化,也未能将 C 语言从其突出的位置上赶下来。 看来这种语言也将在未来很长一段时间内继续与我们同在。