# 机械计算和电子计算

虽然我无意尝试撰写一部计算机史，甚至不打算写一部操作系统史，但我有必要在这里描绘出一些内容，因为我不想让非专业人士迷失。

要理解现代计算机的起源，必须跟踪三条不同的线索：

* 机械计算
* 制表与排序
* 差分机与解析机

当这几条线索在第一次世界大战结束前后（即 1918 年左右）交织在一起时，技术也经历了从机械到机电（艾肯），再到电子（埃克特和莫克利），到晶体管化（IBM 7090），再到板上微电子计算机（Altair 8008），直到今天的芯片级计算机的发展历程。

机械计算方法由来已久。算盘可能是最为古老的计算工具。中国和埃及人早在四千多年前就已经有了这种装置。西班牙人到来时，玛雅人也拥有这种工具。拿破仑发现对数（1614 年）及其“纳皮尔骨”（标记着乘法用的象牙棒）后不久，滑尺被发明出来（伦敦维多利亚与阿尔伯特博物馆里藏有一套属于查尔斯·巴贝奇的纳皮尔骨）。

1642 年，年仅 18 岁的布莱兹·帕斯卡发明了一台能进行加法和“进位”的计算器，以帮助他的父亲——一名税务员。近 30 年后，1671 年，莱布尼茨在帕斯卡的机器基础上更进一步，制造出了使用一种巧妙装置“阶梯轮”的乘法原型机，这种装置直到 20 世纪 40 年代末的最后一批机械计算器中仍在使用。1676 年，莱布尼茨向伦敦皇家学会展示了他的计算器。第一台商业上成功的计算器由查尔斯·泽维尔·托马斯于 1820 年发明。到了 1878 年，惊人地售出了 1500 台——平均每年近 30 台。第一次世界大战后，这种计算器仍由巴黎的达拉斯公司制造。布伦斯维加加法机基于弗兰克·斯蒂芬·鲍德温 1875 年的专利，它用带有可变齿数的轮替代了莱布尼茨的阶梯轮，在 1892 年至 1912 年间销售了 2 万台——平均每年 1000 台。

第一台键盘驱动的计算器由 D.D.帕尔马利于 1850 年申请专利，而多尔·尤金·费尔特的康普托米特——首台成功的键控多阶计算机——于 1887 年获得专利。

1812 年，查尔斯·巴贝奇提出了一种不同类型计算器的构想，称为差分机。他于 1823 年获得了英国政府的支持。项目于 1833 年停止，1842 年因成本过高被政府放弃。但从 1833 年起，巴贝奇开始专注于另一种机器——解析机，这种机器能够自动计算所有数学公式。解析机的各种操作由打孔卡控制，这些打孔卡是仿照贾卡织机使用的卡片制作的。虽然仅完成了部分构造，但巴贝奇的笔记、图纸和部分机器现藏于伦敦的维多利亚与阿尔伯特博物馆。

贾卡织机，是通过自动化来提高生产效率的一次成功尝试，它本身也是建立在多项先前创新的基础上的：1725 年，布雄用带孔的无尽纸带替代了成束的环状绳索；1728 年，法尔康用带孔卡片替代了纸带，但卡片仍附着在绳索上；1748 年，雅克·德·沃康松将带孔纸带和卡片结合起来。卡片上的图案由专用机器用模板绘制的设计进行打孔。由此，程序化机器诞生了。

一百多年后，哥伦比亚学院毕业生赫尔曼·霍勒里斯回忆起了那些带孔卡片的存在。霍勒里斯刚开始在人口普查局工作，年薪丰厚，为 600 美元。他被安排参与一项关于制造业中使用的动力和机械的调查工作。但他也结识了负责“重要统计数据”的约翰·肖·比林斯。一天晚餐时，比林斯抱怨查尔斯·西顿最近发明的制表设备不够完善，该设备曾用于 1870 年的人口普查。比林斯认为，鉴于人口增长，1880 年的人口普查可能需要七八年才能完成，而 1890 年的人口普查到了 1900 年仍未完成。“应该有一台机器来完成纯机械的制表工作，比如人口统计和类似数据的处理，”比林斯说。霍勒里斯在 30 年后回忆道：“我们谈过这事，我记得……他想到了用卡片上的缺口来表示个人的描述。”霍勒里斯考虑制造一台能记录和读取这些信息的装置，并邀请比林斯与他合作。比林斯为人谨慎，拒绝了邀请。

