回顾40年前的伟大发明:让电脑可以显示和输入中文

Sinotype-9

图片来源: Louis Rosenblum 论文,斯坦福大学特别收藏

中国是当今世界上最富有的数字经济体之一,拥有无与伦比的硬件供应链,以及阿里巴巴、腾讯和字节跳动等众多知名且利润丰厚的公司,在世界上处于领先地位。然而,所有这些前沿创新都依赖于一项已有 40 年历史的解决方案,以应对巨大的计算挑战之一:中文文字处理的发展。

从 1980 年代初开始,中国大幅扩大从美国和西方的计算机采购,1980 年仅进口了 600 台外国制造的微型计算机,而 1985 年为 130,000 台。美国、日本和欧洲的公司争先恐后地正如一位观察家所说,参与这种“疯狂购买”。

然而,对于潜在的中国计算机用户和西方制造商来说,存在一个主要问题:没有西方制造的个人计算机、打印机、显示器、操作系统、程序或其他能够处理汉字输入或输出的东西——不是在早期——和 1980 年代中期,无论如何,当然不是“开箱即用”。如果没有一些大的改革,大规模生产的个人电脑对于任何想用中文操作的人来说实际上是无用的。

潜在的中国计算机用户和西方制造商面临的主要问题是,没有西方制造的个人计算机、打印机、显示器、操作系统、程序或其他能够处理汉字输入或输出。

最重要的原因之一是内存问题——特别是中文字体所需的内存。在拉丁字母计算出现时,西方工程师和设计师确定可以在 5×7 位图网格上构建英文字体——每个符号只需要 5 个字节的内存。尽管远非美观,但该网格提供了足够的分辨率,可以在计算机终端或纸质打印输出上清晰地呈现拉丁字母表中的字母。存储 US ASCII 的 95 个可打印字符只需要 475 字节的内存——例如,Apple II 当时的 48 KB 主板内存的一小部分。

为了实现汉字的可比性、最低限度的易读性,5×7 的网格太小了。在为中文设计位图字体时,工程师不得不将拉丁字母网格的大小以几何方式增加,从 5×7 像素增加到 16×16 像素或更大,或至少 32 字节的内存每个汉字。对于 8,000 个最常用的汉字,仅存储位图所需的总内存(以简体或繁体形式,但不能两者兼有,并且没有伴随的元数据)大约等于 256 KB,或总容量的四倍 1980 年代初期的大多数现成个人计算机。所有这一切,甚至在考虑操作系统和应用程序软件的 RAM 要求之前。

数字化前准备的来自 Sinotype III 中文字体的位图草稿。图片来源: Louis Rosenblum 论文,斯坦福大学特别收藏

这就是现代计算的伟大工程历史之一的背景,这是一个关于创业勇气和工程独创性的故事,提供了对全球数字革命发展的独特看法。

这是 TechCrunch 上两篇文章中的第一篇,我在其中研究了 Sinotype III,这是一种实验机器,它是最早处理中文输入和输出的个人计算机之一。建立在商店购买的 Apple II 之上——但配备了定制编程的文字处理器和操作系统——Sinotype III 充当了“概念证明”,展示了如何将西方制造的计算机“翻译”成中文,从而打开开辟了一个广阔的新市场。

在第一部分中,我将研究 Sinotype III 的创造者所面临的有关计算机内存、字体和操作系统的深刻技术挑战,以及他们如何设计新颖的解决方案来克服这些挑战。

“一个没有直接工作前景的新毕业生的胆量”

我们的故事始于图形艺术研究基金会 (GARF)——可以说是中国计算机诞生的组织。表意排版机,也称为 Sinotype,是 1950 年代后期由麻省理工学院电气工程师 Samuel Hawks Caldwell 在 GARF 资助下发明的。在他于 1960 年英年早逝后,该项目陷入停顿。在 1960 年代和 1970 年代,Sinotype 项目得到了许多不同的团体的支持,包括 Itek 公司、RCA,最后又是 GARF。

Sinotype I 的键盘,由 Samuel Caldwell 在 1950 年代后期设计。图片来源: Louis Rosenblum 论文,斯坦福大学特别收藏

Sinotype 的归来很大程度上要归功于一个人:Louis Rosenblum。他于 1921 年出生于纽约市,是麻省理工学院家族的又一员,1942 年毕业于应用数学专业。在世界著名的电气工程教授哈罗德·埃哲顿 (Harold Edgerton) 的指导下学习(他在 1930 年代拍摄了著名的“奶滴皇冠”照片),罗森布鲁姆毕业后立即在宝丽来工作,与埃德温·兰德合作进行了各种项目,包括即时摄影的发展。1954 年,他移居 Photon — 在那里他从事非拉丁文字系统的照相排版。罗森布鲁姆非常熟悉已故考德威尔在 Sinotype 方面的开创性工作,有效地采用了该项目,并在 1970 年代中期加入 GARF 担任顾问时将其恢复。

