与某些发明(如飞机(莱特兄弟)和电话(亚历山大·格雷厄姆·贝尔))不同,计算机程序的发明与历史上的任何一个名字都不相关。 相反,它是一种停顿、走走停停的进步,最终产生了我们今天所认为的计算机编程——用近乎英语的语言为机器编写指令的能力。 在这里,我们将了解该领域的一些先驱。 (有关更多历史,请查看我们关于互联网历史的教程。)
巴贝奇和洛夫莱斯
虽然数学和算法对于计算机编程至关重要,但我们将从计算机程序概念和第一个程序的创建中最广为人知的二人组开始。 查尔斯巴贝奇被认为是编程计算机之父。
作为一名数学家,他了解所有计算都是如何由可以机械化的较小部分组成的。 为此,机器需要输入设备、处理器、控制单元和输出设备。 Babbage 将这种机器概念化,并将其命名为分析引擎。
当 Babbage 的朋友 Augusta Ada King(前身为 Byron,后来成为 Lovelace)为它编写了第一个计算机程序时,概念分析引擎在计算史上变得更加重要。 她为分析引擎编写的基于算法的程序旨在计算伯努利数,如果机器已经建成,它就可以工作。
令人惊讶的是,这颗宝石藏在她为翻译一位意大利数学家的作品而写的笔记中。 因此,最终的洛夫莱斯伯爵夫人被广泛誉为世界上第一位计算机程序员。 (另请阅读:Ada Lovelace,数字女巫。)
赫尔曼·霍勒瑞斯
Herman Hollerith 迈出了向编程计算机迈出的第一个实际步骤。 Hollerith 和他于 1896 年创立的 Tabulating Machine Company 处于计算历史的重要节点。 Hollerith 的穿孔卡片机绝对是朝着编程和自动化计算机方向迈出的一步,但它们也标志着数据处理的诞生。
好像这一重大贡献还不够,他的公司还在 1920 年代成为标志性 IBM 的一部分。 然而,就编程而言,Hollerith 机器提供了一种可以进行编程(费力且缓慢的编程)的媒介。
战争三重奏:艾伦·图灵、康拉德·楚泽和约翰·冯·诺依曼
这听起来像是在开玩笑,但一个德国人、一个英国人和一个匈牙利人在理论上和实践上都极大地推动了计算机编程领域的发展。 英国人 Alan Turing 提出了通用图灵机,这是一种可以编程和重新编程以执行不同任务的概念机器。 在战争期间,他还设计了许多用于破解密码的单一用途计算机。
匈牙利人约翰·冯·诺依曼 (John von Neumann) 添加了对创建存储程序计算机所需架构的描述,为科学家和学者提供了待办事项清单。
独立于冯诺依曼和图灵,Konrad Zuse 使用他自己设计的编程语言 Plankalkul 构建了第一台可编程计算机,该语言是用二进制编写的。
他的计算机的潜力在很大程度上被德国军方忽视了,而 Zuse 在计算史上的突出地位也因此受到影响。 他的开创性工作是在纳粹时代的德国完成的,这一事实也无助于他的声望。 (另请阅读:数字计算的里程碑。)
格蕾丝·霍珀
Grace Hopper 船长是计算机编程故事的最后一站。 霍珀以海军上将的军衔结束了她在海军的职业生涯,但她最令人难忘的是她在计算机编程方面的工作。 Hopper 创建了第一个编译器,它允许程序员使用接近英语的语言而不是机器代码,使他们不必将每个命令转换为二进制代码行。
她还开创了不同程序可以调用的子程序库的概念,而不是在每个程序中一次又一次地编写这些程序。 在 Hopper 之后,计算机编程变成了高级语言的故事,它允许计算机程序员更多地专注于创建新的应用程序,而不是学习和编写机器代码。 (另请阅读:5 位改变技术历史的女性。)
回顾计算历史
计算机编程的发展充其量是不平衡的。 Babbage 和 Lovelace 在 1800 年代初期提出了一个强大的概念,但直到 Hollerith 在 1880 年代提出一致的媒介后才迈出下一步。 在第二次世界大战期间,几个主要步骤同时发生,编译器和现代编程的诞生不到十年后(1952 年)。 从那时起,计算机和计算机编程以惊人的速度发展,其应用范围远远超出了最乐观的先驱者的想象。