《代码英雄》第四季(2):大型机 GE-225 和 BASIC 的诞生

微信扫一扫,分享到朋友圈

《代码英雄》第四季(2):大型机 GE-225 和 BASIC 的诞生
收藏 0 0

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

什么是《代码英雄》

代码英雄 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中国 荣誉推出

上一篇

硬核观察 | 谷歌赢得十年之久的甲骨文版权战

下一篇

在 Linux 中把多个 Markdown 文件转换成 HTML 或其他格式

发表评论

插入图片

最新评论

返回顶部