标签 代码英雄 下的文章

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客《代码英雄》第四季(2):大型机: GE-225 和 BASIC 的诞生音频脚本。

导语:二战后,计算机行业开始蓬勃发展。 通用电气 General Electric (GE)的 CEO 拒绝进入这个市场。但一小队反叛的员工不顾规则,秘密进取。他们创造了 GE 225。这是工程上的一次巨大飞跃,它将计算从一个小众市场推向了主流,为今天的科技行业播下了种子。

在创建通用的 大型机 mainframe 之前,计算机通常是为了执行单一功能而制造的。William Ocasio 回忆了 GE 的第一台专用计算机 ERMA 是如何帮助银行每天处理成千上万的交易的。John Joseph 讲述了 GE 的几名关键员工是如何蒙骗他们的 CEO 建立一个计算机部门的。Tomas Kellner 解释了他们的工作如何产生了一台革命性的机器:GE 225。而 Joy Lisi Rankin 则介绍了 达特茅斯学院 Dartmouth College 的工程师们如何对 GE 225 用于 分时 time-sharing 计算,并利用它创建了 BASIC —— 使计算变得更加方便的重要里程碑。

00:00:05 - Saron Yitbarek

让我们回到几十年前,回到 40 年代末、50 年代初,当时计算机行业有“白雪公主和七个小矮人”的说法。众所周知,“白雪公主”指的是 IBM,而 通用电气公司 General Electric 便是“七个小矮人”之一。这是一家偶尔生产定制机器,但从没在公开市场售卖计算机的公司。

00:00:32

通用计算机是 IBM 的地盘,而 IBM 是 GE 的第二大客户(第一是美国政府)。IBM 经常采购 GE 生产的真空管、电机、变压器和开关等设备,GE 时任总裁 Ralph Cordiner 对此非常满意。所以,每当 GE 的部门主管将转向计算机业务的计划书提交到总裁办公室时,收到的答复都是封面上大写的橙色字母:RJC,Ralph Cordiner 一次又一次地拒绝他们。

00:01:19

事实上,在 Cordiner 担任 GE 总裁兼首席执行官的 13 年时间里,GE 的态度从未改变。即使研究指出计算机是电子工业中增长最快的领域,但 Cordiner 总是用愤怒回应挑战他底线的员工们。然而,一小群叛逆的员工看到了制造大型机的机会,他们不想错失良机。然而他们不知道的是,这台大型机将拯救银行业,打开分时系统的大门,并孕育出新的编程语言。在上一季,我们听了 John Kemeny 和 Thomas Kurtz 在 达特茅斯学院 Dartmouth College 创造 BASIC 的故事,了解到因为 BASIC 是解释型语言,早期的计算机没有足够的资源运行它。像 BASIC 这么好的点子,正等待着像 GE-225 这样合适的设备出现,让它大放异彩。这一章,让我们一起揭开那台差点被扼杀在摇篮中的大型机,那鲜为人知的故事。这台房间大小的机器打开了新世界的大门,它鼓舞了像 史蒂夫•沃兹尼亚克 Steve Wozniak 比尔•盖茨 Bill Gates 这样有远见的代码英雄,鼓舞他们推动个人电脑革命,它的创造在今天仍然意义非凡。我是 Saron Yitbarek,欢迎收听 代码英雄 Command Line Heros ,Red Hat 的原创播客第四季:硬件设备。

00:03:05 - 话音 1

Adams 先生觉得他的新支票账户很好用。与其他公司直接从 埃姆维尔国家银行 Elmvale National Bank 兑现不同,用这个账号可以从自家银行兑现。与其他银行一样,自家银行把支票送到 联邦储备银行 Federal Reserve Bank 去执行兑现。联邦储备银行正是为处理每天来自数百家银行的数千张支票而设立的。

00:03:29 - Saron Yitbarek

1947 年,支票开始流行,银行工作人员的时间耗费在无穷无尽的支票当中。战后经济的蓬勃发展,更是让银行被铺天盖地的支票所淹没。为了腾出时间手工填写账簿,他们被迫下午 2 点就早早关门,但即使这样,他们仍然赶不上进度。他们迫切的希望,能有一台快速、强大的机器,让银行跟上商业发展的步伐。当时 美国银行 Bank of America 每天要处理数百万张支票。下面有请 西北大学凯洛格管理学院 Kellogg School of Management at Northwestern University 的教授 William Ocasio。

00:04:12 - Will Ocasio

难以想象,银行如果没有电脑可用会是什么样子。银行本身就是繁重、文书密集型的行业,美国银行分支机构又那么多。有这么多的信息,他们想要能够快速的传递和处理这些信息。这对于这样一个大公司来说真的很重要。他们知道计算机才是未来的方向。

00:04:39 - Saron Yitbarek

所以,1950 美国银行与 斯坦福研究院 Stanford Research Institute (SRI)签约,希望找到自动处理这些支票的方法。SRI 花了五年时间制造了一台原型机,并将其命名为 电子记录会计机 electronic recording machine accounting 简称 ERMA。ERMA 有超过 100 万英尺的电线,8000 个真空管,重约 25 吨,每天可以处理 5 万笔交易。

00:05:11

美国银行希望 ERMA 马上投入生产。于是向电子制造商们发出 招标请求 request for proposal (RFP),让它们竞标。当然,所有人都认为赢家将是行业巨头,被称作“白雪公主”的 IBM。Baker 博士是通用电气电子部门的副总裁,他知道他的老板 Cordiner 不想涉足 IBM 的领域,也知道计算机是公司的禁区,但当听到美国银行 RFP 的风声时,Baker 看到了其中的机会。他找到了 GE 位于 帕洛阿尔托 Palo Alto 的微波实验室的经理 Barney Oldfield。在这个离 SRI 最近的地方向 Oldfield 提出了一个建议。下面有请 加州大学欧文分校 University of California, Irvine 的战略副教授 John Joseph。

00:06:09 - John Joseph

我认为他是一位成功、进取的企业家,也是精明的经理和商人,他认为这是部门发展的巨大机会。

00:06:27 - Saron Yitbarek

Baker 和 Oldfield 成功说服了他们的老板 Cordiner,这是一台定制的生产控制系统,不是通用计算机,生产它不会让 IBM 不快。并且向他保证,GE 不会涉足计算机行业。

00:06:45 - John Joseph

我觉得 Cordiner 最终屈服的原因是,他给他们提出了一个附加条件:仅此一份合同,不要继续深入商用机市场,只能参与这一次竞标。如果能做到,那你们去竞标吧。

00:07:08 - Saron Yitbarek

尽管 Cordiner 不对竞标抱有任何希望,但还是让他们着手进行 RFP。就让他们发泄一下自己的创造力吧。随后 Oldfield 把他们的提案送到旧金山的银行办公室,等待着他们的答复。

00:07:26

出人意料的事情发生了,IBM 忽然放弃竞标,更出乎意料的是,GE 的提案从所有制造商中脱颖而出。这个不被看好的提案赢得了百万美元的合同。美国银行董事会在 1956 年 4 月 9 日正式接受了这个方案。Baker 在没有经过他的老板 Cordiner 审核的情况下签下了这份价值 3100 万美元的合同,把不可能变成了可能。Oldfield 可以找个地方生产 ERMA 了,当然,他得先成立一个实际的计算机部门。

00:08:19 - John Joseph

接下来轮到他们大显身手了。首先,他们确实成立了计算机部门,虽然听上去只是发一份声明就能搞定的事情。但是在这么大的公司内,把公司的资源和人力调动起来成立一个新部门,真的是一件很了不起的事情。

00:08:46 - Saron Yitbarek

Barney Oldfield 成为计算机部门的主管。这个新部门很像 GE 的另一个制造定制机器的部门: 军事系统部 Military Systems Division 。挑战 IBM 之前,两个部门要先分出胜负。

00:09:06 - Saron Yitbarek

新成立的部门想要低调行事,而 GE 的分权管理方式,刚好适合这样偷偷摸摸的搞事情。只要部门是盈利的,就不会有太多的监管。没人知道他们在做什么。

00:09:26 - John Joseph

当时的情况是,想要在 GE 发展你的小领地,就必须走出去寻找发展的机会。公司没有任何这方面的计划,他是个有冲劲的人,看到了这个机会。他干劲十足,想引领公司走出这重要的一步。

00:09:59 - Saron Yitbarek

更大的挑战还在后头,在哪建立工厂好呢?Palo Alto 的团队想要搬到 Stanford 的工业园区,无奈加州劳动法太严和税收太高,所以这不是个好点子。最终他们选择了 Phoenix。虽然 Phoenix 不是吸引资深工程师的最佳地点,但自有它的优势。

00:10:26 - John Joseph

GE 的总部远在纽约,选择 Phoenix 能让他们远离 GE。在这里,他们可以避开高层的监督,野蛮生长。事关大把钞票,远离 Cordiner 才能获得更大的自主权。

00:10:55 - Saron Yitbarek

Oldfield 在 Phoenix 组建了一支可靠的工程师团队。团队成员有:Bob Johnson、George Snively、Gene Evans 还有 George Jacobi 等人。还有 John Pivoden 负责硬件、Henry Harold 是逻辑设计师、Jay Levinthal 是系统架构师。在这个与世隔绝的桃园胜地,团队氛围非常融洽。他们不仅能担起秘密制造 ERMA 的大任,还能幽默的看待自己的工作。我们找到了他们表演过的一个小短剧,他们称之为“进步的前沿”,这个小短剧某种程度上展示了项目的进展。下面大家一起欣赏一段摘录:

00:11:39 - 话音 2

好了,我们到凤凰城了。

00:11:41 - 话音 3

你终于来了。欢迎来到计算机部门。

00:11:45 - 合音

啥部门?

00:11:46 - 话音 3

计算机部门。

00:11:47 - 话音 4:

计算机是啥?

00:11:49 - 话音 3

哦,有点像是带有圣诞树灯的涡轮机,可以播放音乐。

00:11:53 - 话音 5

是一种快速执行运算的机器。

00:11:56 - 话音 2

我们没必要用它记账,对吧?

00:11:58 - 话音 3

不,但我们得给 Van 一台让他玩,假装我们在用。

00:12:01 - 话音 4:

噢,计算机是啥?

00:12:08 - Saron Yitbarek

对美国银行而言,计算机是可以一天处理 55000 笔交易的机器,这台机器需要对各种大小和状况的支票进行分拣和分发,需要更新客户帐户和余额,需要能识别支票。他们要的不是 1 台,而是 36 台计算机。

00:12:34

项目初期,团队就决定 GE 版本的 ERMA 将使用晶体管来实现。在 50 年代,虽然晶体管比真空管更昂贵,但体积小,与逻辑板的连接器也更简单。原型机的每个真空管和触发器被两个晶体管所取代,使用额外的电阻和电容将它们连接在一起。将 ERMA 设计成软件编程设备,而不是硬件编程设备,是对原型机的另一个重大改变。这样可以简化机器设计,方便以后轻松修改。鉴于大多数 GE 的开发人员都从事硬件工作,他们得再聘请一名程序员。他们选择了一位几年前从纳粹德国逃出,以难民身份来到美国的男子。这名男子名叫 Joseph Weizenbaum。

00:13:34

Weizenbaum 曾在一家名为 Bendix 的公司为 G-15 电脑编程。他甚至为它开发了一种名为 Intercom 100 的伪机器编程语言。尽管除了兑现支票之外,Weizenbaum 没有任何银行相关经验,但他还是领导小小的编程团队,开始编写支持晶体管硬件的软件。该团队还为所有的外围设备编程,包括支票排序器,还有被他们称做 MICR 阅读器的东西。MICR 的意思是“ 磁性墨水字符识别 magnetic ink character recognition ”。你知道支票底部的那行数字吗?那就是 MICR。这行数字由三部分组成,分别表示银行账户、路由号码和支票号码。直到今天,支票上仍有 Weizenbaum 和他的团队在凤凰城的杰作。

00:14:28

值得一提的是。Weizenbaum 后来被认为是 AI(人工智能)的奠基人之一。1958 年 12 月 28 日,在 GE 赢得合同近三年后, 美国银行圣何塞分行 San Jose Branch of Bank of America 实装了第一台 ERMA 机器。虽然这台机器每天只能处理 100 笔交易,但这是朝着正确方向迈出的一步。接下来,他们要兑现每天处理 55000 笔交易的承诺。

00:15:04

到了次年 3 月,该团队不仅兑现了 5.5 万交易的的承诺,还增加了分拣机和打印机,使整个系统每天可以处理 200 万笔交易。美国银行兴奋不已。位于 Phoenix 的电脑部门交付了 32 台命名为 GE-100 的机器,还有更多的订单正在准备中,是时候庆祝了。

00:15:32 - Will Ocasio

美国银行邀请 Cordiner 参加计算机的揭幕仪式。他们甚至邀请了曾在通用电气工作过的 罗纳德•里根 Ronald Reagan 作为他们的电视发言人,这太了不起了。然而,Cordiner 来到揭幕式后,忽然想到:“等一下,这跟之前说的不一样”,然后他生气的开除了 Barney Oldfield。

00:16:00 - Saron Yitbarek

额,Oldfield 就这么被开除了?Phoenix 的团队的明明超额完成了任务,完成了不可思议的壮举,他们的领袖得到的奖励却是被开除?更可气的是,Cordiner 重新任命了部门的负责人,Baker 博士的继任者 Harold Strickland 对电脑并不感兴趣。因为担心会惹 IBM 生气,Cordiner 给 Strickland 下了明确的指示,要他务必管好计算机团队。一个叫 Claire Lasher 的公司职员接替了 Oldfield 的工作。可 Cordiner 不知道的是,Lasher 骨子里也是个反叛者。

00:16:47

通用电气总裁 Cordiner 想要远离商用计算机行业,他从一开始就不想进入这个行业。他想让通用电气尽快回到老样子。他允许生产已有的订单,但用他的话来说:“下不为例!”。后来,当 Cordiner 听到自己银行界的朋友向他称赞 GE-100 的创新时,他的态度发生了转变。所以好吧,他们可以继续在自己创造的沙盒中自由发挥,唯一的限制就是:“不要和 IBM 正面交锋”。

00:17:24

Claire Lasher 的专长是市场营销。他看到了通用计算机市场的蓝海,借鉴了 Oldfield 的经验,制定了自己的计划。那就是两用计算机 200 系列。这个系列既是定制机器,又是通用机器。Claire 将他的商业计划命名为 大观 The Big Look ,他为 Phoenix 团队招募了更多的工程师,其中包括一位曾在纽约从事 GE-312 和 412 过程控制计算机的人,他的名字叫 Arnold Spielberg,是新团队的领导。

00:18:05

看完技术规格后,Arnold 说:“嘿,如果我们调整一下硬件设计方案,我们就能造出通用机器界的大杀器“。于是,Arnold 增加了读卡器、打印机和磁带处理程序等外围设备。仅用 5 个月就完成了原型机,这款新机器被称为 GE-225。有趣的是,Arnold Spielberg 是 史蒂文•斯皮尔伯格 Steven Spielberg 的父亲。为了了解更多关于 Spielberg,以及他在创造 GE-225 这台高层从来不想要的机器中所扮演的角色,我采访了通用电气的 首席故事官 chief storyteller Tomas Kellner。

00:18:51 - Tomas Kelner

Arnold 和他的同事 Chuck Prosper 是这台电脑的设计者,他们一起制造了它。有趣的是,和 GE 以前的计算机不同,GE-225 是商用计算机,它实际上有一个存储系统,并且能够处理数据的输入和输出。

00:19:15 - Saron Yitbarek

GE-225 的哪些技术进步可以归功于 Arnold 呢?

00:19:21 - Tomas Kelner

最有趣的是,这台电脑有自己的内存,能够记录和输出信息。这种存储器可以存储 8000 到 16000 个 20 位字 20-bit word 。它还有一个辅助存储器,大约可以存储 32000 个 20 位字。他之前也用过一些 硬件编程 wire software 设备,它们真的很难使用。这些设备只能编程一次,然后就不能再修改了。GE-225 的进步之处在于,有了数据存储的能力。

