vlambda博客
学习文章列表

C语言的历史及其与时俱进的原因

C语言是计算机历史上最重要的编程语言之一。如今,出现了许多不同的编程语言,它们提供了许多不同的功能,但是C语言以许多方式为此类语言提供了基础。

C语言是出于必要而诞生的。

尚不清楚其创建者是否曾设想C语言将会实现的伟大成就。像大多数创新一样,C语言随时间进行了许多更改。它最大的成就之一可能是即使在当今动荡的时代也能保持与时俱进的能力。

对于C语言的创造者来说,他们的创造并没有被认为是过时的或被归类为小众领域,相反的是,C语言已被公认为是通用的,功能强大的语言,可以应用于许多领域。


编辑搜图


请点击输入图片描述

C语言的开始

开发C语言最初并不是其创始人一开始的目标,而是各种情况和问题创造了它。1960年代,诺基亚贝尔实验室(AT&T)的员工丹尼斯·里奇(Dennis Ritchie )和他的一些同事一直在努力开发一种可以同时被许多用户使用的操作系统。

该操作系统被称为Multics,它旨在允许许多用户共享公用计算资源。Multics提供了很多好处,但是也有很多问题。从成本效益的角度来看,这是一个庞大的系统,成本似乎大于收益。贝尔实验室逐渐退出了该项目。

那时Ritchie和Ken Thompson和Brian Kernighan一起加入了另一个项目。该项目涉及开发新的文件系统。汤普森用汇编语言为DEC PDP -7 超级计算机开发了一种新的文件系统。

此后,文件系统的创建者对其进行了许多改进,从而诞生了UNIX操作系统。甚至UNIX名称的起源都可以追溯到其前身Multics。最初,它的名称是Unics(统一信息和计算服务),是对Multics(多重信息和计算机服务)的一种双关语。

更改为UNIX。UNIX是用汇编语言编写的,尽管它非常适合机器学习,但对于人类来说却是一个难题。为了解释和操作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以一本名为《C编程语言》的书的形式记录了他们的创作。尽管Kernighan声称他没有参与C的设计,但他还是著名的“ Hello World”程序和许多其他UNIX程序的作者。

C语言的演变

随着时间的流逝,C开始在个人计算机中用于开发软件应用程序或是其他的目的。

第一个变化(即使只有很小的变化)是在1983年美国国家标准协会(ANSI)成立了一个委员会来标准化C。经过对该语言的审查,他们对其进行了一些修改,使其也与其他程序兼容,新的ANSI标准于1989年问世,被称为ANSI C或C89。国际标准化组织(ISO)也在帮助C进行标准化。

随着时间的流逝,C不断发展,它在其丰富的功能集中又增加了一些重要的功能,例如内存管理,函数,类和库等。C正在被世界上一些最大和最杰出的项目和产品中使用。

C还影响了多种语言的开发,例如AMPL,AWK,csh,C++,C#,Objective-C,Bit C,D,Go,Java,JavaScript,Julia,Limbo,LPC,Perl,PHP,派克,处理,Python,Rust,Seed7,Vala和Verilog。(要了解有关语言的更多信息,请参阅构建Internet的5种编程语言。)

您使用Microsoft Windows吗?这要感谢C,因为Windows的大部分是用C进行开发的。MacOS,Linux,Android,iOS和Windows Phone也是如此,因此几乎所有现代操作系统都基于C。它也广泛用于嵌入式系统中。系统,例如车辆,智能电视和无数的物联网(IoT)设备中的系统。

C所开发的应用程序太多了,无法在此处列出,但包括以下应用程序:

  • 开发编译器,数据库和电子表格

  • 电脑和手机游戏

  • 更新UNIX内核

  • 评估数学方程式

  • 设计网络设备

我们学到了什么

就像世界上大多数最伟大的发明一样,C语言是出于必要而诞生的。情况和问题提供了启发。但是,与现在已经绝种或几乎绝种的许多编程语言不同,C语言经受了时间的考验并蓬勃发展。

现在有些语言被归类为小众语言-例如,Fortran现在主要仅用于工程目的,而COBOL则努力保持相关性。而C语言不仅保持了相关性,而且还为许多其他编程语言的开发提供了启发。

即使是强大的技术浪潮,如物联网,人工智能和自动化,也未能使C语言脱离其显赫的地位。从此看来,这种语言在未来很长一段时间内也将继续与我们同在。