图显示了在 Nova 1200 CPU 上运行的 Sinotype II 系统的配置。图片来源: Louis Rosenblum 论文,斯坦福大学特别收藏

直到 1980 年代初,GARF 继续致力于中国型项目,此时它已经建立了一个由众多知名学者和具有深厚中国经验的学者组成的顾问委员会。哈佛语言学家久野进(Susumo Kuno)加入;理查德·所罗门 (Richard Solomon) 也是如此,他以在理查德·尼克松 1972 年访问中国时发挥的关键作用而闻名,后任兰德公司社会科学部负责人。

然而,与这种智囊团一样出色的是,GARF 在 Sinotype 项目上的重大突破——从基于小型计算机的系统(Sinotype II)到基于微型计算机的系统(Sinotype III)——是由一名大学生催化的,他唯一的经历是迄今为止,在 GARF 的工作是 1979 年为 Sinotype II 项目进行数据管理的为期两周的短暂工作。他是 Louis Rosenblum 的儿子 Bruce Rosenblum。

Bruce Rosenblum 使用 Sinotype III 系统。图片来源: Louis Rosenblum 论文,斯坦福大学特别收藏

作为宾夕法尼亚大学的一名本科生和一名有抱负的摄影记者,布鲁斯在课程作业和独立学生经营的《宾夕法尼亚日报》的照片编辑之间平衡了他的时间。该论文在运行的设备以及负责学生的深厚专业知识方面都非常先进。

到布鲁斯大三那年秋天,该报现有的排版设备(两台 Compugraphic 排字机)已寿终正寝,需要更换。布鲁斯与他的三名学生同事一起协助研究潜在替代品的过程,最终与两家公司签订了一份价值 125,000 美元的合同:位于堪萨斯州威奇托的 Mycro-Tek 和位于马萨诸塞州威尔明顿的 Compugraphic。

至于 Sinotype 项目——Bruce 非常了解这个项目,感谢他的父亲,但他没有参与——一个关键时刻发生在 1981 年 5 月上旬。Bruce 刚刚完成他的期末考试,并在办公室停下来。纸。他的同事埃里克·雅各布斯在那里,正在 Radio Shack 的 TRS-80 Model II 个人电脑上努力工作。雅各布斯正在考虑如何使用这台微型计算机来运行报纸的业务运营。布鲁斯观察了大约 30 分钟,然后继续他的一天。

然而,那 30 分钟一直陪伴着他。“那是我第一次看到有人在微型计算机上工作,”布鲁斯在给我的电子邮件中回忆道,“那几分钟的灵感激发了整个 Sinotype III 项目,并最终触发了我的计算机职业生涯。”

同一周晚些时候,布鲁斯在与父亲的电话中发表了一些即兴言论。提到当时 GARF 用于构建 Sinotype II 的 Data General 硬件的巨大成本,Bruce 说有人可能可以在微型计算机上以一小部分成本编写等效或更好的东西——也许只需价值 10,000 美元的硬件相比之下,GARF 目前资助的设备价格超过 100,000 美元。

他的父亲很好奇。路易斯问布鲁斯他自己是否能胜任编写这样一台机器的任务。Bruce 吹嘘自己没有受过计算机科学方面的正规培训,尽管他在高中时曾广泛使用计算机,并且自学了 PDP-8 汇编语言和 BASIC。“当然,”他用“一个没有直接工作前景的刚毕业的毕业生的胆量”来回答他父亲的问题。

在他的世界巡演期间,Bruce Rosenblum 继续致力于 Sinotype III 项目,包括在新德里的便笺上。图片来源: Louis Rosenblum 论文,斯坦福大学特别收藏。

1981 年 6 月,布鲁斯在纽约与比尔·加斯、普雷斯科特·洛和他的父亲路易斯举行了正式会面,介绍了他的中国型 III 提案。布鲁斯为这个角色着装,穿着三件套西装。在布鲁斯的正式提案中,他列举了总共 7,500 美元的硬件成本,另外还有 5,000 美元的编程费用。该计划承诺在大约四个月内交付一款运行在 Apple II 上的中文文字处理器。如果这行得通,它将使这种机器的成本降低一个数量级。

布鲁斯得到了这份工作,并于 1981 年 6 月至 11 月继续编写了《Sinotype III》,在这与他在费城独立厅国家公园管理局担任导游的全职工作之间平衡了时间。白天休息时,他会手写汇编代码,晚上转录。1981 年劳动节到来时,布鲁斯的导游工作结束了,他直接用了两个月时间来完成代码并将其交付给 GARF。

内存上的突破