00:19:58 - Saron Yitbarek

GE-225 长什么样子?

00:20:02 - Tomas Kelner

说实话,GE-225 看起来不怎么好看,它像一堆盒子。它有存储信息的磁带,有输入终端和输出终端。尽管它被称为小型计算机,但它能占满整个地下室。

00:20:26 - Saron Yitbarek

它能完成哪些其他计算机无法完成的任务呢?

00:20:30 - Tomas Kelner

GE-225 计算机的新特性是支持分时操作。支持多个远程终端访问计算机,多个用户能够同时在上边工作、写代码。据我所知,当时其他的计算机没这种能力。

00:20:58 - Saron Yitbarek

那么谁买了 GE-225?GE-225 的目标客户是哪些人呢?

00:21:02 - Tomas Kelner

通用电气公司内部肯定使用了这些计算机,但全国各地的一些银行也使用了它们,还有 克利夫兰布朗队 Cleveland Browns 也用它们来管理季票销售。有人甚至用其中一台电脑预测了一场全州范围的选举,当然,预测的很准。人们似乎对这台机器非常着迷。Cordiner 让团队在 18 个月内退出计算机行业,但是因为这台计算机的成功,他们搁置了这个计划。

00:21:43 - Saron Yitbarek

重点是,GE-225 不仅是一个银行解决方案。还记得 BASIC 的创始人 John Kemeny 和 Thomas Kurtz 吗?BASIC 就是他们在 GE-225 上创造的。还有另一位代码英雄,他发现了 GE-225 上的编程漏洞。

00:22:03

尽管那时他还在上高中。接下来让 Tomas 告诉你,GE-225 在 BASIC 的开发中起到了什么作用?

00:22:14 - Tomas Kelner

GE-225 上开发了很多有趣的项目,达特茅斯学院的科学家们开发的 BASIC 语言便是其中之一。当时,他们想发明一种使程序员在不同的终端上同时工作的工具。这个工具,就是后来的 BASIC。关于 BASIC 另一件趣事是,通用电气以最快的速度从达特茅斯学院获得了 BASIC 的授权,并开始在内部使用它和预装在 GE-225 上。 史蒂夫•沃兹尼亚克 Steve Wozniak 就是通过 GE-225 接触到 BASIC。当他接触到了一个连接到 GE-225 计算机上运行 BASIC 的终端时,他瞬间就爱上了这个工具,实际上他的处女作就是在上面完成的。

00:23:13 - Saron Yitbarek

那么当你和 Arnold 交谈时,他意识到他对计算机世界的影响了吗?

00:23:18 - Tomas Kelner

对 Arnold Spielberg 的采访真是令人难以置信。那时,他已经 99 岁了。

00:23:23 - Saron Yitbarek

哇哦。

00:23:24 - John Joseph

他记得所有的事情,我们谈到了互联网,我清楚的记得,他说,在 1960 年代,畅想过计算机的未来,但是他从没想到,有一天人们可以通过家用电脑和智能手机,连接到互联网这个庞大的网络中。没想到人们可以随时随地获取信息,航空公司通过计算机控制飞机,控制机器工作。一方面,他对该领域的发展非常感兴趣。另一方面,他也非常谦虚地承认,该领域的发展超过了他在 20 世纪 60 年代的想像。

00:24:12 - Saron Yitbarek

你认为这一切对 史蒂芬•斯皮尔伯格 Steven Spielberg 和他的事业有什么影响?

00:24:18 - Tomas Kelner

史蒂芬还记得曾拜访过 GE 在他们的家乡亚利桑那州 Phoenix 建的工厂,他的父亲带他来工作的地方参观。他当时一头雾水,他爸试图向他解释电脑是什么,能做什么。他的原话是:“这一切对我来说都像是希腊语。”可见他当时是真的听不懂。我问 Arnold 对自己儿子的印象。他说:“我想让他学习工程学,培养他的技术热情,但他却只对电影感兴趣”。

00:25:00 - 话音 6

随后银行业进入电子时代。今天,这种磁性油墨计算机系统让银行能够提供世界上最快、最有效的服务。保险公司、百货公司和公用事业公司也陆续开始使用类似的系统。事实上,所有文书工作都开始使用计算机。但谁知道呢,也许将来,会有更好的解决方案。

00:25:34 - Saron Yitbarek

到 1962 年,GE-225 全面投产,并在推出一年后,迅速成为公司的重磅产品。它不仅为公司盈利,还在商界赢得了很高的声誉。在之后的几个月里,Cordiner 收到了来自全国各地的祝贺信息,他最终改变了他的想法,打算投身计算机行业。他终于正式认可了通用电气计算机部门。

00:26:13

让我们回到与 Tomas 对话中提到的一些事情,我们在上一季的《C 语言之巨变》那一期中也有提到。当达特茅斯学院使用 GE-225 开发一个工具,让程序员可以在不同的终端上同时工作 —— 换句话说,分时系统 —— GE 并没意识到分时的潜力。

00:26:38 - Joy Lisi Rankin

达特茅斯学院使用 GE-225 和 GE DATANET 30 实现了分时系统,此前通用电气从未考虑使用这两种设备来实现这一功能。

00:26:53 - Saron Yitbarek

Joy Lisi Rankin 是一名技术历史学家。

00:26:57 - Joy Lisi Rankin

分时系统的关键在于电脑需要某种方式来停止自己的时钟。分时不是指人们在计算机上共享时间,而是指计算机共享自己的时间来处理多个计算请求。达特茅斯学院的师生们决定,使用 DATANET 30(这是一台 GE 的通信计算机)和 GE-225 共同开发分时系统。

00:27:32 - Saron Yitbarek

因为大型机在 60 年代非常昂贵,批量运行是使用大型机最高效的方法。当时的人编写程序,然后做成打孔卡片以运行程序,他们将卡片交给操作员,然后他们就得等着它和其他程序一起被分批运行。有时要等几个小时,甚至几天。

00:27:58 - Joy Lisi Rankin

在社交电脑和社交网络出现之前,在 Facebook 出现之前,分时系统、BASIC 还有达特茅斯学院和 GE,对开启个人电脑时代发挥了重要作用。通用电气从达特茅斯学院建立的分时系统中吸取经验,将其应用到自己的业务中,迅速建立起了全球分时服务行业。1970 年的某个时候,仅欧洲就有 10 万分时用户。在 20 世纪 70 年代到 80 年代,分时是他们的重要业务。

00:28:44 - Saron Yitbarek

尽管 GE-225 和随后的 200 系列计算机取得了成功,通用电气公司还是在 1970 年将其大型机部门卖给了 Honeywell。但他们仍然决定保持分时共享业务,并在未来几年保持盈利。

00:29:08

Ralph Cordiner 的故事讲完了,就像我们在上一期,数据通用公司发明小型机的故事中看到的,下一代伟大机器,它往往需要一个由顽固的、有远见的叛逆者和一些前瞻的执行官组成的团队来建造。人算不如天算,集思广益往往会有意想不到的收获。

00:29:41 - Saron Yitbarek

下一期,我们将从 GE-225 结束的地方开始,来谈谈大型机如何启发新一代程序员展开个人计算机革命,谈一谈他们对我们的启发。《代码英雄》是红帽的原创播客。访问我们的网站 redhat.com/commandlineheroes 了解更多有关 GE-225 的资料。我是 Saron Yitbarek,下期之前,编码不止!

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-4/mainframes

作者:Red Hat 选题:bestony 译者:2581543189 校对:wxy

本文由 LCRH 原创编译,Linux中国 荣誉推出

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客《代码英雄》第四季(1):小型机 —— 旧机器的灵魂音频脚本。

导语:它们不适合放在你的口袋里。但在当时, 小型机 minicomputer 比之前的房间大小的 大型机 mainframe 的尺寸小了一个数量级。它们为可以装进包里的 个人电脑 Personal Computer (PC),以及最终你口袋里的手机铺平了道路。

16 位小型机改变了 20 世纪 70 年代的 IT 世界。他们让公司的每个工程师都有机会拥有自己的计算机。但这还不够,直到 32 位版本的到来。

Carl Alsing 和 Jim Guyer 讲述了他们在 数据通用 Data General 公司创造革命性的新 32 位计算机的工作。但他们如今被视作传奇的工作是在秘密中完成的。他们的机器代号为 “Eagle”,其设计目的是为了与自己公司的另一个团队正在制造的机器竞争。这些工程师们回忆了为使项目继续进行而做的公司政治和阴谋,以及他们如何将限制转化为优势。Neal Firth 则讨论了如何在一个令人兴奋但要求很高的项目中的生活。在这个项目中,代码英雄们一起工作,只是因为他们想这样做,而不是期望获奖或成名。这三个人都讨论了这个故事如何在 Tracy Kidder 的非虚构工程经典《 新机器的灵魂 The Soul of a New Machine 》中所成就的不朽。

00:00:03 - Saron Yitbarek

那是 1978 年,小型机业界激战正酣。就在一年前, 数字设备公司 Digital Equipment Corporation (DEC)发布了其 32 位的 VAX 11 780 计算机。它比市面上的 16 位机器要强大得多。 VAX 的销售迅速地超越了那些步履缓慢的竞争对手。其主要竞争对手 数据通用 Data General 公司迫切需要一台新机器来和 VAX 竞争。他们需要一台属于自己的 32 位计算机,而且要够快才行,但数据通用公司和 DEC 之间的竞争并不是唯一的战斗。数据通用公司内部还正酝酿一场地盘争夺战,而这两场战斗的战利品都是在令人难以置信的环境下创造令人难以置信的机器。一台 13 英寸的笔记本电脑大概有 3 磅重。如今,我们认为计算机的便携性及方便的尺寸是理所应当的,但是在 20 世纪 70 年代,大多数计算机仍然有着整个机房大小的大型机、重达数吨,而且价值数百万美金。而当硬件成本急剧下降后,开发更小、更快、更便宜的机器的竞争就开始了。小型机为工程师和科学家打开了拥有自己的终端机的大门。正是小型机引领我们到了今天的样子。

00:01:37

在上一季的《代码英雄》中,我们深入探究了对软件开发至关重要的领域 —— 编程语言的世界。诸如 JavaScript、Python 和 C、Perl、COBOL 以及 Go 之类的语言,我们审视了它们的历史、它们所解决的问题,以及它们是怎样随着时间推移而演变的。在这一季中,也就是第四季,我们将再一次深入探索,这一次是我们软件运行于其上的硬件。我们将为大家讲述七个特别的故事,讲述那些敢于改变硬件规则的人和团队。你桌上的笔记本电脑、口袋里的手机,如今你所拥有的每一件硬件设备,以及它们的前代产品,都是代码英雄们全身心投入的结果。他们的激情打造、他们的大胆举动,让我们的硬件成为现实,彻底改变了我们现如今的编程方式。

00:02:36

我是 Saron Yitbarek。这里是代码英雄,一档来自 红帽 Red Hat 的原创播客节目。

00:02:45

在我们本季的首播中,将讲述一个工程团队竞相设计、调试和交付下一代计算机的故事。他们工作的故事变成了 1981 年 Tracy Kidder 获得了普利策奖的畅销书《 新机器的灵魂 The Soul of a New Machine 》的主题。在这本书中讲述了这一集中你将听到的众多嘉宾的故事。

00:03:07

让我们说回到数据通用公司。该公司主席 Ed de Castro 制定了与 DEC 竞争的计划。他拆分了工程部门,将一支团队从其位于 马萨诸塞州 Massachusetts 韦斯特伯勒 Westborough 的总部迁移到了 北卡罗来那州 North Carolina 的新办公室。他们的任务是开发一款领先的 32 位的机器设计,以粉碎 VAX。他们将项目命名为 “Fountainhead”。Ed de Castro 为这支团队提供了几乎无限的支持和资源,他将 Fountainhead 视为他公司的救星。而剩下的几名工程师被留在了马萨诸塞州,他们觉得自己被严重轻视了。他们认为自己能够开发一个干掉 VAX 的杀手,可能会比 Fountainhead 项目所能开发的更好,但是 Ed de Castro 不会给他们机会。因此,这个小组的负责人 Tom West 决定自己动手。Tom West 是一名自学成才的计算机工程师,他负责数据通用公司的 Eclipse 部门。 Eclipse 是数据通用公司最成功的 16 位小型机产品线。Tom 能造机器,也能卖货,而且他知道市场需求是什么。Fountainhead 项目成立以后,Ed de Castro 让剩下的工程师们继续致力于优化去年的产品线。 而 Tom 和其他人都对此不以为然。

00:04:31 - Carl Alsing

我们对此一点都不满意。我们中有些人离开去做其他工作,而另一些人则感到十分沮丧,担心自己的事业,而且感觉没意思。而且我们觉得另一组人肯定会失败。

00:04:46 - Saron Yitbarek

Carl Alsing 是数据通用公司微编程小组的经理。他是 Tom 的副手。他们决定提出自己的项目计划。

00:04:56 - Carl Alsing

这将是使用最新技术进行的全新设计,构建一个能够击败 DEC 的 VAX 的 32 位计算机。所以我们为此提出了一项建议,并去找了主席 Ed de Castro,他说:“不,没门儿。北卡罗来那州的小组在负责这项工作。你们不必操心。”因此,我们感到十分灰心,回去提出了另一个名为 Victor 的计划。我们研究了如何使去年的老产品更好的方法。我们在里面设置了一个小开关,即系统里的一个模式位,当你打开它时,它将使得计算机能够像现代 32 位小型机一样运行,尽管比较慢。然后我们向 Ed de Castro 提出了这个功能。最后他说:“你们在这里有个模式位。我不想再看到其他任何带有模式位的设计。北卡罗来那州那边正在负责新设计。”于是乎又一次,我们深感沮丧,我想就是在那会儿 Tom West 决定要做一些秘密的事情。

00:06:06 - Saron Yitbarek

Tom 想出了两个故事。一个是讲给 Ed de Castro 的:他们将会对旧的 Eclipse 产品线进行加强,使它运行得更快一点,增加几个新按钮,并且换个新颜色。Tom 把它说成保险措施,以防万一北卡罗来那州那边出了什么问题。Ed de Castro 同意了。然后 Tom 给他的团队讲了另一个更棒的故事。

00:06:32 - Carl Alsing

Tom West 向我们团队中的一些人提议,我们要开发一款真正优秀的现代机器,它对以前的机器完全兼容,并且采用我们所需的所有最新高科技的东西,有虚拟内存、32 位和纠错代码,以及所有这类东西:多任务、多处理、大量内存。“伙计们,我们将打造出最新的、能在市场上大杀四方的新机器。”

00:07:04 - Saron Yitbarek

这款极具市场杀伤力的新机器的代号是 “Eagle”。现如今,人们觉得我们的电脑中的内存是没有任何限制的,但是在那时候,当从 16 位转换到 32 位时,发生了重大的突破。突然之间,你的地址空间就从能够存储 65000 字节的信息变成了 40 多亿字节。随着这一增长,软件也可以处理更加大量的数据。这给计算机公司带来了两个基本的挑战:从 16 位过渡到 32 位,这是肯定的,但是他们还得让使用旧软件的老客户感到满意。因此,他们必须得开发一款能够让旧软件继续运行的机器,即一款向后兼容的 32 位计算机。VAX 尽其所能也没有找到第二个问题的完美解决方案,但是 Tom 坚信他的 Eagle 可以做到。

00:08:14

Eagle 的总部位于韦斯特伯勒 14 号楼 AB 的地下室。Tom 指派 Carl 负责 微码 micro coding 。Carl 指派 Chuck Holland 来管理 编码员 coder ,他们被称为 微码小子 Micro Kids 。同时,Ed Rasala 将负责硬件。他委派了 Ken Holberger 负责管理团队,这个团队被恰当地称为 哈迪男孩 Hardy Boys 。(LCTT 译注:《哈迪男孩》是一部 1977 年的美国电视剧。) Tom 有一个盟友,就是工程副总裁 Carl Carman。 Carman 也对 Ed de Castro 有意见,因为 Ed de Castro 拒绝让他来负责北卡罗来那州的小组。

