[计算机科学#10]:早期的计算机编程方式
【核知坊】:释放青春想象,码动全新视野。
我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!!
内容摘要:1804年,为了在织布机上编织出丰富多彩的图案,约瑟夫·马里·雅卡尔发明了“雅卡尔织布机”。这台机器通过穿孔卡记录图案信息,控制织布过程,被视为最早的“可编程设备”之一。进入工业革命后,机电制表机出现,它通过插线连接不同插孔,构建简单程序,实现数据处理。随着内存技术的发展,“计算机之父”约翰·冯·诺伊曼提出了冯·诺依曼结构:将程序和数据统一存储于内存,用以控制计算机运行。早期的计算机还通过面板上的开关输入数据,并以灯光闪烁显示运算状态。
关键词:最早的编程;穿孔纸卡;插线板;内存;开关面板
其他相关文章:
[计算机科学#9]:更高级的CPU,榨干每个时钟的价值-CSDN博客
[计算机科学#8]:指令与程序的奥秘-CSDN博客
[计算机科学#7]:CPU的三阶段,取指令、解码、执行-CSDN博客
最早的编程-织布机
早期,人们使用织布机将丝线织成布料。对于单色布料,操作相对简单;但当图案涉及多种颜色的丝线时,生产过程变得复杂,需频繁人工干预,效率低下。为解决这一问题,约瑟夫·马里·雅卡尔于1804年发明了雅卡尔织布机(Jacquard machine)。它是一种安装在织机上的装置,能显著简化织锦、锦缎、绗缝等复杂图案的生产流程。
在使用过程中,工作人员需先设计图案,并根据设计和编织规则,在穿孔卡上打孔。将穿孔卡插入织布机后,机器便能根据孔的位置控制经线与纬线的上下动作,从而自动织出对应的图案。
雅卡尔织布机首次引入了“可更换程序”(即穿孔卡)来控制机械行为,这一原理被认为是计算机硬件发展史上的重要奠基之一。
前文提到,1890 年美国人口普查首次采用穿孔卡(纸质)记录和处理数据,其核心思想是通过孔洞的位置表示信息。这种方式尽管在当时具有开创性,但也存在明显缺陷:穿孔卡一旦打孔,数据即被固定,无法修改或重复使用。此后60年间,人们在这一基础上持续改进,逐步发展出具备基本加、减、乘、除运算能力的机电设备,为后来的计算机奠定了重要基础。
插线板
工业革命之后,随着人口增长和各行各业的迅速发展,社会对信息记录与处理的需求激增。到1932年,IBM 已在 Hollerith 穿孔卡理念的基础上,研制出更先进的机电制表机。这些设备不仅速度更快、可靠性更高,还通过插线板实现了更复杂的控制,支持自动算术运算、基本逻辑操作,甚至具备简单的条件判断能力。编程的雏形由此显现,标志着从静态的数据处理设备向具备逻辑与控制能力的系统迈进,为1940年代可编程计算机的诞生奠定了基础。
当时,操作员需通过导线连接机器上的各个插孔,以建立电信号路径,完成特定任务。然而,这种方式繁琐且低效,不同任务需要重新布线,接线复杂的系统甚至可能耗费数周,严重限制了灵活性与生产效率。因此,人们迫切需要一种更快捷、更灵活的编程方式,推动计算技术继续演进。
冯诺依曼结构
在20世纪40年代末至50年代初,随着内存技术的不断进步,内存容量显著提升,成本也逐渐降低。相比插线板这种物理连接方式,内存作为数据记录载体具有显著优势:它不仅支持反复读写,还能同时存储程序代码和处理过程中的中间结果及其他长期数据。
这一特性促使计算机结构发生重大转变——程序不再以固定硬件方式“布线”,而是以数据形式存储于内存中,实现了更高的灵活性与效率。这种将程序和数据统一存储在内存中的计算机架构,被称为“冯·诺依曼结构”,以纪念提出该理论的数学家约翰·冯·诺依曼。
约翰·冯·诺伊曼(John von Neumann,1903年12月28日—1957年2月8日),原名诺伊曼·亚诺什·拉约什,出生于匈牙利的美国籍犹太人数学家,在泛函分析、遍历理论、几何学、拓扑学和数值分析等众多数学领域及计算机科学、量子力学和经济学中都有重大贡献,被誉为“博弈论之父”、“计算机之父”。
部件 | 中文名称 | 作用说明 |
---|---|---|
1. Control Unit (CU) | 控制器 | 负责解释指令并协调各部分的工作;控制程序的执行顺序。 |
2. Arithmetic Logic Unit (ALU) | 算术逻辑单元 | 执行算术运算(加减乘除)和逻辑运算(与、或、非等)。 |
3. Memory (Main Memory) | 内存(主存储器) | 存储程序指令和数据。既可以读取也可以写入。 |
4. Input Devices | 输入设备 | 用于向计算机输入数据或指令(如键盘、鼠标)。 |
5. Output Devices | 输出设备 | 显示或输出计算结果(如显示器、打印机)。 |
世界上第一台基于冯·诺依曼架构的“存储程序计算机”由英国曼彻斯特大学于1948年建成,昵称“宝宝”(Baby)。尽管采用了内存存储程序的理念,但在早期阶段,程序和数据仍需通过穿孔纸卡输入。纸卡一张张被读取,数据被写入内存,程序开始执行;运算结束后,结果再通过纸卡打孔方式输出。如果需要继续处理,可以将输出纸卡重新作为输入。除纸卡外,穿孔纸带也被使用,其结构类似,但更长、更连续。
直到20世纪80年代,几乎所有计算机仍保留穿孔纸卡读取器,说明这一技术在计算初期占据着重要地位。历史上使用穿孔卡的最大程序是1955年由美国空军开发的SAGE防空系统。据称,在其高峰期,该项目雇佣了全球约20%的程序员,其主控制程序使用了约62,500张穿孔卡,相当于约5MB的数据量,规模惊人。
开关面板
在1980年代之前,除了穿孔卡,还有一种常见的编程方式被广泛使用,即“面板编程”。它通过在操作面板上安装一组物理开关,代替传统的插线方式。程序员通过手动拨动这些开关,将每一组开关状态作为一组二进制数据输入到内存中,从而写入程序指令或数据。一段完整的程序可能需要手动输入多组指令。
在程序运行过程中,面板上的指示灯会根据CPU的执行状态闪烁,用以显示程序运行的进展与系统状态。这种编程方式虽然原始,但它在早期电子计算机的发展过程中起到了过渡性的作用,为后来的键盘输入和图形界面奠定了基础。
总结
早期计算技术的发展经历了从机械控制到电子控制的演进。1804年,雅卡尔织布机通过可更换的穿孔卡控制图案编织,被视为可编程思想的起点。19世纪末,穿孔卡被用于1890年美国人口普查,成为数据处理的重要媒介。随后,插线板编程在机电制表机中广泛应用,但操作繁琐、灵活性差。20世纪中期,面板编程作为过渡形式,通过开关输入数据、指示灯显示运行状态,进一步推动编程方式的发展。随着内存技术的进步,程序和数据可统一存储,催生了冯·诺依曼架构的“存储程序计算机”,开启了现代计算机时代。尽管输入输出仍依赖穿孔卡和纸带,但这种结构的出现标志着计算机由固定硬件逻辑向灵活软件控制的重大转变。
感谢阅览,如果你喜欢该内容的话,可以点赞,收藏,转发。
由于 Koro 能力有限,有任何问题请在评论区内提出,Koro 看到后第一时间回复您!!!
其他精彩内容:
[计算机科学#4]:二进制如何塑造数字世界(0和1的力量)-CSDN博客
[计算机科学#5]:计算机的“数学大脑”——核心部件ALU揭秘-CSDN博客
[计算机科学#6]:从锁存器到内存,计算机存储的构建与原理-CSDN博客
参考内容:
Crash Course Computer Science(Y-T)