1882 年，霍勒里斯以机械工程讲师身份去了麻省理工学院（当时他 22 岁）。在麻省理工学院的教学工作让他有时间继续研发这台机器。他最初考虑将信息记录在长条纸带上，但这被证明不切实际。1883 年夏天，霍勒里斯乘火车西行。在火车上，他看到了一种“打孔照片”的技术，即列车员通过打孔方式将乘客的描述记录在车票上，以便核实同一人是否一直使用该车票（如性别、发色、眼睛颜色等信息）。

霍勒里斯于 1884 年申请了他的第一台机器专利，1886 年又申请了改进设计的专利，并在巴尔的摩人口普查中进行了试验。根据试验报告，新泽西和纽约订购了机器（用于统计死亡率）。霍勒里斯和一些商业伙伴竞标并赢得了 1890 年人口普查的合同。奥地利政府于 1890 年订购了机器，加拿大次年订购了五台，随后意大利和挪威也跟进，之后是俄罗斯。这些机器取得了显著成功。霍勒里斯于 1896 年将他的霍勒里斯电动制表系统注册为制表机公司，并于 1905 年重新注册成立。

近 80 年过去了，计算机行业才超越了霍勒里斯的一些重要见解。首先，为了让操作员不会弄错卡片方向，他在卡片的右上角剪去了一个角。第二，他以合理的价格出租机器（1890 年人口普查的租赁费用为 75 万美元，而 1880 年的人力成本为 500 万美元），但出售专利卡片（1890 到 1895 年间售出超过 1 亿张）。第三，他将人口普查计数方法改编为铁路的货运和客运数据统计。实际上，霍勒里斯发明了“可重复使用性”。

1907 年和 1908 年，霍勒里斯将他的部分机器租给电力公司用于计费：他每月向他们销售 100 万张卡片。这些卡片尺寸为标准尺寸：3.250 × 7.375 英寸（与“旧”美元钞票尺寸相同），有 45 行和 10 列圆孔。

与此同时，一位名叫查尔斯·弗林特的企业家于 1900 年在纽约恩迪科特创立了国际时间记录公司，制造打卡钟。次年，他成立了美国计算秤公司，生产可以“读取”费用和重量的秤，从而免去了店员计算的需要。1910 年——具体何时不详——弗林特遇到了资金短缺的霍勒里斯。两家公司合并后，成立了计算 - 制表 - 记录（CTR）公司。不到 30 个月后，刚被 NCR 解雇的托马斯·沃森接受了弗林特及其听话的董事会的面试。1914 年 5 月，沃森以丰厚的 2.5 万美元年薪、股票期权和利润分成，接任 CTR 的总经理。

尽管第一次世界大战带来了对 CTR 和沃森有利的业务，但真正使沃森五年前的研发投资得到回报的是 1919 年：CTR 成功推出了一款打印机 - 列表机，可以打印出从霍勒里斯的制表机和分拣机收集的信息。1924 年 2 月，CTR 更名为国际商业机器公司（International Business Machines Company，简称 IBM），托马斯·J·沃森同时担任首席执行官和首席运营官。

1928 年，IBM 推出了 Type IV 制表机和新的 80 列、12 行的打孔卡片。

从 1941 年到 1945 年，美国国防部资助了许多推动现代计算机诞生的项目。托马斯·沃森的公司资助了其中的大部分。