00:08:51 - Carl Alsing

Carl Carman 知道我们在干什么,却什么都没有对他的老板说。所以他给我们提供了资金,但我们需要保持较低的薪水,并且需要一些非常聪明的工程师。因此,我们决定去招收大学毕业生。这样做的好处之一是他们不知道什么是你做不到的。他们以为你无所不能。

00:09:15 - Saron Yitbarek

那时 Jim Guyer 刚从大学毕业两年,在数据通用公司工作时被分派到了哈迪男孩。

00:09:21 - Jim Guyer

北卡罗来那州那边正在开发的机器更多是高端计算,本质上几乎是大型机。而且,嗯,我的意思是,这在当时确实是投入到与 IBM 以及其他大型机公司的竞争中去的相当重要的一步。我们认为我们有优势,因为我们想做的事情并不那么雄心勃勃,而且我们真的、真的专注于一种简洁、干净、简单的实现方案,用最低的成本、最少的组件等等。

00:09:51 - Saron Yitbarek

成本低廉,设计简单。他们意识到他们需要使用 固件 firmware 来控制一切。与硬件相比,把越多的功能置于固件控制之下,所开发的机器就越便宜、越灵活。

00:10:03

而且它们能够根据需求进行修改。当然,现代计算机都是以这种方式构建而成的,但在 1978 年,这种方法是全新的。

00:10:15 - Carl Alsing

我们所做的设计非常简约。我们正在研究能够使事情简单明了的方法。因为我们知道,它不可能变成一个庞大而又昂贵的机器。它必须只是几块板子、几个电路,这是让使它快速发展的一个优势。设计一款安全的、无风险的产品,和设计一款用于制胜的产品是有区别的。而我们并不担心风险,我们在意的是取胜。我们希望它既快速又便宜,我们希望快速地开发它。因此,我们只用了三、四块板子,这是最低限度的硬件,我们通过固件来弥补这些。

00:11:06 - Saron Yitbarek

Eagle 团队面临着很多严苛的限制。 VAX 是这个星球上(当时)性能最高的 32 位计算机。 Eagle 必须与之匹敌。但最重要的是,它还必须兼容他们的 16 位架构。要用比其他团队更少的金钱和时间来做到所有这一切,这使得 Eagle 感觉像是在赌博。但 Tom West 的团队全力以赴投身于其中。

00:11:32 - Jim Guyer

有两套无时无刻都在运行着的系统,我们有两班工程师为之工作。我们所有人都必须全盘掌握。因此,我们不得不学会其他每一个人的岗位所要做的工作。这对我而言既具有挑战性又极其富有教育意义。但是我们大家都参与其中努力着,“要解决这个问题下一步该做什么?我们需要着眼于何处?”每个人都仔细钻研原理图和其他文档,试图找出办法,“看看这个信号,看看那台计算机的状态,看看微码正在执行的步骤顺序。它在正常运转吗?哦等等,它出错了。呃,为什么它会这样运行呢?”

00:12:13 - Carl Alsing

这是件严肃的事情,这就是工作态度。小组里的工作很紧张。有时候人们会对于采用何种方式去做某件事情而发生争论。可能有一种方法会花费稍微多一点的钱,而另一种方法则更便宜,但是可能速度稍慢或效率稍低。为了达成共识,可能会开展激烈的讨论或会议。但我们还是做出了这些选择,然后我们协作努力。

00:12:44

我们没日没夜地工作,在 原型 prototype 上付出了很多时间。我们只有两个原型,两个团队都能在这两个原型上工作着实很重要。因此,晚班和白班都有人在工作,人们都很疲惫,但这让人感到非常兴奋 —— 这是值得的。所以没有人过多地抱怨工作条件。

00:13:11 - Saron Yitbarek

工作条件 —— 据传当时 Tom West 为了让团队完成他所期望的东西,实行了一种被称为“ 蘑菇管理 mushroom management ”的方法。喂养它们然后看着它们成长。在狭窄而炎热的工作空间里,时间很漫长,日程安排也不切实际。Tom 本人被形容为神秘、冷酷、无情的人。有位工程师甚至称他为“ 黑暗王子 the Prince of Darkness ”。 Tom West 是否如此渴望取胜以至于剥削了他的团队吗?他是否为了得到完美的机器而牺牲了微码小子们和哈迪男孩们的福祉?

00:13:56 - Jim Guyer

Tom 是个有趣的家伙。他对你期望很高,但不会给你很多指导。他希望你可以自己弄清楚需要做什么,而如果你不能做到的话,你就会被踢出团队。

00:14:10 - Saron Yitbarek

指导来自于 Carl 或是 Ed, 他们是 Jim 和团队其他成员每天都与之工作的部门经理。但这些年轻的工程师也为了取胜而参与其中,他们喜欢自己所获得的机会,愿意自己去搞清楚。

00:14:26 - Jim Guyer

我个人获得了第一届微码小子通宵荣誉奖。我不知道是什么理由,也许我们都是能力超群、豪气冲天、无知无畏的年轻后浪。我们很自信,我们觉得自己相当聪明,可以解决问题,我们相互依靠,也许这就是自负。我乐在其中。我认为我们大部分人都乐在其中。

00:14:56 - Saron Yitbarek

Carl 不同意“蘑菇管理”这一说法。他说情况恰恰相反。他们都确切地知道正在发生什么,以及预期是什么。反而是高层管理人员不知道。同时,Tom West 正在承受着来自多条战线的巨大压力,而这种压力也传递给了他的团队。

00:15:18 - Carl Alsing

Tom 对这个项目的真实性质保持着低调。因此,他并没有对工程师们说很多,他保持着超然的态度,当然他也告诉他们,他们不能在团队之外或是家中讨论该项目。甚至不能使用 “Eagle” 一词。因此,我们还传达了这个项目非常紧急,我们必须在一年之内完成,竞争已在市场中展开,如果我们要通过这个东西来占据市场之巅,我们必须现在就把它完成。因此他们承受着很大的压力,并且团队期望他们在夜晚和周末也参加工作,没有时间留给他们去和家人野餐或是做其他任何与工作不相关的事情。

00:16:06 - Saron Yitbarek

我想知道在 14 号楼 AB 的战壕里奋战是怎样的感受。所以我邀请 Neal Firth 来到身边。他是微码小子中的一员,刚毕业就加入了团队。

00:16:20

和 Tom West 共事的感觉如何?你和他有过很多互动吗?

00:16:24 - Neal Firth

不一定。他是那种幽灵般的人物。我们能看到他在身边。他一般也不会不干预,以便我们能够领导自己、实现目标。我们正在做的事情是全新的,他不想把上一代处理器要做的工作强加给我们。

00:16:49 - Saron Yitbarek

这听起来像是一个工作十分紧张的地方,在这里你真切地想不断前进并完成工作。你是怎样应对没有太多时间这一事实的?

00:16:57 - Neal Firth

老实说,这并不是问题。想要时间充裕实际上并没有什么问题。我们可能会花费一些时间来实现结果。这需要家里人非常支持与理解,因为她们并不一定会立马同意。你可以将其等同于当时的一些硅谷人,或是像 乔布斯 Jobs 沃兹尼亚克 Wozniak 之类的人,我们投身其中并搞定它。我们确实不全是“ 住在同一间公寓 live-in-the-same-apartment ”或“ 在地板上写代码 code-on-the-floor ”那样的人,但具有其中的一些特征。

00:17:35 - Saron Yitbarek

在那段时间里,是什么让你坚持了下来?为什么你这么有动力?

00:17:39 - Neal Firth

坦率地说,就是在解决问题。我一直是一个喜欢思考并善于解决问题的人。事实上,团队里的大部分人都是这样的。我们所有人都有着类似的背景,并且我们都很享受解决问题这件事。就是,解决那些难题,找到一种前所未有的方式去做事。

00:18:01 - Saron Yitbarek

那么在这个项目中,你最难忘的时刻是什么?

00:18:05 - Neal Firth

当时,项目已经进行了相当长的时间,我们正在运行微码模拟器,它实际上是被提议当作生产模拟器来运行的,已经运行了 10 到 12 个小时了。突然,字母 E 出现在了控制台上,然后我们等了一会儿,又是一个字母,接着又是一个字母,然后我们突然意识到我们运行的是测试代码,是正在设计运行的诊断程序。因此,微码模拟器正在模拟运行这份微码的硬件,并且它开始打印字母,就好像它真的在运行一样。所以当它真正问世并运行时,可能比实际上要慢了十万倍,但这仍是我最难忘的时刻之一。

00:19:02 - Saron Yitbarek

现在回过头想想,你觉得自己当时有被剥削吗?

00:19:07 - Neal Firth

没有。我可以意识到正在发生着什么。我知道正在发生什么。所以,没有,我没觉得被剥削。实际上,这是我大学毕业时候的期望,否则我永远都不可能参与这么重大的项目,或是有机会在这样的一个项目中扮演那么重要的角色。

00:19:31 - Saron Yitbarek

我想知道你如何看待发明的牺牲,因为如果你要考虑所有我们所创造的伟大事物,通常来说我们不得不放弃一些东西,是这样吗?必须舍弃一些东西来做出真正惊人的东西。这样的情况你遇到过吗?如果有的话,你不得不放弃的东西是什么呢?

00:19:48 - Neal Firth

我不会说我放弃某些东西是有一个思想驱动的过程,我认为更重要的是,我更能适应自己正在做的事情以及所做的事对周围人的影响。

00:20:03

但我从来没把它看作是一种牺牲,而与我亲近的人们,他们生活在就是这样的一个世界里。我听说过一些可怕的故事,如果你愿意的话,在今天,在这里都是,你醒来,插上你的咖啡机,拿一些披萨或点心,然后你开始写代码,最后你在你的键盘上睡着。然后你在下一个早晨醒来,重复这个过程。

00:20:35

我们当然远没有达到那种牺牲的程度,我仍然有妻子,我仍然有朋友,我们仍然在一起。这当然不是份 朝九晚五 nine-to-five 的工作,但是它给我带来了许多个人层面与技术层面的成就,我能把这些和我的妻子、姐妹、父亲、母亲以及岳父分享,这些人可以欣赏这些。

00:20:59 - Saron Yitbarek

是啊。那么,你认为使某件事情变得真正伟大的关键是什么呢?

00:21:06 - Neal Firth

使某件事情变得真正伟大的关键 —— 有趣的问题 —— 我认为这取决于参与其中的人员,因为他们想要这样做,而不是因为他们对成就、财富或是名望的渴望。因为那些东西都转瞬即逝,而且永远无法使人满足。但是如果你要努力地去实现一个目标,而且你和一群人共同努力并去实现它,那么当你最终实现目标的时候,这确确实实是能令人心满意足的。

00:21:42 - Saron Yitbarek

Neal Firth 是 Eagle 项目中微码小子中的一员。他目前是一家名为 VIZIM Worldwide 的软件公司的总裁。

00:21:57

正如 Tracy Kidder 书中所记载的那样, Tom West 的超然和距离感是刻意为之的。这是他试图在日常交谈中保持头脑清醒,从而能使 Eagle 的目标保持原样。不过更重要的是,他想保护团队,将他们与周遭发生的政治与企业边缘化相隔绝。他也保护了微码小子们和哈迪男孩们不受先入为主的观念影响。

00:22:28

1980 年, Eagle 完成了。比 Tom 所承诺的要晚了一年,但至少还是完成了,不像 Fountainhead。就像资深团队所预料的那样, Fountainhead 团队失败了,他们的项目遭到了搁置。这位是 Bill Foster,当时的软件开发总监,他谈到了 Fountainhead 的挣扎。

00:22:50 - Bill Foster

我认为所犯下的最大错误在于没有对其设置任何限制。或多或少地,就是让我们去开发世界上最好的计算机。嗯,它应该在什么时候被完成?哦,我们对此确实没有个明确的期限。它应该花费多少成本?好吧,我们也不确定。我不得不让 Ed 失望了。他没有在程序员和工程师之间设置足够的界限。

00:23:15

而且如果你让一群程序员和工程师放任自流,猜猜怎么着,他们将使事情变得复杂,设计出过分庞大的东西,以至于永远不能完成。

00:23:26 - Saron Yitbarek

让我们回忆一下。从 Tom 和他的团队决定秘密开发 Eagle 开始,这已经进行了两年了。整个过程中,公司总裁并不知道正在发生了什么。当现在已经正式命名为 Eclipse MV/8000 的这款机器准备交付时,市场营销负责人去找了 Ed de Castro,为营销活动放行。 Carl Alsing 将对此作出解释。

00:23:53 - Carl Alsing

市场营销负责人说道:“好吧,我们已经准备好为 Eagle 进行推广了,我们需要数千美元。我们将在全球六个不同的城市举行新闻发布会。我们将进行一个巡演,去到很多城市,我们将拍摄一部影片来展示它,这将轰动一时。”

00:24:14 - Carl Alsing

然后 Ed de Castro 说:“我不明白。你们为什么要那样做?”这只不过是在 Eclipse 那边的另一个包而已,表面工夫的工作而已。市场经理说:“不,这是一款全新的机器。这是一款 32 位的机器,有虚拟内存,具备兼容性。它将击败 VAX。所有你要的东西都在这里了。”

00:24:37 - Carl Alsing

Ed de Castro 着实有点儿困惑。他以为我们在北卡罗来那州遭遇了失败,将成为事情的终结,但我们拯救了他。因此,是的,他邀请了我们所有人,我们举行了一次小型的午餐会。午餐会上有三明治和苏打水,他说:“嗯,你们做得很好,我很吃惊。我此前并没有意识到你们在做这个,但是我们会推广它,我知道将会安排一部影片、一些巡游,而且你们将成为这其中的一部分,所以,感谢你们,请吃你们的三明治吧。”

00:25:19 - Saron Yitbarek

现如今被命名为 MV/8000 的 Eagle 出现在了《 计算机世界 Computer World 》杂志的封面上。推出期间,媒体的炒作使得这支原本秘密的、深居地下室的团队成员们变成了小名人。毕竟,他们拯救了数据通用公司。

00:25:38

但好景不长。 Tom West 再也无法让团队免受公司内部政治的影响。团队面对敌意毫无准备。公司里的其他人都嫉妒他们的成就,并对他们能在秘密项目中逃离如此之久感到震惊。

00:25:57

不久后,一个新的工程副总裁取代了他们的盟友 Carl Carman。这个新来的人在第一台 MV/8000 被售出之前就拆分了 Eagle 小组,并把 Tom 发配到了数据通用公司的日本办事处。

00:26:13 - Jim Guyer

我认为我们开发出了花钱所能够买到的最好的 32 位超级小型机,我认为这对数据通用公司来说是一件很棒的事情,我认为它将能把 DEC 稍微踢开一点,而不是我们把世界从他们身边夺走。那时候的竞争太艰难了,在高科技领域很难成为赢家,但我认为我们已经做了一些有价值的事情。

00:26:42 - Saron Yitbarek

当 Eagle 发行时,它确实拯救了数据通用公司,但在市场份额被 DEC 夺走三年后,该公司从未真正恢复过来,而行业却发展了。小型机不再是大势所趋。 微型计算机 microcomputer 的竞争已经开始了,这为 个人计算机 personal computer 革命铺平了道路。

00:27:04 - Carl Alsing

数据通用公司继续开发了其他的版本,并在其他的型号上进行了改进,这样进行了一段时间,取得了一些成功。但是世事无常。市场发生了变化,他们自己转型成了一家软件公司,然后最终被其他人收购了。如今,我认为他们在马萨诸塞州 霍普金顿 Hopkinton 某家公司的文件抽屉里。

00:27:36 - Saron Yitbarek

