意外惊喜:现存最古老计算机的操作手册重见天日

机器之心报道

作者:Panda、张倩

前不久,苏黎世联邦理工学院的档案管理员发现了一本世界上最古老数字计算机的操作手册。这台计算机名叫 Zuse Z4,已经有 75 年的历史。有了它,研究人员可以了解早期计算机是如何工作的。

Zuse Z4 可以说是目前世界上现存的最古老的计算机。这台数字计算机建造于 1945 年,在 1949 到 1950 年间进行过大修和扩建。

在 1950 年,苏黎士联邦理工学院是欧洲大陆上唯一一所拥有能正常工作的磁带控制式计算机的大学。

从 1950 年到 1955 年,这台机器被借给了苏黎世联邦理工学院使用。现如今,这台巨型电子计算机被安置在慕尼黑的德意志博物馆。

虽然实物还在,但 Z4 的操作手册已经丢了很长一段时间。因此,历史学家和策展人对该系统运行规则的了解非常有限。

但最近,苏黎世联邦理工学院的档案管理员 Evelyn Boesch 的发现让这一手册重见天日。

Z4 数字计算机的用户手册第 1 页

这份珍贵的手册是 Evelyn Boesch 在他父亲的文件中找到的。

Evelyn Boesch 在 2020 年 3 月初的一份采访中表示,她的父亲 René Boesch 曾经保管过一些珍稀的历史文件。调查表明,这些文件中包含一份 Z4 的操作手册以及关于颤振计算的注释。

1956 年,René Boesch 开始在苏黎世联邦理工学院飞机静力学与飞机制造研究所工作。他的上司是 P-16 战斗机顾问 Manfred Rauscher,后者在 1950 年到 1974 年之间担任苏黎世联邦理工学院飞机静力学与飞机制造研究所教授。

之后,该研究所改名为轻型结构和缆车技术研究所,并于 2000 年关闭。因此,这家飞机制造商保管着这本手册也不能全算是巧合。

P-16 瑞士喷气式飞机。1953 年到 1955 年间,Z4 为 Flug- und Fahrzeugwerke Altenrhein SG 在康斯坦茨湖上开发的这款飞机执行过颤振和俯冲计算。

与这份手册一同重见天日的还有一些来自 1953 年 10 月 27 日的手写文件,其中涉及到使用 Z4 求解的一些算术问题。「空军系数表」和「带副翼的机翼」这样的标题说明这些是颤振计算。

在 P-16 时代,2.4 秒的飞行时间需要 50 小时的计算时间。这项工作是当时的最高机密。当 Z4 被还给 Zuse KG 之后,这些计算被 ETH 开发的 Ermeth 真空管计算机接手。

据苏黎世联邦理工学院应用数学研究所的研究者、Algol 编程语言的主要创建者之一 Heinz Rutishauser 介绍,在 1950 年到 1955 年,Z4 完成了大约 100 项工作。其中 55 项被罗列在了应用数学研究所 1955 年 7 月 11 日的一份目录中。其中包含对火箭轨道的计算(是为 Oerlikon Bührle 机床制造厂完成的)、为飞机机翼的计算(Eidgenössische Flugzeugwerke, Emmen LU)、颤振计算(Flug- und Fahrzeugwerke Altenrhein,共 800 小时机器时间)、俯冲计算( Flug- und Fahrzeugwerke Altenrhein,共 120 小时机器时间)。

Z4 的发明者是德国土木工程师康拉德 · 楚泽(Konrad Zuse)。他可能正是现在发现的操作手册的作者。

楚泽于 1910 年出生在柏林,是一位靠自费起家的德国工程师。大学时期,他就读于柏林工业大学,并于 1935 年获得土木工程学位。大学毕业后,楚泽全身心投入到计算机的发明制造中。

1938 年,楚泽发明了世界上第一台二进制计算机,称为 Z1(Zuse1)。在此基础上,他陆续制造了 Z2、Z3、Z - 计算机。其中,他在 1941 年制造出的 Z3 计算机是世界上第一台可编程的计算机,这是具有当时世界上最高水平编程语言的计算机。而且,Z3 几乎实现了计算机之父冯 · 诺依曼在 1946 年所定义的现代计算机所有功能,楚泽也因此被称为现代计算机发明人之一。

二战期间,为躲避轰炸,楚泽曾带着 Z4 四处转移,最后带着它飞往德国南部,搬到了阿尔卑斯山区欣特斯泰因小镇。德国首都柏林被攻陷之后不久,盟军在小镇的一个粮仓地窖里发现了 Z4。之后又经过了很长一段时间,西方计算机界才认识到,这台貌不惊人的机器是当时最先进的计算机,它研制成功的时间要比美国、英国的同类发明更早。

后来,数学家 Eduard Stiefel 为苏黎世联邦理工学院的应用数学研究所获得了 Zuse Z4。1960 年,Z4 才被转移到德国博物馆。

这次重见天日的手册记录下了一些已经被遗忘的操作。

得益于分支技术,一个计算机程序的处理可以在两个不同的点继续。如果满足特定条件(为真),就执行跳转指令。使用有条件跳转,可以偏离线性的指令序列,也可以从主程序跳转至子程序并跳回来。既有有条件跳转,也有无条件跳转。举个例子,可使用条件跳转来实现程序循环。

一开始,Z4 并不知道有条件跳转。在苏黎世联邦理工学院的要求下,这个功能被加了上去。但是,在几年前的一项调查中,少数几位见证过它且依然健在的人都不记得它的执行方式了。手册的第 8 页展示了那个年代执行有条件跳转的方式。

图 3:Z4 计算机用户手册第 8 页:主程序与子程序之间的跳转

参考链接:

https://cacm.acm.org/blogs/blog-cacm/247521-discovery-user-manual-of-the-oldest-surviving-computer-in-the-world/fulltext

https://www.sohu.com/a/305732472_249327