尽管沃森在 1945 年曾说过：“我认为全球大约只需要五台计算机”，但他资助的第一台计算机已经完成。哈佛大学的霍华德·艾肯和一个小团队从 1939 年开始组装一台机器，利用了巴贝奇的原理。该机器于 1944 年完成，包含一个 51 英尺乘 8 英尺的面板，上面安装了纸带读取器、继电器和旋转开关。哈佛马克 I 计算器的许多操作由机械开关控制，驱动动力为四马力电机。它能够处理 23 位有效数字的十进制数，运行在以每分钟 200 步速移动的 24 孔打孔纸带上。加法的基本操作时间为 0.3 秒。该机器一直使用到 1953 年，部分马克 I 目前展出于哈佛大学剑桥的艾肯计算实验室，另一部分在华盛顿特区的史密森学会展出。

1944 年 10 月，美国陆军向宾夕法尼亚大学提供合同，建造电子离散变量计算机（EDVAC）。原始团队包括赫尔曼·H·戈尔丁、约翰·冯·诺伊曼和约翰·莫克利。其设计完全体现了冯·诺伊曼的思想。

首台全电子计算机是电子数值积分计算机（ENIAC）。由宾夕法尼亚大学的 J.W. 莫克利和 J.P. 埃克特于 1945 年末完成，并于 1946 年安装，由阿伯丁（马里兰）试验场的弹道研究实验室（BRL）委托建造。它是至今最大的计算机，由 18000 个电子管（真空管）和 1500 个继电器组成。ENIAC 是马克 I 的电子版本，速度快了数百倍（Mike Muuss 告诉我，ENIAC 的部分零件目前展出于 BRL）。

埃克特和莫克利在 1947 年成立了自己的计算机公司，开始制造他们的通用自动计算机（UNIVAC）。由于资金耗尽，他们成功获得了美国 Totalizator 公司的 50 万美元投资（Totalizator 公司提供赛马博彩机，这在某种程度上是计算机与博彩的最早联系，他们认为计算机可能对信息处理有用）。美国 Totalizator 公司控制了埃克特 - 莫克利公司，但在第一台机器完成之前资金再次耗尽，Totalizator 的 Mun 兄弟将埃克特 - 莫克利卖给了雷明顿兰德的詹姆斯·兰德。初始的 UNIVAC 于 1951 年交付（晚了一年），另外还有六台机器在订购中。

ENIAC 在英国也有后代。莫里斯·V·威尔克斯和他的团队在 1946 年底开始规划电子延迟存储自动计算机（EDSAC），这是威尔克斯从宾夕法尼亚回来后开始的工作，并于新年初在剑桥大学数学实验室开始建造。它的体积仅有 ENIAC 的五分之一，基于冯·诺伊曼在一篇论文中提出的思想。1949 年 5 月，它执行了首次完全自动计算，成为第一台投入使用的具有高速存储器和输入/输出设备的电子计算机。威尔克斯称，几年内，EDSAC 的子程序库已超过 150 个。

几乎同时，在曼彻斯特，M.H.А. 纽曼领导的团队开始制造一台体现 EDVAC 概念的机器。F.C. 威廉姆斯发明了阴极射线管存储，I.J. 古德曾与艾伦·图灵合作研发了破译机器 Colossus，图灵本人也加入了团队。曼彻斯特自动数字机（MADM）原型于 1948 年建成，正式机器于 1949 年 6 月运行了第一个程序。MADM 引入了索引寄存器和分页机制到计算机领域。

