穿孔卡片机是一种以穿孔卡片为载体进行数据输入、输出和处理的早期机电式计算机设备,被视为现代信息处理的雏形。它通过卡片上特定位置的孔洞组合来编码字母、数字与指令,广泛应用于19世纪末至20世纪中期的统计、制表、工业控制及早期编程领域。其技术原理深刻影响了计算机存储与打孔介质的发展,如今虽已退出主流,却以“打孔卡文化”在极客圈和复古计算爱好者中延续生命。
1 历史沿革
1.1 起源:提花织机与雅卡尔卡片
穿孔卡片技术的直接灵感来源于1801年法国人约瑟夫·玛丽·雅卡尔发明的提花织机。雅卡尔织机使用一套串联的穿孔卡片,每张卡片上的孔洞模式控制织机中经线的升降,从而自动编织出复杂的图案。这套“卡片编程”机制最早实现了用物理介质存储指令并控制机器行为的概念,被认为是计算机程序存储思想的萌芽。
1.2 赫尔曼·霍勒瑞斯与1890年美国人口普查
1880年代,美国人口普查局职员赫尔曼·霍勒瑞斯为解决人口数据手工处理所带来的庞大工作量和时间成本,开发了一套基于穿孔卡片的制表系统。他设计了标准尺寸的穿孔卡片(与当时美元纸币大小相近)和配套的电气计数设备。1890年美国人口普查中,霍勒瑞斯的系统仅用一年便完成了此前需要七年才能完成的数据统计工作,迅速确立了穿孔卡片技术在数据处理领域的地位。
1.3 IBM的崛起与穿孔卡片系统的黄金时代
霍勒瑞斯于1896年创办制表机器公司,该公司历经多次合并重组,最终于1924年更名为国际商业机器公司(IBM)。IBM以穿孔卡片机为核心产品,将其从统计工具发展为涵盖会计、库存、工资管理等多领域的企业解决方案。1930至1960年代是穿孔卡片系统的黄金时代,IBM的卡片设备占据全球市场的绝对主导地位,大型机构中随处可见成排的卡片机和堆积如山的穿孔卡片。
1.3.1 从制表机到通用计算机
早期的穿孔卡片机仅限于分类、汇总和制表等固定功能。1940年代以后,IBM开始将穿孔卡片技术融入可编程计算机设备中,例如IBM 650和IBM 701等都采用穿孔卡片作为主要输入/输出介质。卡片上的孔位编码不再仅仅对应数字,而是能表示机器指令和内存地址,使穿孔卡片从单纯的“数据载体”升格为“程序载体”。
1.4 衰落:磁介质与终端的冲击
1960年代起,磁带、磁盘等磁介质存储设备迅速发展,其读写速度更快、存储密度更高,且支持随机存取,逐步替代了穿孔卡片在数据存储中的地位。同时,交互式终端的普及允许用户直接通过键盘与计算机对话,彻底改变了以卡片为中介的批处理模式。至1970年代末,穿孔卡片机在大多数商业和科学计算领域被淘汰。
2 工作原理
2.1 穿孔卡片物理结构
2.1.1 标准卡片尺寸与孔位布局
最通用的穿孔卡片是IBM 80列卡片,尺寸为7.375英寸宽、3.25英寸高、0.007英寸厚。卡片的横向分为80列,每列代表一个字符位置;纵向有12行,分别标记为12(顶部)、11(第二行,又称“X行”)和0至9(自上而下)。卡片左上角常切去一角,用以标识方向并防止反向插入。每列中特定行位的孔洞组合对应一个具体的字符编码。
2.1.2 字符编码规则(EBCDIC前身、Hollerith码)
霍勒瑞斯码是早期穿孔卡片的字符编码标准,每列使用一至三个孔表示字符。数字0-9通过在对应行打单孔表示;字母A-Z则结合上端的一或两个“区域孔”(12、11或0行)与下方的一个数字孔共同表示;特殊符号如逗号、句号等使用更复杂的多孔组合。该编码体系后来演化为IBM的EBCDIC(扩展二进制编码十进制交换码)的物理基础,并间接影响了ASCII码在卡片表示上的设计。
2.2 穿孔环节
2.2.1 手动穿孔与键控穿孔机
手动穿孔使用类似打孔钳的工具,由操作者对照源数据在卡片上逐个打孔。键控穿孔机则是更高效的自动化设备,操作员在键盘上输入字符,机器依据输入的编码自动在对应卡片列上打出相应孔洞。典型的键控穿孔机为IBM 026和029型,其键盘布局类似打字机,但缺少Shift键——大写字母通过专用按键直接输入。
2.2.2 自动读卡与校验机制
穿孔完成后,卡片进入校验环节。校验员将同一批卡片再次送入另一台键控校验机(如IBM 059或129型),复打一遍数据。校验机对比新输入与卡片上已有孔洞的一致性:若任何一个字符不匹配,机器会锁定并标记错误卡片;若完全一致,则在卡片顶部印上校验标记。这一过程大幅降低了穿孔错误率。
2.3 读卡环节
2.3.1 机械触点式读卡
早期读卡器采用机械触点方式:卡片通过一组金属刷或弹簧针,若某位置有孔,触点会穿过孔洞与下方的导电滚筒接触,形成闭合电路;若无孔则触点被纸面隔离。电路闭合产生电脉冲,经由继电器或电子电路识别为数据。典型速度为每分钟150-250张卡片。
2.3.2 光电式读卡
后期高速读卡器(如IBM 1402)改用光电传感器。卡片经过光源与一组光敏元件之间,孔洞处允许光线通过,触发传感器;纸面则遮挡光线。光电读取消除了机械触点磨损的问题,读出速度可达每分钟800张以上。
2.4 数据处理流程
2.4.1 分类、排序与制表
在纯机电式制表机中,卡片首先经由分类机按指定列(如姓氏首字母)分入不同卡箱;排序后的卡片堆叠送入制表机,机器依次读取卡片,对数值列进行累加计数,并将结果打印到汇总报表中。整个过程全部通过机械继电器和齿轮计数实现,不需要任何电子计算。
2.4.2 与早期计算机的指令匹配
在存储程序计算机中,穿孔卡片存储的已是二进制机器指令。计算机的读卡器将卡片内容逐列转化为内存中的二进制字,控制单元随后按顺序取出执行。此模式下,每张卡片通常包含一条或几条机器指令(例如IBM 701中一张卡片可存储两条12位指令);整个程序由成百上千张按顺序排列的卡片构成。
3 应用领域
3.1 政府统计与人口普查
穿孔卡片最早且最成功的应用场景是人口普查数据统计,美国、英国、法国、日本等国均在20世纪上半叶大规模采用穿孔卡片系统进行人口和工商业普查。自动化的分类与制表功能使政府能够以前所未有的速度掌握国民信息。
3.2 企业会计与库存管理
大型企业利用穿孔卡片机处理工资计算、应收账款、库存盘点等日常工作。以通用汽车、美国铁路公司等为代表的大型用户,建立了专门的“卡片处理中心”,日处理卡片量可达数百万张。
3.3 科学研究与工程计算
物理学家和工程师使用穿孔卡片存储实验数据并提交至计算机进行数值计算。美国洛斯阿拉莫斯国家实验室在1940-1950年代使用穿孔卡片管理原子弹设计中的复杂数学计算,卡片堆砌如墙。
3.4 早期编程(如FORTRAN程序的打孔卡输入)
从1950年代至1970年代,几乎所有计算机程序都要以穿孔卡片形式提交。程序员将FORTRAN、COBOL、汇编等语言的源代码逐行打在卡片上,堆成一摞后送至机房输入。每张卡片对应一行代码,行号可见地印在卡片右侧,以便手工排序和修改。
3.4.1 堆叠卡片的“程序卡”噩梦
每张卡片一旦错序、漏张或污损,程序便可能无法运行。修改程序意味着需重新打孔并替换特定卡片,而调试过程中反复提交的卡片堆常常高达数英尺。机房地板上散落的、打乱的卡片堆被称为“程序员的噩梦”,落入此境往往意味着必须从头重新整理排序——以人力逐张拾起、按边缘序号对齐。
4 主要型号与制造商
4.1 霍勒瑞斯制表机系列
霍勒瑞斯早期产品包括1890年代的手动制表机、电动排序机和自动制表机。1910年代的“霍勒瑞斯第二代制表机”增加了电子计数能力,大表盘上以指针显示累加结果。这些机器均为专用设备,无通用计算能力。
4.2 IBM 026/029 键控穿孔机
IBM 026型键控穿孔机于1949年推出,采用14进制计算逻辑(键盘共14个按键组合),可对卡片做验孔。其1954年改进版支持更多符号和字段控制。IBM 029型于1964年推出,成为穿孔卡片时代最经典的终端设备,几乎每个计算机中心的入门处都可见到029的灰色金属身影。
4.2.1 IBM 029的经典设计与“打字”声文化
IBM 029的键盘布局模仿打字机,但增加了数字小键盘区,操作时需要专门训练。其工作时发出清脆、连续的“咔哒咔哒”声——冲头冲击纸面与卡片弹跳的混合声响,成为机房标志性的背景噪声。许多老程序员回忆,听到这种声音即有“在干活”的踏实感;如今的怀旧视频网站仍有人上传“IBM 029穿孔声”的ASMR录音。
4.3 雷明顿·兰德及其他厂商产品
雷明顿·兰德公司及其下属的尤尼瓦克部门生产过多种卡片设备,如Univac 088系列键控穿孔机和Univac 1读卡器,其卡片规格与IBM不完全兼容,采用90列格式。此外,宝来(Burroughs)、英国电信公司(ICT)和日本电气(NEC)也有各自的穿孔卡片机产品线,但市场份额远不及IBM。
4.4 兼容卡片机与读卡器(如IBM 1402)
IBM 1402读卡机/穿孔机是IBM 1401小型商用计算机的标配部件。它支持双向读卡(前后方向均能读取)、提供80列快速读入和穿孔,速度达每分钟800张读卡或250张穿孔。其光电读卡设计和可靠的机械结构使之成为最畅销的读卡设备之一,被广泛应用于中等规模数据处理任务。
5 文化影响与趣闻
5.1 打孔卡与“打孔女工”的职业群体
穿孔卡片机的操作岗几乎全部由女性担任,成为20世纪中叶规模最大的“白领女性主导”技术职业之一。公司大规模招聘初中以上学历的年轻女性,进行数月的键盘训练后上岗。打孔女工(keypunch operator)的薪资水平普遍高于当时文秘,但低于男性维护工程师。这一群体在电影《隐身人口》等文化作品中有所刻画,被视作早期计算机时代女性的“隐形劳动力”。
5.2 程序员的“卡片地震”与地板上的混乱
机房中,装有完整程序的卡片堆(俗称“卡板”)被小心地放入读卡机进卡箱;但一旦有人不慎碰到电源线或地板震动,卡片堆便会如多米诺骨牌般倒塌、散落一地。经历此事的程序员形容其为“程序员的911”,因为每张卡片仅标注了非连续的行号,散乱后必须按行号重排,这需要耗费数小时甚至数天的手工整理。
5.2.1 经典梗:“我的程序卡片掉地上了”
这一惨剧催生了计算机文化中最著名的黑色幽默之一。故事版本众多,通常描述一名程序员经过一天一夜的调试后,在提交程序时失手将整摞卡片洒在地上、被同事踩过或被门缝夹住。很多老杂志和早期网络社区(如Usenet)中,这一梗被反复讲述,成为识别“硬核早期程序员”的暗号。
5.3 穿孔卡在科幻作品中的客串
穿孔卡片在20世纪中期的科幻作品中出现频繁,常被作为“未来计算机媒介”的符号。在《2001太空漫游》中,哈尔9000的部分“逻辑模块”被描述为类卡片结构;《神秘博士》中也有类似卡片驱动的外星电脑设备。一些现代科幻题材(如《辐射》游戏系列)则刻意用打孔卡作为“古老却可靠”的保存技术标志。
5.4 复古计算圈对卡片机的复活与致敬
自1990年代起,复古计算(Retrocomputing)社群致力于修复和运行古老的穿孔卡片机。爱好者以IBM 029、IBM 1402和Hollerith分类机为目标,在博物馆和私人工作室中恢复其功能。每年举办的“复古计算大会”(VCF)中,打孔卡编程演示和卡片消磁测试是最受瞩目的表演项目之一。部分爱好者甚至制作了3D打印的微型穿孔卡片和迷你读卡器等桌面之物。
6 技术遗产
6.1 穿孔卡片对现代文件格式的隐喻(CSV、定长记录)
穿孔卡片的80列固定长度的设计,直接催生了计算机文件格式中的“定长记录”概念。现代系统间的数据交换格式CSV(逗号分隔值)虽为变长,但其逐行、逐字段处理数据的哲学与卡片处理无异。数据库早期的“卡片映像”式扁平文件结构,即是一张80列卡片对应的内存记录的直接映射。
6.2 卡片打孔逻辑对机器语言指令布局的影响
为降低硬件成本和简化读卡电路,早期计算机的指令集常直接对齐卡片列位。例如IBM 701的一条12位指令恰好占两列编码;IBM 704/709系列则使用一张卡片上的36位(三列)表示一条标准机器指令。许多教科书将“卡片列位布局图”作为教学处理器指令集设计的入门案例,这一传统影响了汇编语言的编码习惯。
6.3 收藏与博物馆中的穿孔卡片机
穿孔卡片机如今成为重要的技术史文物。美国计算机历史博物馆、史密森尼国家美国历史博物馆、英国科学博物馆等主要机构均收藏有霍勒瑞斯原始机器和IBM 029原型机。私人收藏家公开的修复记录在YouTube上吸引了百万级播放量,其中“如何用穿孔卡片玩井字棋”“用IBM 029写情书”等创意内容更为这一古老设备在新世代中注入了知识幽默和文化温度。