一年后, Eagle 团队中的许多人离开了数据通用公司。有人感到精疲力竭。有些人准备好要去开发一些不一样的东西。一些人前往西部的硅谷,热衷于寻找下一个创意火花。无论如何,在一个不承认他们为拯救公司所做的一切的公司里,继续待下去似乎没有什么意义。1981 那一年 Tracy Kidder 的《 新机器的灵魂 The Soul of a New Machine 》出版了。现如今,全世界都知道 Eagle 是如何构建起来了。

00:28:14 - Carl Alsing

如果你问我新机器的灵魂是什么,我想我会说是他们所经历的人和事,他们所做出的牺牲,他们所做出的努力,他们对此所感到的兴奋,以及他们所希望得到的满足感。也许得到了,也许没有,但他们为之而努力。

00:28:35 - Jim Guyer

从某种意义上说,这款机器是有点儿个性。但真正有个性的是这些有勇气的人。

00:28:47 - Saron Yitbarek

在我们有关硬件的全新一季的下一集里,我们会将时光倒回大型机世界,讲述另一群叛逆员工的故事。他们制造的计算机催生了一门改变世界的编程语言。

00:29:04 - Saron Yitbarek

代码英雄 Command Line Heroes 》是 红帽 Red Hat 的一档原创播客节目。这一季,我们正在为你整理一些出色的研究,以便你可以更多地了解到我们正在谈论的硬件的历史。请前往 redhat.com/commandlineheroes 深入了解 Eagle 及其背后的团队。我是 Saron Yitbarek。下集之前,编码不止。

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-4/minicomputers

作者:Red Hat 选题:bestony 译者:JonnieWayy 校对:windgeek, wxy

本文由 LCRH 原创编译,Linux中国 荣誉推出

2020 年 7 月 21 日,Linux 中国翻译团队 LCTT 旗下的第一个特别兴趣小组(SIG)—— LCRH,在红帽公司的鼎力支持下诞生。LCRH 的目标是翻译红帽公司《代码英雄》播客的脚本为适合国人阅读理解的中文脚本。

而到了半年后,LCRH 翻译的中文脚本已经正式更新发布了前三季节目,共计 24 篇文章,时长约 12 个小时,篇幅长达 25 万字,堪比一本长篇小说!

《代码英雄》的英文名为《Command Line Heroes》,作为红帽(Red Hat)公司精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者们是如何彻底改变技术前景的真实史诗。在这一目前仍在持续更新的系列播客中,红帽公司邀请了诸多亲历了开源技术发展史上一些关键事件的人物和代表性的业界技术领袖,来一同探讨开源、操作系统、容器等或源远流长、或鲸吞天下的开源技术。在将这个播客在引入中国时,红帽公司希望其能展现出这些顶级黑客、开发领袖的英姿风貌,因而将其中文名称定名为《代码英雄》。

让这些代码英雄的风貌传播给中国开源和技术爱好者的,是来自 LCRH 的 30 多位贡献者,他们通过自己的辛苦努力,对每一篇文章都经过多人、多次的反复斟酌,力求将代码英雄们的史诗传奇介绍给国人,带给广大的技术开发者。

以下是我们已经发布的前三季的《代码英雄》,更多精制译文正在贡献者们的努力下逐渐加工出来。

在 LCRH 的代码仓库中,记录了 35 名贡献者的 460 次代码提交。这些贡献者们有的人尚在高校,有的人已从业多年;有的人身在中国,有的人求学海外。但对于开源技术的热爱、对于开源贡献的坚持,让他们造就了 LCRH,造就了中文版的《代码英雄》。

作为一个开发者,《代码英雄》所讲述的历史让我悠然神往,技术领袖们对开源和技术的观点使我可以高屋建瓴地看清乱花迷眼的技术本质。而这一切,都是由 LCTT/LCRH 的贡献者带来的,感谢这些可爱的贡献者!

《代码英雄》SIG 欢迎对于开源和技术感兴趣的你,参与到我们当中来,和我们一起贡献代码英雄的世界!你可以在 QQ 中搜索群 940139452,加入我们,参与贡献,具体贡献流程可以进群后了解。

除了《代码英雄》SIG,如果你对技术翻译感兴趣,也愿意以这种方式参与开源贡献,也欢迎加入到 LCTT(Linux 中国翻译团队)当中来。同样的,在 QQ 中搜索群:198889102 即可加入我们,加群时请说明是“志愿者”,并在加入群后修改群名片为你的 GitHub 的 ID,参与贡献!

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客《代码英雄》第三季(8):C 语言之巨变音频脚本。

导语:C 语言和 UNIX 是现代计算的根基。我们这一季介绍的许多语言都与 C 语言有关,或者至少受到 C 语言的影响。但是 UNIX 和 C 都只是 贝尔实验室 Bell Labs 的几个开发人员作为秘密计划项目创造出来两个成果而已。

贝尔实验室是二十世纪中期的一个创新中心。Jon Gertner 将其描述为一个“创意工厂”。他们在二十世纪 60 年代最大的项目之一是帮助建立一个名为 Multics 的 分时 time-sharing 操作系统。Joy Lisi Rankin 博士解释了当时关于分时系统的一些宣传,它被描述为有可能使计算成为一种公共服务。大型团队投入了数年的精力来构建 Multics —— 但这并不是他们所希望的成果。贝尔实验室在 1969 年正式远离了分时系统。但正如 Andrew Tanenbaum 所描述的那样,一个由英雄组成的小团队还是坚持了下来。C 语言和 UNIX 就是这样的结果。他们并不知道他们的工作会对技术的发展产生多大的影响。

00:00:00 - 发言人 1

我们掀起了新一波的研究浪潮。我们的创造力正在延伸。

00:00:10 - 发言人 2

噪音、噪音。

00:00:13 - 发言人 1

这些人是贝尔电话实验室的设计工程师。

00:00:16 - Saron Yitbarek

在上世纪 60 年代,坐落于新泽西州默里山的贝尔实验室,是科技革新的中心。在那里,我们的未来科技迈出了第一步。在那里,贝尔实验室发明了激光与晶体管,它还是信息论的摇篮。在 1968 年,贝尔实验室的四名程序员创造了一种极具开拓性的工具,它根本地改变了我们世界运行的方式,也标志着贝尔实验室的种种创新达到了新的高峰。

00:00:53

我是 Saron Yitbarek,这里是《代码英雄》—— 一款来自红帽公司的原创播客。在一整季的节目中,我们追寻着编程语言世界中最具影响力的一些故事,现在,我们终于迎来了这一季的结尾。我认为,我们把最好的故事留到了最后。这个故事中的编程语言使本季中提到的其他编程语言成为了可能。在正好 50 年以前,C 语言在贝尔实验室被设计出来,这是一种非常基础的通用程序设计语言。它是如此的基础,以至于我们有时候都会忘记,C 语言的发明是多么意义深远的成就。

00:01:35

为了得到事件的全貌,我们需要回到上世纪 60 年代,正好在 C 语言的诞生之前。那是一个一切似乎都有可能的时代。

00:01:46 - Jon Gertner

在上世纪 60 年代,贝尔实验室简直是研究人员的世外桃源。在今天,已经很难找到与贝尔实验室相似的企业研发实验室了。

00:01:56 - Saron Yitbarek

这是 Jon Gertner,他是《 创意工厂:贝尔实验室与美国革新大时代 The Idea Factory: Bell Labs and the Great Age of American Innovation 》的作者。我们采访了 Jon,让他大家解释当时贝尔实验室的情况。为什么在上世纪 60 年代,贝尔实验室能够成为他所说的“创意工厂”呢?

00:02:15 - Jon Gertner

我想今天我们都相信——“竞争带来伟大的科技革新”,但是我不能确定这种观点的正确性,并且,其实,贝尔实验室的成就在一定程度上是与这种观点相悖的。贝尔实验室的工程师和科学家们并没有特别大的压力,但是与此同时,由于贝尔实验室在诸多的研究实验室中的地位,它又确实可以雇佣到最优秀、最聪明的研究者,并给他们足够的时间去研究感兴趣的问题,同时提供大量的资助。如果你能证明你的研究项目符合这家电话公司(LCTT 译注:指 AT&T)的目标和理念,你就能够得到经费。

00:03:00 - Saron Yitbarek

而 Jon 强调,虽然贝尔实验室是一个商业公司的产物,但它的价值观还是比较接近学术界的。通过让员工自行决定工作方式及内容,贝尔实验室实践了类似于开源社区的开放式领导原则。

00:03:19 - Jon Gertner

这是诸如苹果、谷歌与微软这样的大公司出现前的时代。计算机的历史更多的聚焦在西海岸,聚焦于 自制计算机俱乐部 Homebrew Computer Clum 这样的组织,以及从其中发展而出的企业;但是我认为贝尔实验室和那些企业一样重要。贝尔实验室坐落于一个现在看来几乎不可思议的地方:新泽西的郊区。但是,这里曾聚集了对科技突破做出了巨大贡献的科学家、研究者和计算机工程师,他们的研究成果对全世界都有惊天动地般的显著影响。

00:03:54 - Saron Yitbarek

分时 time-sharing ”就是这些惊天动地的项目之一。它的核心概念很简单,实现难度却极大。他们能构建一个能够同时由成百上千的用户使用的操作系统吗?这样的发明将会使当时的计算机领域为之震动。从 1964 年起,贝尔实验室的天才们,与 通用电气 General Electric 和麻省理工学院(MIT)合作,试图集体推进这项工作的进展。实际上,麻省理工学院在一年前已经有了相关的研究项目,即 MAC 计划 Project MAC ;但是现在,所有这些顶级团队已经团结起来,开始着手钻研大型主机分时操作系统的构建方式。

00:04:40

实际上早在 1959 年, 约翰·麦卡锡 John McCarthy 就提出了分时操作系统的概念。请收听我们 第七集 的节目获知更多细节。他设想了一种可以在多个用户之间切换其“注意力”的大型计算机。麦卡锡认定,这样的一种机器有潜力极大地拓展现有的计算机文化。让我们来设想一下吧,如果一千名用户能够同时在一台机器上工作,你就完成了对整个编程与计算机世界的民主化。现在,这支群星荟萃的团队准备着手将麦卡锡的梦想变成现实,并为他们想象中的操作系统起了一个名字 —— Multics(LCTT 译注:Multi- 前缀代表“多人的”)。

00:05:23

Multics 团队为分时操作系统进行了多年的工作,但是该项目遇到了严重的资金困难,并且在十年之后,项目仍然看不到尽头。雪上加霜的是,项目的领导者 Bill Baker 是一个化学家,对贝尔实验室的计算机科学部门并不感兴趣。除此之外,我们仍然能找到一个新的问题 —— 自尊心问题。

00:05:46 - Jon Gertner

在贝尔实验室,人们每天习以为常的一件事情就是独自工作。我的意思是,贝尔实验室的人们有一种感觉:他们认为自己拥有一切他们所需要的的人才和构思,并且拥有最先进的科技,当他们遇到值得解决的问题时,他们有能力去解决这样的问题。这种看法可能有一定合理性;但是 Multics 项目在贝尔实验室没有进展,在某种程度上也可能是因为像这样更加复杂的、合作性的工作在贝尔实验室的体系中运转不良,也不能让那里的高管们满意。

00:06:20 - Saron Yitbarek

Jon Gertner 是 《创意工厂》 The Idea Factory 一书的作者,他刚刚发表的新书是 《世界尽头的冰》 The Ice at the End of the World

00:06:32

贝尔实验室于 1969 年四月正式宣布放弃 Multics 项目,但这是否就是故事的结尾呢?就贝尔实验室而言,分时操作系统 Multics 之梦已经破灭。但是这个梦真的结束了吗?结果却并不是这样,并非所有贝尔实验室的研究人员都放弃了分时操作系统。四个顽固的拒不退让者在所有人都已放弃之后,继续坚持这一梦想,而那就是下一个故事了。

00:07:08

说实话,有些梦想太美好了,这样的梦想是很难被人抛弃的。

00:07:12 - Joy Lisi Rankin

这是一件大事业。

00:07:14 - Saron Yitbarek

这位是 Joy Lisi Rankin,她是 《美国计算机人物史》 A People's History of Computing in the United States 一书的作者。Joy 将会和我聊聊分时操作系统的理想,以及为什么分时操作系统如此不可或缺。

00:07:27 - Joy Lisi Rankin

开发分时操作系统是一件重要且极富雄心壮志的事,直到该项目开始之前,大部分上世纪 60 年代早期的分时系统在一台主机上都约有 40 至 50 个终端。因此,提升终端的数量是重要性很高的一件事,贝尔实验室的雄心很可能超出了大部分人的认知,这也是这个项目在实现最初目的的过程中碰到了不少困难的原因。但是,尽管如此,分时操作系统继续以不同的形态发展,并真正地走向繁荣;分时操作系统不仅仅在麻省理工学院得到发展,也走向了其他的地方。

00:08:09 - Saron Yitbarek

是啊。那么,当我们谈起上世纪 60 年代,是谁在推动分时操作系统的需求?你提到了麻省理工学院、通用电气公司和贝尔实验室。那么我们的关注点是商业还是学术团体?谁才是真正的推动者?

00:08:23 - Joy Lisi Rankin

我认为学术团体和商业团体共同推动了发展的进程,除此以外,一些 科学 scientific 团体也参与了这项事业,因为,正如我之前所说,分时操作系统是一种更加一对一、富有互动性的计算体验。但是从另一个角度来看,我也会说教育工作者也同样在推动这件事的发展。并且,从国家的层面上讲,当时也在进行关于创建全国性计算设施的对话。那么,基本上来说,所谓的全国性计算设施指的就是全国性的分时操作系统网络。真的,美国的思想领袖们也有这样的言论,他们认为这样的系统会是与供电、电话、供水一样的基础性服务。

00:09:08 - Saron Yitbarek

哇哦。

00:09:08 - Joy Lisi Rankin

对啊,我知道的!这确实很……

00:09:09 - Saron Yitbarek

那可真是一项大事业。

00:09:11 - Joy Lisi Rankin

那是一项非常大的事业。

00:09:13 - Saron Yitbarek

Joy 让我想起了一件事。尽管这一期节目主要聚焦于创造了 C 语言和 UNIX 操作系统的团队,但是在贝尔实验室之外,对分时操作系统的推动是一项运动,比任何一个团队都大。将计算机视为公共设施是一个非常有意义的想法,在这项事业中,有许多优秀的人物,可惜我们不能请他们来到这里,比如 Bob Albrecht 和 Martin Greenberger ,以及其他的一些杰出人物。

00:09:37

好的,在进行了一些预先说明之后,让我继续和 Joy 的对话吧。

00:09:41 - Joy Lisi Rankin

那么,当约翰·麦卡锡在麻省理工大学的演讲上首次公开的谈论分时操作系统时,他明确的将其与电力进行了比较,并说:“这是一个让所有人都能使用计算机的方式,不仅仅是在学校里和商业活动中,还在每个人的家里。”回首过去,再阅读当时的文章与档案,许多人都确信,未来会出现一种能够被规范化管理的计算公共设施。因此,人们对这种全国性的分时基础设施充满了信心和支持。

00:10:22 - Saron Yitbarek

非常有趣的一点是,在 1970 年,IBM 实际上已经退出了分时操作系统这一产业。即使是通用电气也出售了他们的大型主机部门,不过他们还仍然保留了一部分分时操作系统相关的业务。让我们简单地谈一谈这些吧,1970 年发生了什么?

00:10:39 - Joy Lisi Rankin

我认为 1970 年已经一定程度上已经成为某种标志,这也许是人为假想的标志,这一年标志着公共计算设施与分时操作系统产业的失败。从某些角度上来说,这种观点是错误的。我认为在上世纪 60 年代末期,麻省理工和 Multics 项目明显在创建一个支持上千个终端的分时操作系统上遇到了困难,而这是一个知名度极高、影响力很大的项目。在同一时期,数十个基于分时计算模型的商业项目在美国兴起并繁荣发展。这是一个科技泡沫。随后,对于分时操作系统的热情走向衰落。这不完全是因为通用电气出售了他们的计算主机业务,他们在上世纪 70 年代至 80 年代间一直保留着他们的分时计算业务,并且这一业务盈利状况良好。除此以外,当时的大学,例如麻省理工学院,也继续运行着他们的分时操作系统,直到上世纪 80 年代。