GARF 和 Rosenblums 面临的第一个问题是计算机内存问题。中国早期个人计算机的开发人员探索了所有可用的选项,以从系统中榨取尽可能多的内存。我们将特别探索两种策略,有时单独使用,但通常会协同使用:自适应记忆和汉字卡片。

Sinotype III 系统由五个部分组成:三洋 DM5012CM 12 英寸显示器;爱普生 MX-70 打印机;一个 Corvus 10 MB “硬磁盘存储器”,用于存储汉字位图数据库及其相应的“描述符代码”;一个“用于存储文本文件”的 Apple 磁盘驱动器;和 Apple II 本身。

开箱即用的 Apple II 配备了 32 KB 的 RAM,可在主板上扩展到 48 KB。“我们甚至在 Apple II 离开商店之前就将其最大化,”Bruce Rosenblum 在给我的电子邮件中评论道。然而,48 KB 的内存对于他的目的来说仍然太少,所以布鲁斯选择了当时完全标准的修改,通常被那个时代所谓的“高级用户”使用:即插入插槽 0 中的额外 16 KB 存储卡,从而使总可用内存达到 64 KB。
然而,这也太少了。“我需要更多 RAM 来存储完整的编码系统,”他说,“以及 100 个最常见的表意文字的 16×16 位图。”

他开始探索 Apple II 的“mod”,以前很少有人尝试过。“不知何故,”他说,“我发现我可以在 Apple II 的插槽 2 中放置第二块 16 KB 板,这给了我总共 80 KB。完全非标准,”他继续说,“但它可以与现成的组件配合使用。”

然而,这种修改使机器超越了自身的局限性。Apple II 上的 6502 微处理器只能直接访问 64 KB 的内存——这意味着,即使有额外的 16 KB 布鲁斯设法用第二块内存板引导,Apple 根本没有内置的方式II 同时访问内存中的这些附加地址。这个模组是如此“非标准”,以至于当他在多次谈话中的一个中告诉一位苹果工程师时,苹果代表感到震惊——他从来没有听说过或想过做这样的事情。

为了让 Apple II 能够访问 80 KB 的内存,而不仅仅是 64 KB,Bruce 放弃了开箱即用的操作系统,并用汇编语言编写了自己的操作系统。他定制设计的程序的关键是“在两个相互重叠的 16 KB 存储库之间进行选择”的可能性。换句话说,尽管在任何时刻都只能访问 64 KB 的内存位置,但通过在两个内存扩展卡之间快速摆动,他实际上可以欺骗计算机以从用户的角度来看这两种速度的访问,本来可以忽略不计。这从系统中挤出了 25% 以上的内存,使板载内存中可能包含多达 400 个以上的汉字。

感恩节前一周,布鲁斯将最终代码交给了 GARF,然后开始了一次世界背包旅行,他将穿越欧洲和亚洲。从那时起,Sinotype III 的开发将主要掌握在 Louis Rosenblum 和 GARF 手中,尽管 Bruce 继续担任顾问,与来自欧洲、中国、印度或其他地方的父亲频繁通信。此时此刻。

加速实现实时中文打字

然而,即使有了他巧妙的模型,路易斯和布鲁斯估计也只有 600 到 1,000 个汉字才能装入板载内存。当考虑到 Sinotype III 的操作系统、程序应用程序和每个汉字的内存要求时,机器词典中的绝大多数汉字需要存储在其他地方,无论是在软盘、外部硬盘驱动器还是通过其他一些硬件解决方案。

Sinotype III 电脑显示器。图片来源: Louis Rosenblum 论文,斯坦福大学特别收藏

早些时候,布鲁斯曾短暂考虑过使用 PROM(可编程只读存储器)芯片——但这个想法很快就被证明是一个死胡同。大约在 1981 年和 1982 年,市场上最大的 PROM 芯片最大内存为 2 KB,转换为仅 28 到 51 个汉字。为了以这种方式存储 7,000 个汉字,Bruce 将需要 138 或 250 个 PROM 芯片。“这是很多筹码,”他说。

布鲁斯随后考虑了在软盘上存储字符的可能性。这也被证明是行不通的,不仅因为它需要大量磁盘,而且从软盘驱动器存储中获取字符位图所涉及的访问和检索速度很慢。GARF 选择了第三种解决方案:为 Sinotype III 配备外部硬盘驱动器,这在当时几乎是闻所未闻的微型计算机配件。为了克服深刻的内存限制,GARF 将在系统的外部硬盘驱动器中“异地”存储数千个低频汉字:一个 10 MB 的 Corvus“刚性磁盘存储”。

然而,这对 Sinotype III 的运行速度产生了负面影响。在计算的时空连续体中,大多数操作都以极快的亚秒级速度进行,硬盘驱动器是笨重的野兽。特别是在这个时候,他们依赖于在设备内旋转的硬磁盘——“盘片”——与唱片播放器不同。各种“轨道”的内容由磁头读取,类似于针读取记录上的凹槽的方式。检索速度取决于磁头的位置,以及在检索请求时刻磁盘的特定旋转位置。和到站发现公交车刚开的时候一样,除了等公交车又回来了,别无他法。