与此同时，IBM 开始研发选择序列电子计算机（Selective-Sequence Electronic Calculator，简称 SSEC）。需要注意的是，虽然 EDSAC 是第一台电子计算机，但 SSEC 是第一台计算机——它将计算与存储程序结合在一起。该机器于 1948 年初在 IBM 位于曼哈顿的总部投入使用，巧妙地放置在街道平层的玻璃窗后，路人可以看到它在运行。它是一台大型机器，拥有 13,000 根电子管和 23,000 只继电器。所有算术计算均由电子管完成，其速度比 Mark I 快 100 多倍。它还拥有三种不同类型的存储器：高速电子管存储器、容量更大的继电器存储器，以及容量极大的 80 列纸带存储。指令和输入通过穿孔纸带输入，机器配备 66 个读头，控制能自动从一个读头转移到另一个。B.W. Bowden 在 1953 年写道：“它很可能是第一台具备条件控制转移指令的机器，这正是巴贝奇和（阿达）洛芙莱斯夫人所推荐的。”SSEC 曾为美国原子能委员会等机构工作，直到 1952 年 8 月被拆除。

同年 6 月，约翰·冯·诺依曼及其同事在普林斯顿高等研究院完成了 MANIAC 计算机。该机采用了 F.C. 威廉姆斯和 T. Kilburn 发明的静电存储器，这种存储器只需一台阴极射线管，而不需要专用存储管。

接下来硬件上的进展来自麻省理工学院的 Whirlwind 项目，该项目由杰伊·福雷斯特于 1944 年启动。Whirlwind 在每秒对 16 位数字的单地址操作达到 20,000 次，采用了一种新型的静电存储器，其中 16 个电子管各包含 256 个二进制位。（字是计算机存储中的基本数据单位。单位由预定数量的位组成。一个 8 位字可以表示范围为 -27 到 +27 -1 \[即数字 -128 到 +127]）Whirlwind 是首次真正尝试实时计算，持续计算飞机的运动，用以解决稳定性和高速飞行的问题。道格·麦克伊罗伊告诉我，在 1954 年他使用 Whirlwind 时，“它配备了磁芯存储器，每秒能执行 40,000 条指令。”福雷斯特在 Whirlwind 项目中的一位“聪明学生”是肯尼斯·H·奥尔森，他在几年后创办了数字设备公司（Digital Equipment Company，DEC）。奥尔森当时正在试验用于存储器设备的磁性开关磁芯矩阵，但在一篇学生论文中，他建议使用晶体管代替电子管。这篇论文被 SSEC 的电路设计师拉尔夫·L·帕尔默看到，帕尔默在 1955 年初劝说埃里希·布洛赫在 IBM 704 的存储器中使用晶体管。但由于当时没有足够功率驱动铁氧体磁芯存储器的晶体管，这一尝试失败了。

IBM 704，最初名为 701A，于 1954 年发布，是 IBM 701（1952、1953 年）的逻辑继任者。701 发展成 704 的项目由吉恩·阿姆达尔领导。701 由一个由纳撒尼尔·罗切斯特和杰里尔·哈达德领导的 35 人团队建造。罗切斯特曾在西尔维尼亚为 Whirlwind 构建算术单元；哈达德则是设计 IBM 604 电子计算器团队的一员。最终，700 系列既包含科学计算机（701、704、709、7040、7044、7090 和 7094），也包含商业计算机（707、705 和 7080）。（顺便提一下，IBM 7030 具有 64 位字和 8 位字节）701 在 1953 年的租金为每月 1.5 万美元；704 的增量成本很小。即使租金如此之高，IBM 也出货了 18 台 701，后来售出了 140 台 704。在商业领域，175 台 IBM 705 以平均 160 万美元的价格售出。7080 是完全晶体管化版本，售价为 220 万美元：计算机依然属于数百万美元的高价区间。

福雷斯特与 IBM 合作，获得了国防部合同，开发 Whirlwind II——一款防空计算机。随着 IBM 参与度的提高，1952 年该项目更名为 SAGE（半自动地面环境）。肯·奥尔森和他的团队在 MIT 林肯实验室仅用九个月设计并建造了内存测试计算机。当福雷斯特和他的副手诺曼·泰勒在 1953 年初意识到需要一位常驻 IBM 的全职联络员时，泰勒说服了奥尔森。奥尔森去了 IBM，但很快就厌恶了 IBM 的态度。1953 年晚些时候在波基普西的一个晚上，他对泰勒说：“诺姆，我能用他们自己的游戏规则打败这些家伙。”这标志着数字设备公司（DEC）的开端。