00:11:52

因此,依我之见,“分时系统只是一个在上世纪 70 年代破碎的科技泡沫”的公共记忆之所以产生,一定程度上是因为人们过多地关注了 Multics 的困境。然而,事实上来说,如果我们回到过去,看一看当时的人们如何使用分时操作系统,以及分时操作系统赢得了多少利润,了解一下分时操作系统的成功,我们就会发现,其实上世纪 70 年代正是分时系统繁荣的年代。

00:12:17 - Saron Yitbarek

现在让我们把眼光放回到贝尔实验室,由四位技术专家组成的小组想要创造他们自己的分时操作系统。他们是 肯·汤普逊 Ken Thompson 丹尼斯·里奇 Dennis Ritchie 道格拉斯·麦克劳伊 Doug McIlroy 约瑟夫·欧桑纳 J.F. Ossanna 。不过他们并不想完成 Multics,他们想要越级跳过 Multics,制作一个不受过往拖累、功能更为强大的操作系统,他们称之为 UNIX(LCTT 译注:Uni- 这个前缀代表“单一的”)。

00:12:39 - Joy Lisi Rankin

我认为 Multics 是 UNIX 的灵感来源,其原因在于,许多在 Multics 上工作的程序员是如此享受分时操作系统在编程上的优点,以至于在 Multics 陷入困境时,他们便想要创造一个属于他们自己的分时环境。这些来自贝尔实验室的程序员,他们决定构建他们自己的编程框架与分时操作系统,这就是 UNIX 的起源。

00:13:20 - Saron Yitbarek

Joy Lisi Rankin 是 《美国计算机人物史》 A People's History of Computing in the United States 一书的作者。

00:13:29

丹尼斯·里奇 Dennis Ritchie 将自己和其他三名同事称为一个 团队 fellowship 。他们几个开发者想要作为一个紧密的四人小团体而工作,并且他们需要一种能够协调他们程序设计的硬件。但是贝尔实验室已经放弃了分时操作系统的梦想,即便它是一个学术研究的世外桃源,给已经放弃的项目拨款这件事也超出了他们的底线。因此他们拒绝了使用新硬件的提议。为此事购买新的硬件太过昂贵了,为什么要冒险呢?但研究员们还是坚持了下来。

00:14:05

汤普逊和里奇要求得到一种类似 GE645 的机器,这是他们一直用来进行 Multics 相关工作的型号。当他们得知无法得到经费时,他们刚刚在纸上潦草地写下一些关于文件系统的想法。最后,他们在一个他们称之为“太空旅行”的游戏中成功地实现了他们的一些想法,这个游戏运行在 PDP7 机型上,这种机型基本上与 Commodore 64 是同一个级别的。没有贝尔实验室的支持,他们的开发是缓慢的,至少开始是这样的,是一个字节、一个字节地前进的。这四人组复活了分时操作系统之梦,以他们称之为 UNIX 的形式。

00:14:47

不过这里就是问题所在了:UNIX 操作系统是用汇编语言写成的。也就是说,他们用纸带向 PDP7 传输文件;你可以想象到,他们在缺乏理想的工具与上级的支持的情况下,努力构建这个开创性的操作系统时所遇到的困难。UNIX 已经获得生命,但还没有一种合适的编程语言能够让它歌唱。

00:15:23

开发者们初次尝试为 UNIX 设计的语言称为 B 语言,由 肯·汤普逊 Ken Thompson 编写。

00:15:30 - Andy Tanenbaum

这是 BCPL( 基础综合编程语言 Basic Combined Programming Language )的一种衍生语言。

00:15:33 - Saron Yitbarek

这位是 安德鲁·塔能鲍姆 Andy Tanenbaum 。他是阿姆斯特丹的一位计算机科学教授,也是许多书籍的作者,包括经典教材 《计算机网络》 Computer Networks 。让我们听听他讲解汤普逊的 B 语言背后的故事。

00:15:48 - Saron Yitbarek

所以说, B 语言是 BCPL 的一种衍生物?

00:15:51 - Andy Tanenbaum

BCPL 源于一种构建 CPL 编译器的企图,这种语言编写的编译器确实能够起到作用,而 CPL 基于 ALGOL 60,ALGOL 60 语言又源于 ALGOL 58。ALGOL 58 则源于对 Fortran 进行改进的尝试。

00:16:01 - Saron Yitbarek

搞明白了吗?现在的问题就是,B 语言有许多历史包袱。B 语言和它的这些前身相比,并没有太多的突破性改变,因此,B 语言不能完成让 UNIX 歌唱的挑战。B 语言中没有变量类型,对于初学者来说这是一个问题。除此以外,B 语言对应的汇编代码仍然比 B 语言编译器的 线程代码 threaded-code 技术 [1] 要快。

00:16:31 - Andy Tanenbaum

BCPL 和 B 语言只有一种数据类型,就是 双字节类型 word 。双字节类型在基于双字节类型开发的 IBM 的 704 和 709、7090、7094 机型上效果不错,但是从 360 和其它所有的小型电脑开始的机型都是基于 单字节类型 byte 的。在这种情况下,双字节类型就不是一个好主意了,它和现代计算机的匹配程度极其糟糕。因此,显然 B 语言无法解决现有的问题。

00:16:57 - Saron Yitbarek

那么,该团队之前工作使用过的所有机器都是基于双字节类型的,但是在基于单字节对象的操作上,这种类型的机器就不够好用了。幸运的是,在这个时间点上,贝尔实验室的领导们又回来加入了 UNIX 项目,他们意识到了这个团队中正在产生令人激动的进展。他们资助了一台价值 65000 美元的 PDP-11,并且这台机器不是基于双字节类型的,而是面向单字节的。现在,装备上了 PDP-11,丹尼斯·里奇能够在处理编程语言的难题时更进一步。

00:17:36 - Andy Tanenbaum

丹尼斯,以及在肯的少量帮助下,决定编写一种更加结构化新编程语言,包含其它数据类型,比如说 字符类型 char 整数类型 int 长整数类型 long 等等。

00:17:47 - Saron Yitbarek

因此,在 1971 年至 1973 年之间, 丹尼斯·里奇 Dennis Ritchie 一直在调整 B 语言。他增加了一种字符类型,并且构建了一个新的编译器,这样就不需要再使用线程代码技术了。两年结束时,B 语言已经变成了一种崭新的语言,这就是 C 语言。

00:18:08

C 语言是一种功能强大的语言,结合了高级功能和底层特性,能够让使用者直接进行操作系统编程。它的一切都是如此的恰到好处。C 语言从机器层次中进行了足够的抽象,以至于它也可以移植到其他的机型。它并非一种只能用来写写应用的语言。它几乎是一种通用的编程工具,无论是在个人电脑还是超级计算机上都十分有效,而这一点极其重要,因为个人电脑革命当时已经近在眼前。

00:18:49

团队的成员们在确定了 C 语言就是正确的道路之后,就立刻用它重写了 UNIX 内核和许多 UNIX 组件。因此,只要你想使用 UNIX,你就必须使用 C 语言。C 语言的成功与 UNIX 的成功紧密的结合在了一起。

00:19:06 - Andy Tanenbaum

C 语言的流行,其实主要不是因为它是一门比 B 语言更优秀的语言 —— 当然它确实比 B 语言优秀 —— 而是因为,它是编写 UNIX 的语言,并且当 UNIX 广泛发行的时候,它自带了一个 C 语言编译器;甚至最后它还配备了两个 C 语言编译器。那么,UNIX 受到了广泛欢迎,每个使用它的人都有了 C 编译器,而且 UNIX 的一切都是由 C 语言写成的。而 C 语言是一种相当不错的语言,它又是与 UNIX 共同出现的,那为什么还要找其他的编程语言呢?

00:19:33 - Saron Yitbarek

从这里开始, C 语言的价值开始显现。

00:19:35 - Andy Tanenbaum

由于 UNIX 是用 C 语言写成的,并且带有一个 C 语言编译器,C 语言与 UNIX 从一开始就在一定程度上互相依赖,因此,它们也共同成长。在一个关键的时间点,C 语言在 UNIX 系统中已经足够流行时,像 Steve Johnson 这样的人开发了可移植的 C 语言编译器,这种编译器可以为其他型号的计算机产生机器码。最终,出现了面向其他操作系统的 C 语言编译器,人们开始用 C 语言编写各种各样的软件 —— 从数据库系统到……天知道什么奇奇怪怪的玩意儿,因为 C 语言在各种环境下都可用,并且十分有效,效率很高。

00:20:07 - Saron Yitbarek

因此,不久以后,人们也开始用 C 语言编写与 UNIX 无关的程序,因为这门语言的优点是显而易见的。Andy 将为我们讲述,C 语言如何完全接管了整个编程世界。

00:20:20 - Andy Tanenbaum

我想说的是,C 语言在正确的时间出现在了正确的地点。在上世纪 70 年代,计算机的普及范围远比现在要小。普通人不会拥有计算机,并且对计算机一无所知,但是在大学和大企业所拥有的计算机中,有许多都使用了 UNIX 操作系统以及随之而来的 C 语言,也就是说,这些大学和大企业都在使用 C 语言。这些大学与大企业发布了大量的软件,也产生了大量的程序员。如果一个企业想招聘一名 C 程序员,发布招聘广告后一定会有人来应聘。如果想招聘一名 B 语言程序员,没人会来面试。

00:20:49 - Saron Yitbarek

在 C 语言的世界中,有许多基础设施 —— 软件、函数库、头文件等,这一切编程工具都构成了一个完美的闭环。

00:20:59 - Andy Tanenbaum

因此,C 语言变得越来越流行。

00:21:02 - Saron Yitbarek

现在,互联网的兴起导致了人们对 C 语言安全性的关注,这些问题在变种中得到了部分解决,比如 C#。有些时候我们会觉得,好像所有的兴奋点都在 Python 或 Go 等新语言上。但是我们希望能在播客中试图做的一件事就是让大家回忆起当下的我们与历史的紧密关联,而 C 语言的影响至今仍然是不可思议的。

00:21:29

C 语言在现代最出名的产物就是 UNIX 的教子 —— Linux,而 Linux 的绝大部分都是用 C 编写的。就连 Linux 项目使用的标准编译器 GCC( GNU 编译器集合 GNU Compiler Collection ),也是用 C 语言写成的。虽然这一点可能不太引人注意,但是今天所有聚集在 Linux 上的开源编程者,都与一种在半个世纪以前的语言相联系,而 C 语言的统治也在年复一年的增强。

00:22:02 - Andy Tanenbaum

以上这些事情的结果就是世界上占支配地位的两种操作系统的诞生。一个是运行在 Linux 操作系统上的安卓,而 Linux 是重写 UNIX 操作系统的产物。而 iOS,本质上来讲是一种 4.4 版的 Berkeley UNIX。因此,安卓和 iOS 从本质上说都是 UNIX。我怀疑几乎所有的服务器都是运行在 UNIX 或 Linux 的某个版本上的。这些服务器在幕后发挥着巨大的作用,并且任何运行 UNIX 的系统都源于 C 语言,为 UNIX 所编写的一切程序都使用了 C 语言。C 语言确实是无处不在的。

00:22:41 - Saron Yitbarek

安德鲁·塔能鲍姆 Andy Tanenbaum 是一名计算机科学教授,他是《计算机网络》一书的作者。说点有趣的题外话吧,他同时也是 MINIX,一个免费、开源版本的 UNIX 的作者,而 MINIX 事实上也是 林纳斯•托瓦兹 Linus Torvalds 开发 Linux 的灵感来源。当然,Andy 使用 C 语言编写 MINIX。

00:23:03 - Saron Yitbarek

今天,C 语言存在于我们生活中的任何一个角落,从火星上的漫游车到台式电脑上的浏览器。它影响了许多我们在本季节目中提到的语言,例如 Go、Javascript 和 Perl。由于 C 语言与 UNIX 密不可分的联系,C 语言很可能是分布最广泛的编程语言。

00:23:28 - 发言人 7

1998 年美国国家科学奖的获得者是——来自朗讯科技公司贝尔实验室的 肯·汤普逊 Kenneth L. Thompson 丹尼斯·里奇 Dennis M. Ritchie 的团队。

00:23:40 - Saron Yitbarek

回望上世纪 60 年代,这四位贝尔实验室的员工—— 肯·汤普逊 Ken Thompson 丹尼斯·里奇 Dennis Ritchie 道格拉斯·麦克劳伊 Doug McIlroy 约瑟夫·欧桑纳 J.F. Ossanna ——他们那时还不得不向上级乞求关注和资助。但是在 1998 年,汤普逊和里奇就收到了美国国家科学奖,这是为了表彰他们在 C 语言和 UNIX 上的工作。他们也共享了一百万美元的图灵奖奖金。历史的眼光是公正的。

00:24:10

在一整季的节目中,我们一直在追寻那些我们最喜爱的编程语言的发展沿革与魅力。无论它们像 C 语言一样搭上了操作系统发展的便车,又或者是像 Go 语言一样在一种新的基础架构上发展,有一件事是永恒不变的:编程语言有它们自己的生命。它们是活着的。它们出生,成长,走向成熟。有时,编程语言也会变老,走向消亡。我们越多的了解这些语言,我们越会发现编程语言是一股重要的力量,它们总是在不断地变化,以切合时代的需要。我们的职责就是意识到这些变化,并且加以回应。我们的语言一直都是构建我们想要的世界的最佳工具。

00:25:00

以上就是我们所有第三季的《代码英雄》节目。我希望大家喜欢收听我们的节目。节目的第四季已经在制作中,即将推出,敬请期待。

00:25:13

《代码英雄》是来自红帽公司的原创播客。

00:25:18

如果你想深入了解 C 语言或者本季节目中我们提到的任何其他编程语言的故事,欢迎访问 redhat.com/commandlineheroes。我是 Saron Yitbarek ,下期之前,编程不止。


  1. 线程代码 threaded-code 技术:一种通过把一系列调用指令转换成一完整的地址表,然后使用恰当的方式调用的技术。线程代码最初被用来减少代码的占用空间,提高代码密度。通俗地讲,这种技术有点类似于在 C 语言中把一系列的 switch-case 语句转化为用函数指针数组实现的形式。 ↩︎

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-3/the-c-change

作者:Red Hat 选题:bestony 译者:QwQ2000 校对:Northurland, wxy

本文由 LCRH 原创编译,Linux中国 荣誉推出

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客《代码英雄》第三季(7):与机器对话音频脚本。

导读:创造一台会思考的机器在 20 世纪 50 年代似乎是科幻小说。但 John McCarthy 决定把它变成现实。他从一种叫做 LISP 的语言开始。Colin Garvey 介绍了 McCarthy 是如何创造出第一种人工智能语言的。Sam Williams 介绍了早期人们对思考机器的兴趣是如何从学术界蔓延到商业界的,以及在某些项目没有兑现承诺之后,漫长的人工智能寒冬是如何最终到来的。Ulrich Drepper 解释说,人工智能的梦想超出了当时硬件所能提供的范围。

但硬件每天都在变得更强大。Chris Nicholson 指出,今天的机器有足够的处理能力来处理人工智能的资源需求 —— 以至于我们正处于人工智能研发的革命性复苏之中。最后,Rachel Thomas 确定了 LISP 之外的人工智能语言 —— 证明了人工智能现在正准备做的不同类型的任务。

00:00:05 - 播音员

卡斯帕罗夫非常慌乱。虽然已经拼尽全力,但是他意识到,他已经输了。

00:00:12 - Saron Yitbarek