具体而言,存储在硬盘上的汉字的检索时间比存储在RAM中的汉字慢10倍。具体来说,存储在 RAM 中的汉字的检索时间可以达到每个字符大约 100 毫秒——这是人类认知无法感知的时间单位。然而,对于存储在外部存储器中的字符,输入这些字符中的任何一个都需要长达一整秒的时间来访问和检索——这个时间单位完全在人类感知的阈值之内。

在 1980 年代中期的个人计算环境中,一秒钟的输入时间会被证明是极其缓慢的,在这种环境中,英语环境中的用户很快就习惯了实时打字。此外,一秒显然 是 100 毫秒的10 倍,这意味着普通用户每次希望输入低频字符时都能感受到这种差异。

为了缓解这个问题,Louis Rosenblum 想到了一个他称之为“自适应临时存储”的想法。Sinotype III 将能够根据用户最近输入的内容调整存储在 RAM 中的字符集。在初始启动时,Sinotype III 的板载 RAM 将仅配备一组预定的高频字符。如上所述,输入任何基于硬盘驱动器的不常用字符最多需要一秒钟。然而,“由于每个不太常用的表意文字都被键盘输入,”他当时在一封信中解释说,“它的代码和点阵模式将在随机存取存储器中被记录下来。” 换句话说,这些字符会从硬盘驱动器临时复制到板载 RAM 缓存,从而减少后续检索时间。

内部 GARF 文件显示了 Sinotype III 字符数据库和元数据。图片来源: Louis Rosenblum 论文,斯坦福大学特别收藏

汉字卡

即使求助于切换和自适应记忆,仍有数千个字符超出了此类策略的限制。虽然高频汉字在整体使用中占很大比例,但任何一种技术或专业内容的制作肯定会将用户反复带入“异地”汉字库。如果中文计算的体验要接近英语同行所享受的即时感觉,就需要将更多这些“低频”字符带到“现场”。

1970 年代末和 80 年代初的工程师开始探索不同的硬件解决方案,称为“汉字卡片”(Hanka)、“中文卡片”(Zhongwenka)、“汉字生成器”、“汉字生成器”(Hanzi zimo fashengqi)或者,正如一篇文章愉快地提到它们,“芯片上的中文”。就像内存卡和显卡一样,“汉字卡”被设计为直接安装到主板扩展槽中。硬连线到这些卡上的是数以千计的中文位图和输入编码。实际上,它们的作用与外部硬盘驱动器相同,但速度更快,性能更可靠。

“片上中文”卡片不是 GARF 的研究重点。相反,它们起源于定制设计的中国系统的早期时代,所有这些都发生在个人计算革命之前。其中包括诸如 Chan Yeh 的 Ideographix IPX 和 Olympia 1011 等系统,这些系统配备了微处理器,其唯一目的是生成字符位图和存储输入描述符。在 Olympia 1011 中文文字处理器上——基本上是一个单一用途的电动中文打字机——三个英特尔 8085 处理器中的一个专门用于汉字生成。

在 1980 年代初期,这种字符生成器被商品化并变成了可销售的产品。不再需要购买功能完备的文字处理器(例如 Olympia 1011)来使用这种机载字符生成器。相反,人们可以购买一张“汉字卡”,然后将其安装在自己选择的个人电脑上。

最早关注汉字卡片的中文计算中心之一是清华大学,那里的研究人员开发了一种早期卡片,能够以 32×32 点阵格式存储大约 6,000 个中文位图模式。到 1980 年代中后期,市场上有数十种不同的“Hanka”,由日本、中国大陆、台湾、香港、美国和其他地方的公司制造和销售。

到 1980 年代中后期,“中文芯片”方法变得如此重要和普遍,以至于几乎所有拥有中文或日文功能的计算机都配备了一种或另一种字符生成卡。

因此,从 1950 年代 Caldwell 的 Sinotype 到 1980 年代围绕 Sinotype III 的父子罗森布鲁姆团队和 GARF,解决与汉字相关的记忆问题是打开中国计算市场的关键。在具有更多内存的计算机,创建自适应内存算法来优先考虑字符,并构建专用硬件解决了这个问题,并在中国引发了计算机革命。

然而,下一步是如何将计算机本身扩展到可能连接到它的所有东西。

以上由环球产经网编译自TechCrunch网站。该网站还将继续深入探讨早期的设计和编程如何能够将中文文本输出到早期显示器、打印机和其他外围设备。向Louis Rosenblum等计算科学工作者的伟大贡献,推动了中文世界的数字化。

原作者:汤姆·穆拉尼