前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C的巨大影响【Programming】

C的巨大影响【Programming】

作者头像
Potato
修改2019-11-11 11:12:31
4150
修改2019-11-11 11:12:31
举报

Command Line Heroes本季最后一期告诉我们一小群开源爱好者是如何改变世界的。

C是最初的通用编程语言。 Command Line Heroes第三季最后一期探讨了 C 语言的起源故事,展示了 C 语言设计的长久性和力量。 这是播客第三季和本系列文章讨论的所有语言的完美结合。

C是一种非常基础的语言,以至于我们许多人都忘记了它的变化。 从技术上讲,它是一种“高级语言”,从某种意义上讲它要求编译器是可运行的,它与当今人们喜欢的汇编语言(在专用的低内存环境之外)一样接近。 它也被认为是后来几乎所有语言的基础。

通往C的道路始于失败

虽然所有伟大的发明都来自于民间的神话依然存在,但是文艺复兴的故事更适合C。

在1960年代,位于新泽西州郊区的贝尔实验室是当时最具创新性的地方之一。 The idea factory的作者乔恩·格特纳(Jon Gertner)描述了乐观主义和解决棘手问题的热情所代表的时代文化。贝尔实验室没有时间紧迫的经济压力,相反,它似乎为疯狂的想法提供了无穷无尽的资金。它有一种研究和发展的精神,与今天的开放式领导原则非常一致。 这些结果意义重大,证明了在没有风险投资或 IPO 承诺的情况下也可以取得辉煌。

当时的挑战是终端共享:找到让很多人访问(数量有限)可用计算机的方法。 在没有一个可扩展的答案之前,而且早在我们拥有像Bash这样的shell之前,就已经有了Multics项目。 这是一个假想的操作系统,成百上千的开发人员可以在同一系统上共享时间。 正如我最近探索的那样,这是Lisp和“人工智能(AI)”一词的创造者约翰(John McCarty)的梦想。

《A people's history of computing in the United States》的作者Joy Lisi Ranken描述了接下来发生的事情。 公众对 Multics 提出的更加普遍的分时技术的设想很感兴趣。 学者、科学家、教育工作者以及广大公众都期待着这个计算机化的未来。 许多人主张将计算机作为一种公用事业,类似于电力,推动分时技术是一个全球性的运动。

到那时,每个系统的高端大型机数量达到40-50个终端。 正如Warren Toomey在IEEE Spectrum中写道,规模的改变是雄心勃勃的,最终失败了。

“在过去的五年里,AT & T 在 Multics 项目上投资了数百万美元,购买了一台 GE-645大型计算机,并包含了该公司著名的贝尔电话实验室的许多顶级研究人员的努力,包括 Thompson 和 Ritchie、乔伊·欧桑纳、 Stuart Feldman、 m. Douglas McIlroy 和已故的 Robert Morris。 但是新系统过于雄心勃勃,而且它的表现不尽人意。 最终,AT & T 的企业领导人决定终止合作。”

贝尔实验室于1969年退出 Multics 项目。 Multics 不再继续。

C的团队

基金结束了,强大的 GE645主机被分配到贝尔实验室的其他任务中。 但是,这并没有让所有人感到气馁。

在Multics项目的最后一次进行中,有四位对项目充满热情的人:Ken Thompson,Dennis Ritchie,Doug McIlroy和JF Ossanna。这四个“顽固分子”继续在纸上思考和涂鸦思想。 Thompson和Ritchie为PDP-7微型计算机开发了一款名为“太空旅行”的游戏。 在他们从事这项工作的同时,Thompson开始实现他们在 Multics 的残骸中开发文件系统的想法。

当时 PDP-7小型计算机还不是顶尖的技术,但是这个团队实现的基础技术改变了编程语言和操作系统的未来。

值得强调的是: 一些原始的文件系统规范是手工编写的,然后编程,与他们用来构建 Multics 的系统相比,这些规范实际上就是一个玩具。 维基百科的Ken Thompson页面深入探讨了接下来发生的事情:

“在写 Multics 的时候,Thompson 创造了 Bon 编程语言。 他还开发了一款名为太空旅行的电子游戏。 后来,贝尔实验室退出了 MULTICS 项目。 为了继续玩这个游戏,汤普森找到了一台旧的 PDP-7机器,并在上面重写了太空旅行。 最终,Thompson 开发的工具变成了 Unix 操作系统: 一个由 Thompson 和 Ritchie 领导的 Bell 实验室研究人员组成的团队在一个 PDP-7上工作,他们开发了一个分层文件系统程序,包括计算机进程和设备文件的概念,一个命令行解释器,一些简单的行程间通讯程序的管道,以及一些小的实用程序。 1970年,Brian Kernighan 提出了 Unix 这个名字,这是对 Multics 这个名字的双关语 在对 Unix 进行了初步研究之后,Thompson 决定 Unix 需要一种系统编程语言,并创建了 B 语言,它是 Ritchie 的 C 语言的前身。

正如 Walter Toomey 在上面提到的 IEEE Spectrum 文章中记录的那样,Unix 在某种程度上展示了 Multics 项目从未实现的前景。 在赢得团队的支持并做了更多的编程工作之后,Unix 之路终于铺平了。

在 Unix 中从 B 到 C

汤普森很快创造了一种 Unix 语言,他称之为 B. B,这种语言很大程度上继承了它的前身 BCPL,但是它还不足以从旧语言中分离出来。 首先,B 不知道数据类型。 它被认为是一种无类型语言,这意味着它的“ Hello World”程序看起来是这样的:

代码语言:c
复制
main( ) {
extrn a, b, c;
putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';

即使您不是程序员,也很清楚,一次将字符串分割成四个字符是很有限的。 还值得注意的是,该文本被认为是Brian Kernighan于1972年出版的《B语言基础教程》一书中的原始“Hello World”(尽管这个说法并不确定)。

除了无类型性,B的汇编语言版本仍比使用B编译器的线程代码技术更快地生成程序。 因此,从1971年到1973年,Ritchie修改了B。他添加了“字符类型”,并构建了一个新的编译器,从而不再需要使用线程代码。 经过两年的工作,B成为了C。

在正确的时间进行正确的抽象

C对类型的使用以及易于编译为有效的汇编代码的特性,使其成为小型计算机兴起的理想语言,微型计算机以字节码表示。 B最终被C所取代。一旦C成为Unix的语言,它就成为了新兴计算机行业的事实上的标准。 Unix是互联网时代之前的共享平台。 人们写的C越多,得到的效果就越好,被采用的程度也就越高。 最终它本身成为一个开放标准。 根据C语言简要历史

“多年来,事实上的C标准是Unix操作系统随附的版本。1983年夏天,成立了一个委员会,以创建定义C语言的ANSI(美国国家标准协会)标准。整个过程花了六年时间(比任何人合理预期的时间都要长得多)。”

如今 C 语言的影响力有多大? 简单回顾一下:

  • 所有主要操作系统的一部分都用C编写,包括macOS,Windows,Linux和Android。
  • 包括DB2,MySQL,MS SQL和PostgreSQL在内的世界上最多产的数据库都是用C编写的。
  • 许多编程语言细节都始于C,包括Python,Go,Perl的核心解释器和R统计语言。

几十年前,汤普森和里奇还是一对好斗的局外人,现在却被誉为编程界的巨人。 他们分享了1983年的图灵奖,并在1998年因为他们在 c 语言和 Unix 方面的工作获得了美国国家科学奖章图灵奖

但是道格·麦克罗伊(Doug McIlroy)和JF欧桑娜(JF Ossanna)也应得到他们的称赞。 他们四个都是真正的编程英雄。

结语

Command Line Heroes已经完成了对影响我们今天编码方式的编程语言的深入探索。了解这些语言并与您分享是一种荣幸。 希望您也喜欢它!

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 通往C的道路始于失败
  • C的团队
  • 在正确的时间进行正确的抽象
  • 结语
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档