1997 年的春天,国际象棋冠军 加里·卡斯帕罗夫 Garry Kasparov 输给了计算机程序“深蓝”。对于机器智能来说,这是历史上的关键时刻。对于某些人来说,这是一次生存危机,是对人类智慧至上的挑战。但是,对于世界上的技术专家来说,这是另一种意味上的里程碑,是 人工智能 artificial intelligence (AI)领域的一次飞跃。这表明,想要真正的智慧机器诞生,或许不是太过于疯狂的梦想。

00:00:47 - 播音员

去赋予一台机器思考的能力仍然还是梦想,距离实现梦想还需要很多年的努力。此外,还需要做出不少惊人的突破。

00:00:56 - Saron Yitbarek

我们是如何抵达这一步的?是什么导致了卡斯帕罗夫那场著名的失败?我们从哪里来,又该到哪里去?我是 Saron Yitbarek,这里是《代码英雄》,一档来自红帽的原创播客节目。在本季,我们都在探索编程语言的奥秘,揭开他们的历史和发展潜力。这一期让我们关注人工智能。你会使用什么语言,来让你的机器拥有自己的思想呢?我们的编程语言如何帮助我们抵达“深蓝时刻”,甚至是更远的地方?什么样的编程语言能最适配会思考的机器?这是我们半个多世纪以来一直在尝试解决的问题。因此,我们的故事要追溯到 1940 年代,那时,人工智能这个词汇还没有被创造出来。

00:01:59:

回顾二战结束是如何结束的,我们有这样一种感觉,那就是技术帮助同盟国赢得了战争。人们乐观地认为,科技可以成就一切。整整一代人都相信计算机的力量。在这一代人中诞生了人工智能的教父,一位出色的数学家 —— 约翰·麦卡锡 John McCarthy ,他从根本上改变了我们与机器交谈的方式。我想知道他的思想的起源,以及范式的转变是如何发生的。我的意思是,对于初学者来说,当麦卡锡和他的同事们在想象智能机器的未来时,他们到底想象了什么?

00:02:43 - Colin Garvey

哇,这是一个好问题。

00:02:46 - Saron Yitbarek

我和 Colin Garvey 聊了聊。他是 伦斯勒理工学院 Rensselaer Polytechnic Institute 科学与技术研究系的历史学家。以下是我们的一些聊天内容:

00:02:58 - Colin Garvey

麦卡锡对提出 AI 究竟是什么这件事情非常谨慎。不过,举个例子来说,他可能在他最著名但并未实现的程序中描述过(这只是一个思路),人工智能是一个 接受建议者 advice taker 。接受建议者这个说法由麦卡锡于 1960 年的名为《 具有常识的程序 Programs with Common Sense 》的论文中提出的。在开始的时候,你觉得接受建议者可能是一个会学习的机器人,这是它被发明的本意,它算是一个可以接受建议的家用机器人。你说:“不,你这样做是错误的,要那样做。”它就会明白你的意思。

00:03:44 - Saron Yitbarek

那很有帮助。

00:03:45 - Colin Garvey

可能会有帮助。那时候接受建议者要实现的目标是,从办公室导航到机场。换句话说,将从办公室去机场这个建议,正式化成接受建议者机器人能够接受的程序以达成目的,得出从办公室前往机场的一系列程序。它把人类的语言正式化为一系列的合乎逻辑的陈述,即需要根据现在的情况进行合适的抉择,以达到把当前情况转变为理想情况的目标。他将这些想法伪代码化,这实际上是 LISP 的起源。然后在接下来的几年里,LISP 作为他想法的实现,或者说实现他想法的语言出现了。

00:04:39 - Saron Yitbarek

麦卡锡的 LISP 语言改变了游戏规则。它不仅能帮助机器理解命令,还能帮助机器理解一些常识性的逻辑。麦卡锡发现,他可以编写条件表达式,即体现规则的代码,而不是仅仅是直白的命令。实际上,LISP 有一堆重大的编程突破,条件表达式、垃圾回收、递归等等。LISP 在代码和数据中都使用了列表。这是一个简单但具有深远的影响的更改。这是语言范式的转变,所有这些为麦卡锡本人称之为“人工智能”的整个领域打开了大门。想象一下,在你和机器说话的时候,并不需要把每一个细节都给编写好。你可以让那台机器自己来进行推断和推理。麦卡锡希望通过他的 LISP 语言,给机器一种智慧。好了,回到我和 Colin Garvey 的聊天。

00:05:41 - Colin Garvey

LISP 是人们编写高级计算机语言的尝试的过程中,诞生的精华。

00:05:47 - Saron Yitbarek

这很有意思。因为我的下一个问题是 LISP 和人工智能之间的关系。接受建议者第一次描述了 AI 的功能,它听起来也像是 LISP 的开始。能跟我聊聊更多 LISP 和人工智能之间的关系吗?

00:06:04 - Colin Garvey

当然。这些早期的人工智能研究人员面临着一件事,那就是他们还在使用打孔卡进行编程。也许这些早期的编程人员,知道如何进行机器码级别的编程,这是非常困难且耗时的工作。因此,你需要一个更高级的编程语言,以便你可以用更加接近人类语言的方式编程。所以,像 LISP 这样,用列表的形式给出指令的语言 —— 这也是其名称的来源,基于列表的处理(LCTT 译注,LISP 全称:“LISt Processing“)。从某种意义上来说,这样用列表给出的指令更加接近于人类语言,因为他们基本上都可以用通顺的逻辑去理解。因此,如果你可以读懂 形式逻辑 formal logic ,那么基本上可以看明白 LISP 程序,或者任何基于逻辑的编程语言的程序,并对于代码中发生的事情有着更好的了解。

00:07:10 - Saron Yitbarek

所以 LISP 真的帮了大忙……嗯,我的意思是它帮助我们将我们的想法给予人工智能,让我们能够朝着实现人工智能努力,有朝一日总能达成这个梦想。不过这也让我想知道在那个时期,“智能”到底意味着什么?所以,如果我们回到 50 年代,在那个时间点上,什么是“智能”?人们是如何定义它的?因为 LISP 最初为 IBM 704 开发的,它每次做的其实只是一件事。看起来并不是很“智能”。当时的人们是如何看待“智能”的呢?

00:07:43 - Colin Garvey

有关“智能”的定义,这自然非常有争议的。就我个人,从一个普通大众的角度而言,他们的概念是非常狭窄的。但是在当时,广泛认可的定义是:能够执行被认为有智力的举动的能力。但持这个观点的这些人实际上是数学家、逻辑学家和计算机程序员。我的意思是,说句粗俗的话,下棋的能力被认为是智力的明确标志。这一代早期的 AI 人更喜欢回避这个问题,并说,“嗯,哲学家们还没有就什么是‘智力’达成一致,但如果我们制造出一台能下棋的电脑,我想我们都同意这是‘智能’。“

00:08:40 - Saron Yitbarek

不管怎样,这是一个起点。就像婴儿的第一步。

00:08:45 - Colin Garvey

麦卡锡有一个梦想,让机器可以具有常识,并像人一样聪明。本质上来说,你可以和它们交谈。他开始创造一种程序语言来实现这个梦想。这就是 LISP。它模仿了人类思想的某些方面,尤其是逻辑思维能力,并使得利用计算机放大或扩展这些思想特征成为可能。所以从数学家的角度来看,他已经在实现智能机械的道路上走得很远了。

00:09:32 - Saron Yitbarek

Colin Garvey 是伦斯勒理工学院科学技术研究系的历史学家。

随着 LISP 的推进,发展人工智能的新机会开始出现,LISP 是这一新领域的标准语言。麦卡锡离开麻省理工学院去斯坦福大学工作后,麻省理工学院的其他工程师继续从事 LISP 工作。他们把麦卡锡的语言改进成一种叫做 Maclisp 的方言版本,甚至开发了 LISP 操作系统。看起来麦卡锡对人工智能未来的梦想正在成为现实。1968 年,麦卡锡甚至和苏格兰国际象棋大师 大卫·利维 David Levy 打赌。麦卡锡打赌,10 年后,电脑将能够在国际象棋比赛中赢过利维。但是,如果事情进展得那么顺利,那就不是《代码英雄》的故事了。那时候麦卡锡还不知道,人工智能的冬天就要来了。

00:10:45 - Saron Yitbarek

当麻省理工学院的那个基于 LISP 的操作系统,从学院衍生到公司后,情况开始发生变化。其中的一家公司 Symbolix 推出了 LISP 机器,甚至从 MIT 的 AI 实验室 AI Lab 雇用了 14 名员工,而且更不切实际的研究不再是重点。

00:11:25 - Sam Williams

这些公司原本都来自 AI 实验室。

00:11:31 - Saron Yitbarek

这是记者 Sam Williams,他写了一本名为《Arguing AI》的书。

00:11:36 - Sam Williams

Symbolix 可能是最突出的一个。它得到了最多的关注、最多的风险投资。约翰·麦卡锡和他的门徒们推动了所有的创新。我想,这只是一个案例。在 70 年代末期,人们普遍认为:“好吧,我们已经在学术界做了我们能够做到的事情,让我们在商界脱颖而出,让私营企业为我们投资。”

00:12:01 - Saron Yitbarek

这在当时的环境下可以理解。那时AI 似乎即将起飞,有利可图。

00:12:07 - Sam Williams

那时候的算力便宜到中型企业也可以购买。因此,我认为许多公司看到了一个机会:“那里有一个富有潜力的市场,我们可以进入这个市场,我们可以把关于人工智能的产出卖给那些想要具有全球竞争力的企业。”他们让投资者为这个想法大肆投资。在 80 年代初期,大量的资金涌入该领域。

00:12:29 - Saron Yitbarek

我们可以讨论一下为什么这个热潮后来干涸了。但是,我现在可以肯定的一点是,事情已经被大肆炒作了。

00:12:39 - Sam Williams

大量资金流入。人们认为市场非常成熟。

00:12:44 - Saron Yitbarek

从一定来说,大量热钱涌入人工智能领域造成的繁荣,就像世纪之交时网络泡沫的前奏。

00:12:52 - Sam Williams

这在技术发展史上并不少见,人们过度投资,但最终公司未能兑现他们的希望。所以,资金供应陷入困境。公司必须通过老式的方式赚钱 —— 去拉客户,去生产东西。

00:13:08 - Saron Yitbarek

所以那时,麦卡锡的梦想轰然崩溃,回归了现实。Williams 描述了随后的人工智能冬天。

00:13:16 - Sam Williams

你会看到像 Symbolix 这样的公司市值上升到 1 亿美元,然后短短几年后就申请破产保护。在那时候有很多这样的人:“在 10 年内,我们将做到这一点,在 5 年内,你会看到这个。5 年后,你就会看到这个。”这些家伙是投机者,或者是想要从五角大楼或任何其他地方获取更多资金的学者。因为这种危险的炒作,过度炒作,让人工智能走上歧途。

00:13:48 - Saron Yitbarek

人们对于人工智能的兴趣崩塌了。基础设施不到位,或许计算速度也不够高,这使一切努力都变成了徒然。但无论如何,这之中的指导思想是正确的,它只是生在了错误的时代。到了 80 年代末,人工智能研究日渐减少。

00:14:06 - Sam Williams

我认为人们脱离人工智能这个领域的原因是,它失去了最初吸引他们进入其中时的冒险性。它曾处于技术领域的最前沿。在西海岸,很多人的精力被吸引到制造个人电脑上。从 40 年后的今天看来,试着让电脑进入美国每个家庭,比帮助财富 1000 强的企业做出更好的决策,是一个更引人注目的概念。

00:14:39 - Saron Yitbarek

Sam Williams 是《Arguing AI》的作者。我们在这里描述的是一个计算机编程的世界,它被一分为二:一方面是约翰·麦卡锡这样的人,他们试图使用 LISP 等新型语言来探究智能的本质;另一方面,也不可避免地存在着另一群人,他们更专注于解决实际问题,试图让那些愿意为其服务付款的企业轻松一些。现实情况是,世界上的那些约翰·麦卡锡们,那些抽象的梦想家们,并没有太多机会在人工智能的可能性上进行深入探索。他们所拥有的设备甚至还比不上我们今天使用的手机。他们的愿景对于手头的硬件现实来说,真的太大了。

00:15:36 - Ulrich Drepper

当初,我们在轰轰作响的庞大计算机上工作,和数不清的人、数不清的工作组抢夺它有限的性能。

00:15:46 - Saron Yitbarek

这是红帽的杰出工程师 Ulrich Drepper。他解释了早期的人工智能梦想之所以失败,只是因为没有成功所需的基本工具。

00:15:55 - Ulrich Drepper

我们有 PDP 10,PDP 11 之类的计算机(LCTT 译注:Digital Equipment Corporation 公司的大型计算机产品),但每一台都可能有另外 20 个人在同时使用。即使没有这些人将计算力分流走,它们也是真正的低能力机器,其性能不足以在支持 LISP 系统的必要功能的同时,运行一套机能齐全的用户界面。

00:16:19 - Saron Yitbarek

随着时间的推移,新开发的硬件对 LISP 也不再友好。

00:16:26 - Ulrich Drepper

我们不仅走了台式机的道路,也走了服务器的道路。在我们今天已经习惯的处理器类型中,我们的实现的一切都是基于 8 位的处理器,而我们可能有了 16 位处理器、32 位处理器之类的。想要在这样的机器上高效实现 LISP 系统,就必须绕不少圈才能成功。

00:16:56 - Saron Yitbarek

因此,计算世界的外部现实对这个脆弱的人工智能领域产生了意想不到的抑制作用。

00:17:06 - Ulrich Drepper

和大厂商生产的 CPU 相比,定制硬件的成本极为高昂,其发展也极为缓慢。

00:17:21 - Saron Yitbarek

通过创建自定义的硬件解决方案,继续使用 LISP 朝着 AI 梦想前进并非不可能。但是,事实是,令人兴奋的新硬件将很多人的注意力推向了其他工作领域。

00:17:35 - Ulrich Drepper

你只需要等待处理器的下一个版本,那个普通的处理器获得的改进,比你自己开发硬件求解,比如说实现一个 LISP 系统,所能达到的效果和收获要大得多。最终,硬件变得越来越复杂,自行定制硬件成为了一件近乎于不可能的事。

00:18:03 - Saron Yitbarek

那么,约翰·麦卡锡的远景梦想是慢慢死去,还是只在那漫长的人工智能冬天里沉睡,等待时机?在 21 世纪的第一个十年里,约翰·麦卡锡的语言 LISP 的使用者不断地流失。但是,在同一时间,发生了一件惊人的事。尽管 LISP 本身逐渐消逝,与这门语言相连的梦想却被重新点燃了。人工智能的梦想重新活了起来。

00:18:34 - Chris Nicholson

我想说的是,这次不一样。

00:18:36 - Saron Yitbarek

这是 Chris Nicholson,开源 AI 软件公司 Skymind 的创始人兼 CEO。Chris 认为,在经历了大起大落之后,人工智能或许终于要进入一个可持续发展的长夏了。

00:18:52 - Chris Nicholson

我们正处在人工智能的夏天,许多人都对 AI 可能的应用而激动不已。但是,这种兴奋是基于研究的真正进展,而这些进展是基于其他领域的进展。我们的硬件比当初好了太多太多,人们能用 GPU 替代 CPU,也能在大规模集群中使用这些 GPU 来训练巨大的机器学习模型,从而产生真正准确的预测。为了做到这一点,他们也使用了前所未有的巨大数据集,这样的数据量在 80 年代、90 年代或者之前都是闻所未闻、见所未见的。

00:19:30 - Saron Yitbarek

对于 AI 语言,巨大的数据集的兴起是关键,因为它们代表了我们理解智能的方式的关键变化。AI 研究的重点转移到了 深度学习 deep learning 方面,而深度学习似乎成为了 AI 研究的全部。

00:19:47 - Chris Nicholson

