1 发展背景
1.1 曼彻斯特大学的早期计算机研究
1.1.1 小型实验机(Baby Machine)
1948年,曼彻斯特大学电气工程系在弗雷德里克·C·威廉姆斯(Frederic C. Williams)和汤姆·基尔本(Tom Kilburn)的领导下,建造了世界上第一台存储程序电子计算机“小型实验机”(Small-Scale Experimental Machine,简称SSEM,俗称“Baby Machine”)。该机仅重约一吨,采用威廉姆斯管作为存储介质,能执行简单的算术运算。Baby Machine的诞生验证了存储程序概念的可行性,并直接催生了后续的曼彻斯特马克一号。
1.1.2 曼彻斯特马克一号
在Baby Machine成功运行后,曼彻斯特大学于1949年启动了更大型的“曼彻斯特马克一号”(Manchester Mark 1)项目。该机在Baby Machine基础上增加了磁鼓存储、更复杂的指令集以及改进的输入输出系统。曼彻斯特马克一号于1949年4月完成原型,并开始用于数学研究和密码学实验。其设计文档和操作经验为后来的商业化版本提供了直接的技术蓝图。
1.2 费兰蒂公司的参与
1.2.1 商业化合作谈判
1949年,英国费兰蒂公司(Ferranti Ltd.)与曼彻斯特大学达成合作协议,计划将曼彻斯特马克一号的商业化版本推向市场。费兰蒂此前以制造精密仪器和军用雷达闻名,其参与计算机领域的动机源于政府订单和技术前瞻。谈判期间,曼彻斯特大学保留了技术专利,费兰蒂则获得生产权和市场运营权。艾伦·图灵作为大学顾问,参与了技术评估和需求定义。
1.2.2 从原型到量产
1951年2月,费兰蒂公司在曼彻斯特大学原型的基础上完成了第一台量产机型,正式定名“费兰蒂马克一号”(Ferranti Mark 1)。该机最初被交付给曼彻斯特大学,用于教学和研究;同年晚些时候,第二台被交付给加拿大多伦多大学。相比于原型,量产版本在可靠性、存储容量和输入输出速度上均有显著提升,并添加了商业客户支持服务。至1957年停产时,费兰蒂马克一号共生产了约9台(有争议的记录中为7到10台),其中多数被英国政府机构、大学和核能研究部门采购。
2 技术架构
2.1 中央处理器
2.1.1 指令集特点
费兰蒂马克一号的中央处理器采用单地址指令格式,每条指令长度为20比特(位),操作码占用5比特,地址字段占用15比特。指令集包含算术运算(加减乘除)、逻辑运算(与、或、移位)、条件跳转和输入输出控制。一个显著特点是支持“托换”(B-box)指令,用于修改地址计算。该机主频约100千赫兹,典型加法运算耗时约1.2毫秒,乘法约2.2毫秒。
2.1.2 B线(索引寄存器)机制
费兰蒂马克一号最具里程碑意义的设计是引入了“B线”(B-lines)机制。B线可视为现代计算机中索引寄存器的前身,它允许在指令执行前对地址字段进行修改(即基址偏移),从而极大简化了数组访问和循环控制。B线共有8条(编号B0至B7),每条可存储20位数据。该机制由曼彻斯特大学的研究团队独立提出,被认为是计算机体系结构史上最早的针对性索引技术之一。
2.2 存储器
2.2.1 威廉姆斯管(阴极射线管存储器)
费兰蒂马克一号的随机存储器由64个威廉姆斯阴极射线管组成,总容量为1280字节(每个管存储20比特)。威廉姆斯管利用阴极射线管荧光屏上的静电电荷存储二进制数据,寿命随使用频率增加而衰减,平均无故障时间约为数小时。操作员需定期手动刷新屏幕以防止数据退化,这一限制使其可靠性低于同期采用水银延迟线的UNIVAC I。
2.2.2 磁鼓辅助存储
为缓解主存的稀缺,该机搭载了四个磁鼓,每个磁鼓容量为5120字节(约5 KB),总辅助存储约为20 KB。磁鼓的旋转速度为每分钟3000转,平均访问时间约为10毫秒。数据通过纸带阅读器加载至磁鼓,再由磁鼓传输至威廉姆斯管。这一两级存储体系在当时已是较高的设计标准。
2.3 输入输出设备
2.3.1 纸带阅读器与穿孔机
初级输入设备为五孔纸带阅读器,读取速度约为每秒200个字符。输出为纸带穿孔机,穿孔速度约每秒100个字符。操作员可通过纸带预处理程序来编辑数据,但一旦纸带穿孔错误,修复过程极为繁琐——通常需要剪贴胶带修补孔洞,这在费兰蒂用户圈内催生了不少“纸带医疗”段子。
2.3.2 电传打字终端
当时尚无主流显示器,操作员通过一台电传打字机(Teletype)进行人机交互。该设备可以打印出计算结果或错误信息,同时也支持键盘输入小程序。打字机噪音极大,且热敏打印纸常因机房温度过高而卷曲,有用户调侃“费兰蒂的大嗓门比它的计算器更有名”。尽管如此,它已是当时相当“先进的人机界面”了。
3 软件与编程
3.1 图灵的编程手册
3.1.1 代码设计原则
1950年至1951年间,艾伦·图灵为费兰蒂马克一号编写了详尽的编程手册,标题直译为《费兰蒂马克一号程序员参考》。该手册定义了操作码的助记符、指令格式、B线使用规范以及输入输出流程。图灵强调“机器必须对人类的懒惰保持宽容”,倡导在代码中预留调试信息(即后来所说的“带注释的源代码”),并设计了若干实用技巧以避免威廉姆斯管的数据退化问题——比如“每隔15分钟必须运行一次循环刷新子程序,否则你的程序会自己‘蒸发’”。
3.1.2 子程序库的建立
图灵与同事一起建立了费兰蒂马克一号的首个子程序库,包含数学函数(如三角函数、对数、开平方)、矩阵运算、素数检测等约40个标准子程序。这些子程序以纸带形式分发,用户可将其物理拼接至代码中。这种库的构建方式被认为是现代开源软件库的遥远雏形,只是其“分发介质”是五孔纸带而非CDN服务器。
3.2 早期程序示例
3.2.1 数值计算与密码学应用
费兰蒂马克一号运行的首个应用程序之一是计算圆周率(π)到小数点后5000位——结果被广播在BBC电台节目中宣称“机器比人更快更准”。国王学院和帝国理工的研究人员利用该机进行国防相关的数值计算,包括导弹弹道模拟和密码分析。图灵本人也编写了若干针对德国恩尼格玛密码的统计测试程序(尽管战争已结束,但这类程序被他视为“趣味消遣”)。
3.2.2 图灵测试相关探索
1952年,图灵将费兰蒂马克一号用于实现“模仿游戏”的部分实验,即后来著名的“图灵测试”的早期版本。他在程序中编写了一组规则:机器模拟一位女性回答人类提问者的自由文本。由于威廉姆斯管的容量限制,程序只能维持约200个预设回复词库,且在对话超过三轮后可能陷入“是的,不,也许”的死循环。图灵在笔记中写道:“机器还不够笨,因为它显然拒绝承认自己不懂爱情。”这类实验虽简陋,却被视为人工智能的早期尝试。
4 历史意义与影响
4.1 商业化里程碑
4.1.1 与UNIVAC I的同步竞争
费兰蒂马克一号的诞生时间几乎与美国雷明顿·兰德公司的UNIVAC I重合(UNIVAC I于1951年3月交付)。两者均为“第一代商用电子计算机”的代表,但费兰蒂马克一号在索引寄存器上具有明显设计优势,而UNIVAC I则因其水银延迟线存储器的更高可靠性而赢得更多商业订单。历史上,二者被视为“东西方第一次商业计算机竞赛”,尽管它们之间的实际竞争更多是媒体构建的叙事——毕竟一个卖给了英国政府,一个卖给了美国人口普查局。
4.1.2 英国计算机产业的起点
费兰蒂马克一号的成功标志着英国计算机产业从实验室走向市场。费兰蒂公司此后推出了更先进的“马克二号”(Mark 2)和“珀伽索斯”(Pegasus)系列,培养了一批早期计算机工程师。直接受其影响的后继机型包括英国的“埃利奥特803”(Elliott 803)和“国际商业机器”(IBM)的早期英国分部。可以说,费兰蒂马克一号是英国作为“计算机先驱国家”的基石之一。
4.2 对计算机科学的影响
4.2.1 索引寄存器的后续普及
B线机制被直接复制到了后续的英国计算机中,并经由曼彻斯特大学的学术交流传播至美国。虽然IBM在20世纪50年代末的704系列中采用了更复杂的索引方案,但B线的设计理念已成为计算机体系结构的标准组成部分。这一“先见之明”使费兰蒂马克一号在教科书中常被列为“现代CPU索引寄存器的真正鼻祖”。
4.2.2 图灵在软件领域的先驱角色
图灵的编程手册和子程序库被后来的计算机科学家视为软件工程思想的早期范本。他对“机器智能”的探索超越同时代人,费兰蒂马克一号的实践经验直接融入了他1950年发表的里程碑论文《计算机器与智能》。尽管当时的人并未意识到“用一台低速纸带计算机模拟人类对话”有多么疯狂,但如今图灵被公认为“程序员”这一职业的最初定义者之一。
5 现存系统与纪念
5.1 退役与存世记录
费兰蒂马克一号系列在20世纪60年代逐步退役。其存储介质(威廉姆斯管、磁鼓)因技术演进和退役后缺乏维护几乎全部报废。据可查记录,仅有加拿大多伦多大学曾将一台费兰蒂马克一号作为教学用机保留至1970年,后因校园火灾被销毁。其余机器被英国政府废弃或拆解为部件,未有任何一台完整的原始系统幸存至今。
5.2 复原项目与博物馆展示
1990年代,曼彻斯特大学与英国计算机博物馆联合启动了费兰蒂马克一号的软件复原项目,基于原始设计文档和幸存零件复现其逻辑电路。2000年,一个简化的功能模拟机在曼彻斯特科学工业博物馆展出,虽然它无法处理完整的原始纸带程序,但可以展示加法循环和B线索引效果。另有细节模型陈列于伦敦科学博物馆和剑桥大学计算机历史中心,配有交互触摸屏模拟纸带输入过程。
5.3 流行文化中的提及
费兰蒂马克一号在流行文化中偶被提及。英国电视剧《驯鹿》(The Reindeer)第三集曾出现一幕,剧中角色用纸带打孔器“黑入”了一家坏掉的自动售货机,被视为对费兰蒂马克一号程序员日常的致敬。在电子游戏的背景设定中,它常被用作1950年代“黑色科技”的视觉符号,如《辐射》系列的终端机形象即参考了其穿孔纸带样式。另有一些网络迷因调侃:“如果你的程序跑得太慢,你可能需要把纸带贴在墙上示众以警告它。”