三年半后，奥尔森向 American Research & Development 提交了一份商业计划，并获得了他和哈兰·安德森创办公司所需的 7 万美元资金。一年后，他们开始从马萨诸塞州梅纳德发货逻辑模块。1959 年 12 月，在波士顿斯泰特勒酒店举行的东部联合计算机会议上，DEC 展示了 PDP（程序化数据处理器）1 的原型机。它的售价为 12 万美元，交付始于 1960 年 11 月。

PDP-1 是一台 18 位机器，内存容量介于 4096 到 32768 字之间。PDP-1 的内存周期为 5 微秒，计算速度为每秒 10 万次计算。该项目由本杰明·格尔利领导，机器由 3500 个晶体管和 4300 个二极管组成。它配备了编辑器、宏汇编器和 DECAL（一种 ALGOL 编译器）。输入采用纸带读取器，输出使用 IBM 打字机。PDP-1 拥有其那一代实时计算机中最佳的性价比，也是首台配备图形显示屏的商业计算机。DEC 共售出 53 台，第一台交付给了 Bolt、Beranek 和 Newman，第二台交付给 Itek（诺姆·泰勒创办的排版公司）。其他用户包括劳伦斯利弗莫尔实验室和加拿大原子能公司（AEC）。1962 年 1 月，奥尔森向 MIT 捐赠了一台 PDP-1，学生们用它编写程序玩计数游戏 mancala。

PDP-2 原计划为一台 24 位机器；PDP-3 则计划为 36 位，但两者均未制造出来。PDP-4 是另一台 18 位机器，由戈登·贝尔设计，但失败了。它的内存周期为 8 微秒（而 PDP-1 是 5 微秒），功耗仅为 PDP-1 的一半（1125 瓦对比 2160 瓦）；它运行汇编器、编辑器和 FORTRAN，售价仅为 6.5 万美元，相较 PDP-1 的 12 万美元便宜不少。但戈登·贝尔的判断错了：62.5% 的性能和 54% 的价格并非市场需求。最终只卖出 45 台。

PDP-5 是戈登·贝尔的又一作品，由埃德森·德卡斯特罗设计，作为安装在安大略乔克里弗的 AEC 站点中使用的 PDP-4 的前端。它是一台小型通用 12 位机器。DEC 本计划制造 10 台以回收工程费用，但 PDP-5 售价 2.7 万美元，市场反响热烈，最终销售近 1000 台。

PDP-6 是一台大型 36 位机器，售价 30 万美元，发布后不久便被终止，共出货 23 台，其中一台交给了 MIT 的人工智能实验室。

PDP-7、PDP-9 和 PDP-15 是 PDP-4 的 18 位后续机型。PDP-8 是贝尔和德卡斯特罗设计的另一台 12 位计算机。它于 1965 年以仅 1.8 万美元的价格推出，引发了迷你计算机革命。最终销售超过 5 万台。PDP-10 是 PDP-6 的大型 36 位继任者。

但正是 PDP-11，使 DEC 成为领先的迷你计算机制造商。PDP-11 由戈登·贝尔在卡内基·梅隆大学休假期间构思，安迪·诺尔斯担任项目负责人，于 1970 年发布。它是一台 16 位机器，拥有各种配置和型号，最终销售了 25 万台。

戈登·贝尔的设计和 DEC 进入低成本计算领域是 UNIX 发展和成功的关键，因为 PDP-11 是首台大学和研究机构负担得起的部门级计算机。此外，虽然 Richie 和 Thompson 无法获得大型计算机的资金，PDP-11 的起价为 1.08 万美元，正好符合贝尔电话实验室的预算。PDP-11 的 16 位字长也非常重要，因为 16 位字比 8 位字能容纳更多的比特。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/unix-si-fen-zhi-yi-shi-ji/xu-mu/2-calculating_and_computing.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