LISP 是为了操纵符号而设计的。在 LISP 诞生的时代,AI 意味着符号推理。当时,人们认为人类的思维和智力本身就是符号的操作。现代的人工智能,也就是让我们如此着迷的人工智能,远不止于此。现在的 AI,就机器学习而言,是一种可以从非结构化数据中学习的大型数据处理机器。因此,你可以让机器学习算法一点一滴地拾起文本和图像,在这个过程中,随着时间的推移,这些算法将变得越来越智能。LISP 不是那样设计的。它被设计为仅在人工干预的基础上发展。然而,对于现在的机器学习算法而言,其中的学习部分意味着它们会根据所接触的数据进行自我调整。

00:20:40 - Saron Yitbarek

这就是让机器以它们自己的方式实现智能化。但是,你知道,不仅仅是我们的机器在学习以强大的新方式思考;开源工具也让人们提高了自己的水平。克里斯认为,开源的开发方式对防止另一个人工智能冬天的到来有很大的帮助。

00:21:03 - Chris Nicholson

人工智能冬天发生的一个原因是,当创意在放缓时,网络就会崩溃,资金就会枯竭。有了现在这些免费的开源工具,我们看到的不是创意的放缓,而是一种加速。创意得以被及时地测试,得以被迅速地分享。所以,这不仅仅是工具,而是预先训练好的机器学习模型,一个研究小组可以与另一个研究小组分享,或者与广大公众分享。而创意本身也被发表在 ARXIV 这样的平台上。ARXIV 是由 康奈尔大学 Cornell University 主办的。所有这些因素汇合在一起,加快了创意流动的速度。对我来说,这是对人工智能冬天的一种保险。这些因素的交汇使得人工智能成为一个超级令人兴奋的领域,它们意味着人工智能的发展速度比炒作更快。

00:22:03 - Saron Yitbarek

Chris Nicholson是 Skymind 的创始人兼 CEO。

所以,开源能将人工智能领域从旧的专有模式所催生的寒冬中解冻出来。AI 的新时代伴随着 GPU 的巨大改进而到来。与之一并到来的还有算法上的突破,它帮助我们训练 AI 学习数据中的模式。然后,数据本身,海量的数据集正在为今天的 AI 提供动力。这一点,比任何事情都重要,这就是为什么新语言得以继续 LISP 未能完成的征途。我们向 Fast AI 的联合创始人 Rachel Thomas 询问,哪些语言适合下一代 AI。

00:22:50 - Rachel Thomas

我们目前正在探索将 Swift 用于 TensorFlow 的可能性。Swift 是 Chris Lattner 开发的一种语言,我知道也有人在使用 Julia,他们正促进着 Julia 的开发与发展。但是,就目前而言,Python 在深度学习领域有着无可比拟的巨大优势。

00:23:03 - Saron Yitbarek

这是因为 Python 非常适合处理大型数据集。

00:23:08 - Rachel Thomas

我认为过去 20 年中发生的最重要的改变是,数据量的增长和人们对于数据的越发重视。我认为,数十年前有关 AI 的许多早期工作更多地围绕一种符号系统,即某种抽象符号系统。我要说的是,目前 AI 领域中的许多工作都围绕着数据展开,例如识别图像里的某样东西,或者辨认一条影评是褒还是贬。这些都是基于数据的问题。所以,我认为,Python 成为赢家 —— 至少是早期的赢家 —— 的原因之一,是因为 NumPy、SciPy 和 pandas 的生态系统,以及 Python 中所有数据处理用的库都足够完善。

00:24:02 - Saron Yitbarek

在约翰·麦卡锡的团队还在麻省理工学院工作时,人工智能事业确实只有世界级的精英学者才能参与。但是自那时以来,语言和计算环境已经发生了巨大的发展,时至今日,每个人都能参与到 AI 的领域中来。我们在本季的第 1 期中听说过,Python 是许多初学者的第一语言。它使新手程序员能够加入 AI 的世界。

00:24:29 - Rachel Thomas

我只想告诉大家,实际上你只需要一年的编码经验。你不需要诸如“鬼才”这样的名号,也不必具有真正的声望或权威。但是,我们需要来自各个背景的人。实际上,不同背景的人才能够为这个领域提供许多新鲜的创意,你的创意也是我们所需要的。

00:24:52 - Saron Yitbarek

Rachel Thomas 是 Fast AI 的联合创始人,也是旧金山大学数据研究所的教授。我喜欢她为我们提供的信息。

AI 的故事是发现截然不同的人们之间的共同语言的故事。这是我们真正的任务,为充满 AI 的世界开发语言解决方案,开发能使所有人共同努力以实现下一个突破的解决方案。

00:25:22 - 播音员 1

各位,你们看到了今天在这里创造的历史。AlphaGo 以伟大的风格赢得了比赛。

00:25:32 - 播音员 2

是的,它甚至向我们展示了它的代码。

00:25:34 - 发言者 7

甚至向我们展示了它的代码。我想要祝贺这个计划。

00:25:40 - Saron Yitbarek

2015 年,就在 加里·卡斯帕罗夫 Garry Kasparov 在国际象棋比赛中输给深蓝的几十年后,围棋世界冠军李世乭被谷歌的 AlphaGo 击败。深蓝显示出的智力威力大半依托于蛮力,而 AlphaGo 的胜利之所以让人感到惊讶,是因为它依靠神经网络和强化学习赢得了那场比赛。换句话说,AlphaGo 已经成功地朝着真正的智慧迈出了下一步。如果没有开源对人工智能的推动,这一切都不可能发生。新的语言正朝着麦卡锡的梦想而逐渐发展。我们的语言正越来越适合于最大限度地提高机器的智能。好消息是,在开源世界中,我们可以共同实现这份梦想,共同应对它所带来的挑战。

00:26:39 - Saron Yitbarek

《代码英雄》是红帽的原创播客节目。如果你希望更深入的了解 LISP 或者人工智能,你可以访问节目的网站 redhat.com/commandlineheroes。在这里,你也能看到每一集的额外内容。下一期将是本季的最终集。在下一期中,我们将对一门重量级语言进行探究,并揭露与之有关的许多惊人事实;这门语言对本季中迄今为止讨论过的几乎所有语言都产生过影响。这是我们对 C 的深入研究。我是 Saron Yitbarek,下期之前,编程不止。

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-3/talking-to-machines

作者:Red Hat 选题:bestony 译者:bestony 校对:acyanbird, Northurland, wxy

本文由 LCRH 原创编译,Linux中国 荣誉推出

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客《代码英雄》第三季(6):Bash Shell 中的英雄音频脚本。

导语:Shell 使得大规模 IT 成为可能。它们是现代计算的必要组成部分。但是,如果没有 自由软件基金会 Free Software Foundation 一位名叫 Brian Fox 的开发者的辛勤工作,它可能不会变成这样。现在,世界上几乎每台电脑都有 Bash shell。

在上世纪 70 年代, 贝尔实验室 Bell Labs 希望将重复的、复杂的命令序列自动化。Chet Ramey 描述了贝尔实验室是如何开发出几个 shell 的 —— 但 UNIX 只能有一个官方支持的 shell。获选的是 Bourne shell。尽管 Bourne shell 是这些之中最好的一个 shell,但它也有其局限性。而且它只有在受到限制的 UNIX 许可证下才能使用。Brian J. Fox 讲述了他在自由软件基金会的工作,他需要创建一个自由的 Bourne shell 版本。它必须兼容但不使用任何原始源代码的元素。这个 Bourne-Again Shell,即 Bash,可能是这个星球上使用最广泛的软件。而 Taz Brown 描述了它是如何成为一个开发者可以学习使用的最重要的工具之一。

00:00:07 - Saron Yitbarek

那是 1987 年。里根总统治下的美国正蓬勃发展,一个怀揣远大梦想的人正驱车前往他位于 圣巴巴拉 Santa Barbara 的新家。这个人名叫 Brian Fox,27 岁,是高中辍学生。在他车的后备箱里,有两盒巨大的磁带,里面载满了他当时正在编写的代码。

00:00:28

Fox 多年来一直以程序员的身份工作在所谓的自由软件运动中。他相信他锁在这个后备箱里的代码,可以带来一场革命,这是一种全新的软件范例。他的社区正在一点一点地使之成为现实。

00:00:49

那年, 理查德•斯托曼 Richard Stallman (RMS)的 自由软件基金会 Free Software Foundation 的一组程序员,正在想尽办法给计算机界带来自由。他们想要构建一个 UNIX 的替代品,以取代自从 70 年代以来就主导编程的 UNIX 操作系统。他们的 GNU(表示 GNU's not UNIX)将成为公众的操作系统,任何人都可以使用它,无需担心许可费用或版权问题。

00:01:18

多年以来,基金会一直在努力制造这个崭新的系统。那么 Brian Fox 汽车后备箱里的那两盒装着代码的巨型磁带是什么?它们存储着这个系统一个至关重要的组成部分。这是一个自由的,而且可更改的 shell,它能够使 GNU 操作系统变得完整。这是 Brian Fox 送给自由软件运动的礼物。他称之为 Bash。

00:01:46

我是 Saron Yitbarek,这里是 代码英雄 Command Line Heroes ,一档来自 红帽 Red Hat 的原创播客节目。在这一集中,我们将来看看 Bash shell 中的英雄们。我们将探索 shell 的历史,以及它们为什么对我们如今的工作如此重要。大家可以将 shell 看作要给演员的剧本。它们提供了完整的命令序列,然后 shell 可以快速地运行,就像演员可以一行接一行地读她的台词一样。这是对于实现重复且复杂的代码的,是最终的解决方案,也是自动化的关键。你可能会说,shell 脚本是我们开发的一大助力。但是,是否可以编写一个,能给所有人带来帮助的 shell?这就是挑战所在。

00:02:38 - Ken Thompson

让我们回到 1969 年。那时候贝尔实验室的几位计算机科学家,正在根据自己的需求开发程序。

00:02:48 - Saron Yitbarek

这位是代码英雄先驱 Ken Thompson。由贝尔实验室设计的 UNIX 操作系统,在一开始确实是供他们个人使用的。最初,它只是一个内部系统。UNIX 鼓励程序员之间进行密切的交流,不过目的并不是要改变整个世界,而是改变贝尔实验室。

00:03:13 - Ken Thompson

到现在,几乎整个贝尔实验室都在使用这个系统。我们公司拥有近两万个计算机终端,其中大多数使用 UNIX 系统。

00:03:25 - Saron Yitbarek

一款由 Ken Thompson 所设计的 UNIX shell 在 1971 年发布。 虽然 Thompson shell 被设计为命令行解释器,但是它却不能很好地支持脚本。所以直到六年后的 1977 年,脚本才开始兴起。

00:03:44 - Chet Ramey

Shell 参数、特殊参数以及我们如今认为理所当然的变量,起源于 Steve Bourne 和 Bourne shell。

00:03:57 - Saron Yitbarek

这位是 Chet Ramey,Case Western Reserve 大学的 IT 架构师。Chet 致力于维护 Bash,他也为我们讲述了许多 Bash 的起源故事。他描述了贝尔实验室当时研究 UNIX shell 样子时的情景。

00:04:13 - Chet Ramey

我们如今使用的编程结构起源于 Steve Bourne,他的 shell 赢得了这场比赛。当时有大量使用 Mashey shell 的用户社区,也有大量用户开始使用 Bourne shell。那时候成立了一个委员会来决定哪一个将会获胜,哪一个将会成为从那时候起得到官方支持的 UNIX shell, Bourne 的 shell 赢了。而其他的 shell,正如他们所说,成为了历史。

00:04:54 - Saron Yitbarek

不过,这还不是历史的终结。当然,Bourne shell 是一个巨大的飞跃。它打开了一扇通向更高自动化水平的大门。但是尽管有一段时间 Bourne 占据了上风,但是 Bourne shell 并不能解决我们所有的脚本需求。

00:05:14 - Chet Ramey

Bourne 撰写自己的 shell 时所受到的限制,几乎是现在的你我难以想象的。显然,当你遇到这些限制时,你不得不放弃很多东西,Bourne 就放弃了很多。考虑到他所处理的空间、内存和 CPU 限制,他能够让 Bourne shell 包含那么多东西,这相当了不起。

00:05:42 - Saron Yitbarek

请记住,Bourne shell 仍然是贝尔实验室 UNIX 系统的一部分。它仍然与 UNIX 许可证绑定。这意味着它不是自由的,不是开放的。这款 shell 是私有的。

00:05:55 - Chet Ramey

如果你不在大学里,获取 UNIX 源码将会非常困难。显然,这对 Berkeley UNIX 的普及产生了影响。Berkeley UNIX 始于大学中,在大学社区中成长,并走了一条阻力最小的道路。因此,如果你在正确的地方,访问到 Bourne shell 的源码并不困难,但是总的来说,这并不是大众都能够认可的方案。

00:06:36 - Saron Yitbarek

Chet Ramey 是 Bash shell 的维护者。

00:06:41

因此,我们有了 shell 的雏形,可以着手写这些关键的组成部分,但是目前为止,最好的 shell 的许可证却有个大大的问题,它是闭源的。对于理查德•斯托曼和他的自由软件基金会而言,这是绝对无法接受的事情。我们所需要的是一个不与任何公司绑定的 shell,一个面向所有人的 shell。

00:07:05

但这就带来了问题。这意味着我们需要编写某种,能做到 Bourne shell 所能做到的一切,而又不会侵犯到版权的东西。如果逐字复制 Bourne shell 的代码,你会被起诉。

00:07:20

为了使人们摆脱 Bourne shell 的束缚,你必须找到一位能在没看过 Bourne shell 任何源代码的情况下,编写这款复杂程序的程序员。你必须找到这样的一位局外人天才。而理查德•斯托曼找到了完成这项工作的程序员。

00:07:46

Brian Fox 是一名 20 来岁的高中辍学生,比贝尔实验室的大多数人更懂代码。他从来没有见过任何 Bourne shell 的源代码,这使得他非常适合手头的任务。

00:08:02 - Brian Fox

我是 Brian Fox。

00:08:04 - Saron Yitbarek

为什么不直接问问这个年轻人,这个故事是什么样的呢?现如今,Fox 是一位开源倡导者以及 Opus Logica 的 CEO。但是早在 80 年代后期,他只是一个信仰开源软件运动的年轻人。我们聊了聊过去的日子,以及 Bash 是如何从那时演变过来的。

00:08:23

所以那时候理查德•斯托曼请你为 UNIX 开发一款 shell。那将会是一款自由的 shell,并且是 Bourne shell 的替代品。你是如何回应的呢?

00:08:38 - Brian Fox

“我们就不能做个更棒的吗?”

00:08:41 - Saron Yitbarek

我喜欢这个。再多跟我说说。

00:08:45 - Brian Fox

我为斯托曼所做的第一件事,其实就是编写个信息技术文档系统。我让理查德惊讶于我做这种编程的速度。他是个优秀的程序员而且工作的很快,但是他不认为其他人也能写得那么快。

00:09:00 - Brian Fox

因此,在第一周内,我完成了一款名为 GNU Info 的程序的第一版实现,理查德对此有点儿震惊。我说:“我的下一个项目是什么?我的下一个项目是什么?”他说:“好吧,现在给它做个编译器吧。”我就做了,一周时间之内就完成了。然后我说:“我的下一个项目是什么?我的下一个项目是什么?”他说:“好吧,另一个家伙一直在研究那个 shell,但他还没有太多进展。”我说了“好的”,九个月后, Bourne shell 的替代品完成了。

00:09:29 - Saron Yitbarek

九个月,哇。再多告诉我一些。为什么它如此具有挑战性?

00:09:33 - Brian Fox

这真是个有趣的问题。它之所以如此具有挑战性,是因为我们必须忠实地模仿 Stephen Bourne 最初的 Bourne shell 的所有行为,同时对其进行扩展,让它成为人们能使用的、更好的工具。

00:09:51

那时候,我和 Korn shell 的作者 David Korn 私下进行了秘密争论。POSIX 委员会,也就是规定了什么是标准 UNIX 的委员会,他们也参与了进来,并说:“哦,很好,我们需要知道 shell 到底要包含些什么。”而这方面最重要的两个人是我和 David Korn。David Korn 已经写了一个名为 KSH 的 shell。对于他所加入到 KSH 中的每一个功能,他都说:“这应该是一个标准功能。”是这样吗?对他来说这比起拥有最完美的 POSIX shell 要容易得多,如果这仅仅是他的 shell 的话。

00:10:31

其中的一些功能并不是很好的功能,不是很好的选择,而且使得这款 shell 与 Bourne shell 有些不兼容,或者我觉得缺少功能,对此我们进行了一些讨论和争论,因此构建一个兼容 POSIX 的 shell 与过去为 Bourne shell 所编写的每个 shell 脚本都完全兼容花了超过 3 个月时间。

00:10:54 - Saron Yitbarek

因此,如果你正在设计的产品不仅可以取代 Bourne shell,而且还试图模仿 Bourne shell 的每个部分,听起来你可能会遇到一些版权问题。你是如何处理的?

00:11:08 - Brian Fox

为了构建真正开源而自由的软件,你必须得在一个干净的空间里,开始做这项工作。你不能从查看别人的代码开始然后重新实现它。因此,我从未见过与任何贝尔的系统、UNIX 或者甚至 Berkeley UNIX 相关的任何软件,也从未见过这些东西的源代码。

00:11:29

当我开始构建 Bash shell 时,我使用了一个名为 Bison 的解析器,理查德已经将其整合到自由软件基金会里,并且与之前任何的其他程序完全不同。因此,我已经知道我所要构建的东西,绝对不会侵犯任何先前构建的东西的版权。

00:11:55 - Saron Yitbarek

创建 Bash 的工作有很多小插曲,对于那些硬核的代码英雄来说,这只是其中一个例子。

00:12:03 - Brian Fox

有一次,我正致力于在 shell 中实现 通配扩展 globbing 。举例来说,这是允许你匹配大量文件的通配符扩展。你可以给出 *.c,而这会匹配所有带有 .c 扩展名的文件。

00:12:17

因此我在通配扩展上忙活了几个小时,并且使其生效了,对此我感到很兴奋。这是一个很好的实现。而在创建这一版实现的过程中,我在我的目录里创建了一个名为 *.c 的文件,然后我想:“好吧,我应该删掉这个文件”,然后我输入了 RM、空格、引号、星号点 C、闭合引号,在现代 shell 中当你使用了括号,这意味着“不要扩展这个”,然后我按下了回车,提示符过了很长时间才重新出现,因为我们正在使用 Sun 350s,运行缓慢。我意识到,之所以花了很长时间是因为它要删除这个目录里的所有源文件。

00:12:58 - Saron Yitbarek

哦,不!

00:12:59 - Brian Fox

是的。所以我当时删掉了 Bash 的源代码。

00:13:01 - Saron Yitbarek

哦,不要。

00:13:04 - Brian Fox

这 ——

00:13:05 - Saron Yitbarek

哦我的天哪,嗯。

00:13:06 - Brian Fox

这件事让我笑了很久,笑的很大声。我甚至没有感到一丝沮丧。然后在接下来的几天里,我重新输入了全部。这份代码在我脑海里是完全是崭新的。

00:13:20 - Saron Yitbarek

哇。

00:13:20 - Brian Fox

问题解决了。只需将其记录到文件中即可。

00:13:25 - Saron Yitbarek

好的。因此,大多数人会在那一刻完全惊慌失措。而你笑了,只是说:“哦,我想我必须重新做一遍了。”为什么你当时那么冷静呢?

00:13:35 - Brian Fox

这让我感到疯狂很荒唐,也非常好笑,我正在打造这个工具,而要确保自己能搞好,确保该工具正常工作,你得在构建它的过程中就使用它。但是该工具无法正常工作。我还没有实现引号,并且因为我还没实现引号,所以我输入的命令没有按照我所预期的去执行,我觉得这真的很滑稽。

00:14:06 - Saron Yitbarek

太神奇了。

00:14:08

不过,甚至是关于错误的这个故事也能说明 Fox 的才华。他们说莫扎特在头脑中完成了交响曲,然后只需要在完成后写下来即可。Fox 也有类似的天赋。

00:14:23

因此,当你最终完成并交付 Bash 时,感觉如何呢?

00:14:27 - Brian Fox

呵,其实感觉很壮观。那么这里有一个故事,其实我一般不讲的。构建这款 shell 花了大约 8 个月的时候,当时我知道,我大概还需要大约一个月时间才能完成工作,然后另一个 shell 发布了 —— ASH,一个开源的 shell 被发布了,我很沮丧,因为我们还没有向任何人发布 Bash shell,所以只有少数人在使用它。我知道这还需一个月的工作量,于是我想:“哦,这太糟糕了。我投入的全部能量和精力都不会得到赞许,甚至可能都不会被看见。”所以我非常沮丧。这次我没有笑。

00:15:13 - Saron Yitbarek

然而,布丁好不好,吃了才知道。GNU 的 Bash 发布于 1989 年并且变成了 Linux 的默认 shell。如今,它是计算机中不可或缺的一部分。

00:15:25

它无处不在。如此多的人每天都在使用它。它遍布于每一台计算机上。作为 Bash 的作者感觉如何?

00:15:34 - Brian Fox

大多数时候,我甚至都没有注意到 Bash 是比工具更加重要的东西。我真的没有经常想这件事。每隔一段时间,我会走进一家苹果商店,环顾四周然后想:“哇,这里的每台计算机不仅运行着我 27 年前编写的软件,甚至上面还包含有我的名字。”然后我想:“互联网上的每台计算机、每台服务器都在运行着 Bash shell,并且其中包含有我的名字。”然后 Windows 在去年还是前年推出了 Power shell,就是 Bash,当时我想:“哦,天哪。我的名字遍及地球上的每台计算机了。”

00:16:21 - Saron Yitbarek

不过,我想让你们能仔细听听 Fox 接下来告诉我的内容,因为它是很重要。他从未想过,它的程序会这样统治全球。他试图提供帮助,试图帮助他所置身其中的编程文化。

00:16:37 - Brian Fox

我并没有打算去实现出现在每个人的计算机上这样的宏伟目标。我对此一点都不感兴趣。我想制作一款有用的软件,我希望它有典型的 3 到 5 年软件寿命,而不是像现在这样疯狂的 30 年的寿命。

00:16:58 - Saron Yitbarek

难道你对于你在计算机领域有如此巨大影响力的事情,一直反应那么平淡吗?

00:17:06 - Brian Fox

我为自己写了 Bash 而感到骄傲,而且它让我意识到了我的价值,所以有时候我会做一些事情,诸如接受播客邀约谈论 shell 之类的事情。

00:17:14 - Saron Yitbarek

非常感谢你。

00:17:15 - Brian Fox

谢谢。但这不是存在于我日常生活中的东西。幸运的是,我只是一个默默无闻的人,对吧?的确,我的软件正运行在每家每户的计算机上,不过也确实没有人知道这一点,对吧?因此我保持了许多个人隐私,而这个 shell 以及某个住在圣芭芭拉的人编写了它这一事实正越来越广为人知,我开始在生活中越来越多地注意到它。人们有时候来看我演奏音乐,然后告诉我说:“你是写了 shell 的那个家伙。”我感觉有点儿像 Keanu Reeves。

00:17:54 - Saron Yitbarek

很酷。所以你说过你不指望 Bash 出现在每台计算机上。你打算做的是什么呢?你对 Bash 有什么期望?

00:18:04 - Brian Fox

一个有用的替代工具,成为 GNU 项目的一部分,并帮助创建这个自由的开源操作系统。我实际上以为一旦我们完成了该开源操作系统的创建,该系统上的软件就可以升级,并且我将有机会创建自己想要创建的那种 shell,以帮助人们在某种程度上促进计算机科学的发展。

00:18:35 - Brian Fox

我最终意识到,Bash 被创建的原因实际上是与已经存在的 UNIX 世界向后兼容,并且这种势头使其保持了活力,这是另一个独一无二的地位,你的工具如此基础,几乎是一副不可或缺的螺母和螺栓。

00:19:01 - Saron Yitbarek

确实是这样。

00:19:01 - Brian Fox

知道我创造了世界上某种有价值的、别人仍然还在使用的东西,这真的是一种很棒的感觉。然后当我注意到这是怎么回事时,我意识到,更重要的是,“自由软件”和“开源”这些词存在于日常英语和全世界的日常语言之中了,而最初并不是这样的。这是我和理查德•斯托曼还有其他人所投入努力的产物。作为这一运动的一部分,我很幸运能这么早参与,但让我回过头来看时,也感到非常满意,我想:“哇,开源软件已经存在,而且我就是其中的一部分。”

00:19:50 - Saron Yitbarek

Brian Fox 是 Bash shell 的创建者和 Opus Logica 的 CEO。

00:20:01 - Steve Bourne

事实上,我确实听说过 Bash。

00:20:03 - Saron Yitbarek

这位就是被 Brian Fox 的工作所替代的 Bourne shell 的创建者 Steve Bourne。我们想知道 Bourne 对 Fox 的工作有何看法。他是否将重生的 shell Bash 视为自己作品的开源复制品?我的意思是,他觉得 Bash 怎么样?

00:20:20 - Steve Bourne

有一天,写了 Bash 的那个人在一次会议上找我,给了我一件 T 恤,前面印着 “Bourne again” 的字样。

00:20:26 - Saron Yitbarek

那就是 Brian Fox。

00:20:29 - Steve Bourne

那是一种友好的情绪,当时是:“好吧,希望您不介意,但我只是重写了您的 shell”,而我说:“听起来不错”,然后他给了我一件 T 恤。

00:20:38 - Saron Yitbarek

如果我在编程领域学到了一件事,那就是每个人都喜欢意外之喜。事实证明,Stephen Bourne 认为 Bash 是他和其他人在贝尔实验室所做工作的必要扩展。一点儿都不为此苦恼。

00:20:52 - Steve Bourne

曾经有一些人们想要,但是我没做的特性,例如变量替换和字符串管理,但是这些都被加入到了 Bash 中,现如今人们经常会用到。Bash 和原始 shell 之间的关系,我当时的印象是,它只是对语言的重新实现,并且随着时间的推移,它确实添加了功能,因此它确实取得了超越我所写作品的进步,当然是在字符串管理领域。我现在一直在用它。

00:21:21 - Saron Yitbarek

Steve Bourne 是 Bourne shell 的创建者和 Rally Ventures 的 CTO。

00:21:32 - Saron Yitbarek

自从 Bash 在前往圣芭芭拉的长途车程中被塞进 Brian Fox 的卡车以来,已经过去了很多年。 2019 年,版本 5.0 被发布,就像 Fox 提到的那样,Bash 现在被内置进了 Linux 中、macOS 中,甚至微软 Windows 中。Bash 已经成了开源世界中脚本编写的基石。这是我们自动化的基础。

00:22:02 - Taz Brown

随着组织规模的扩大,使用能够使我们更快完成工作的工具变得至关重要。它成为了必需品。

00:22:16 - Saron Yitbarek

Taz Brown 是 Red Hat 的资深 Ansible 自动化顾问,因此她非常了解 Bash 的价值。

00:22:24 - Taz Brown

我绝对认为人们在职业生涯初期就应该使用 Bash。与其使用 GUI 或者说是图形用户界面,不如将自己视为管理员或 DevOps 人员。

00:22:39 - Saron Yitbarek

而这是因为作为一名 Bash 程序员,你将会掌握能让你晋升的核心价值。

00:22:45 - Taz Brown

学习写脚本有一定的价值,因为这可以让你从自动化的角度,为程序的长期运行做打算。你可以看到脚本的运行方式,然后可以说:“好吧,我可以做到,我可以使这项任务自动化执行。”它开始使你成为与之前不一样的思想家和技术专家。

00:23:09 - Saron Yitbarek

对于运维而言,自动化已经变得不可或缺。复杂的程序、应用和工具均由优雅的 Bash 代码实现。

00:23:21 - Taz Brown

如果你愿意的话,你不必重复造轮子。你可以从 GitHub 库或是其他任何你存储这些特定文件的地方拉取它们。Bash 允许你这么做。Bash 允许你执行这些常见任务,并且可以从 10 台服务器扩展到 1000 台服务器。

00:23:42

关于自动化的伟大之处在于,一旦你制定了计划,就可以以一种非常有效的方式执行。它允许你执行那些,无法手动执行的操作。

00:23:56 - Saron Yitbarek

最近 Taz Brown 所从事开发的 Ansible® 这样的最新产品可以始终与 Bash 集成在一起,完成了工作。

00:24:04 - Taz Brown

虽然时代在不停前进,但是我认为 Bash 永远都会是管理员会去选择使用的工具,特别是他们想要快速自动化的情况下。

00:24:14 - Saron Yitbarek

最后,这一切的成功,都可以追溯到它是一个自由的、允许所有人加以改进的软件这件事上。它是 Brian Fox 提供给世界的,某种没有许可证和限制的东西。满足了人们一直的需求,所以是 Bash 成功的关键。实际上,他甚至已经不再主管 Bash 开发已经很长一段时间了。这位是 Chet Ramey,他维护了 Bash 数十年。

00:24:38 - Chet Ramey

我想,Brian 在发布 1.05 版本后就已经决定了他想要继续去从事其他工作。他曾在自由软件基金会负责过其他任务,他想做除了 Bash 以外的事情,而我是 Bash 最活跃的贡献者。他和我一起开发了许多新功能。我们共同努力解决了许多 bug,因此当到了需要其他人接手时,我是最佳人选。

00:25:16 - Saron Yitbarek

就像 Fox 一样,Ramey 也必须继续努力,因为 Bash 比任何一位维护者都重要。

00:25:25 - Chet Ramey

我是从 23 岁开始贡献的,有点儿像是我和 Bash 共同成长。在某些时刻,我会需要征集一个团队。我需要征集那些愿意并且有能力投入时间推动 shell 发展向前的人们。

00:25:46 - Saron Yitbarek

Bash,这款再次降生的 shell 明年将迎来 30 岁(LCTT 译注:Bash 发布于 1989 年,至本译文发表时,已经 31 岁了),并且没有衰老的迹象。Bash 乘着自由软件浪潮,然后是开源浪潮,直到传播至编程世界的每个角落。但曾经,它只是存储在 Brian Fox 汽车后备箱里磁带上的代码。它只是一些程序员,想要带给大家的 shell 语言。几乎偶然的,Brian Fox 在此过程中成为了一名伟大的代码英雄。

00:26:23

顺便说一句,有些事情始终困扰着我, Brian Fox 驱车将所有 Bash 代码载到了 Santa Barbara。为什么要转移呢?我的意思是,他在某家科技公司找到了新工作吗?

00:26:34 - Brian Fox

我想要继续我的音乐生涯,而我认为做到这一点的最佳去处就是气温总在 72 华氏度左右、天空没有乌云、海滩很美的地方。

00:26:45 - Saron Yitbarek

很好,我更喜欢这个理由。

00:26:49

现在让我们向 Wayne A. Lee 致敬,是他向我们建议了这一集标题《Bash Shell 中的英雄》。干得好,Wayne。

00:26:57

在下一集中,我们对于自动化的兴趣,将提升到一个全新的高度,并且着眼于 AI 语言,特别是 John McCarthy 创造的 LISP。

00:27:11

《代码英雄》是 Red Hat 的原创播客节目。如果你访问节目的网站 redhat.com/commandlineheroes,你将更深入了解到有关 Bash 或是我们本季所介绍的任何编程语言的故事。

00:27:28 - Saron Yitbarek

我是 Saron Yitbarek。下棋之前,坚持编程。

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-3/heroes-in-a-bash-shell

作者:Red Hat 选题:bestony 译者:JonnieWayy 校对:acyanbird, wxy

本文由 LCRH 原创编译,Linux中国 荣誉推出