—— 史上首位程序员是位女士
0.前言
英国的维多利亚时代(Victorian era 1837–1901)是日不落帝国和工业革命的巅峰时期,此时的中国是清朝末年。远洋过来的英国人卖给大清子民鸦片的时候,另一个在伦敦的英国人 Babbage 则忙着制造一种未来的机械装置。
从 Babbage 身上我们能感知到那种多产古怪的天才;他发明了火车的排障器和速度计、开创了运筹学、影响了现代保险业、设计了第一台自动排字机、创立了英国皇家天文学会、经济学上第一个对组织分工进行研究提出了巴贝奇原则。不过最重要的却是他设计和制造的未来机械装置。这个机械装置计划用来自动化诸如航海天文中需要用到的巨量运算,其结构上 4 大主要组件「mill、store、输出设备、输入设备」 已经非常接近现代电脑。
无独有偶的是参与建造它的合伙人 Ada (一个美丽的贵族夫人,诗人拜伦的女儿,拥有极高的数学天赋)为机器注解原理畅想可能性的时候所做的事情,使她成为了史上第一个真正意义上的程序员。
1815 年,Boole 和 Ada 同时出生在英国,不像 Ada 出生上流社会,Boole 只是一个林肯郡的穷小子,自学成才。他发现了从亚里士多德到笛卡尔以来的每一位形而上学家所忽视的东西,他开创的逻辑数学的学科,他发明的理论成为爱因斯坦阐述相对论的关键。很难想象如果没有 Boole 为逻辑为物理电路和数学运算之间搭建的工具,现代电脑将会晚多少年出现。
这个故事里面有一条隐秘的线索,就是法国发明家 Jacquard 发明的织布方法,他是 Babbage 的机械装置里面最神来之笔,也是 IBM 发家的起点,更是现代电脑早期最常用的编程手段。很有趣人类发明用来高效织出各种图案的织布方法却在此后几百年里影响了科技商业的进程。就像做菜如编程一样,织布如编程,我很喜欢这些小到生活中的日常事情,却有时候大到影响人类社会。
1.Charles Babbage
人物小传 :
在美国宾夕法尼亚州的一间大房子里,一排排巨大的真空管映入眼帘,发热的电子元器件让房间温度变高。无独有偶,100 年前的英国伦敦上流阶层的一间会客厅里,一位绅士正在展示着一个由大量的木头和黄铜等零件制成的机械装置。在客厅里面有一位黑色长发的少女,她是跟着母亲的朋友来参加这个活动的,这位少女有着很高的数学天赋并热衷赌马。当她仔细观察这个机械装置并意识到她理解了这位衣着得体的绅士到底要坐什么的时候,她惊讶到了,此后她加入了绅士的事业中去,并意识到这有可能是一个会改变历史的事。他们就是 Charles Babbage,还有他年轻的合伙人 Lovelace 女士 。早在美国工程师发明现代电脑 ENIAC 之前的一个多世纪,他们就制造过一个已经非常接近的东西了—— 「分析机/Analytical Engine」。
这个故事是一个关于两个天赋异禀、命运多舛的英国怪人的事情。甚至可能的话,你会认为这是 Babbage 的好友狄更斯杜撰的故事,可惜他不是一个科幻小说作家,狄更斯想不到这些科学和奇幻的事情。像现代的互联网人物一样,这些维多利亚时代的电脑先驱们以其异于常人的私人生活和他们的发明吸引来同样程度的关注。
Babbage 的自传叫《Irascible Genius》,从他计划实现的宏大目标来看,他确实是一位天才。他的易怒也是出了名的,一个彻头彻尾的古怪顽固的英国人,但同时也有着远见卓识,偶尔有点糊涂。他富有,但是在他把财富投入到建造那台梦想中的机械装置之后就每境俞下。
Babbage 发明了蒸汽机车的排障器,这是一种安装在蒸汽机车前部的金属装置,它可以把那些路上遇到的牛羊等动物赶走。 他也设计了一种分析工业的方法,这种研究复杂系统的方法在一百年后被称为运筹学, 当他把新的分析方法应用到印刷出版业的研究中时,他的出版商非常生气,以至于他们拒绝帮他出版任何一本书。他并不气馁,继续用他的新方法分析了维多利亚时代的邮政系统,并证明了根据邮件的运输距离为其分配价值的成本远远高于运输成本。 英国邮政局(British Post Office)通过收取固定费率的方式迅速提高了自己的收入,这种收费与每件邮件的运输的距离无关——“便士邮政”(penny Post)至今仍在世界各地流传。
他为了铁路运输业发明了速度计,他同时发表了第一篇关于精算理论的论文从而帮助开创了现代保险业,他发明并制作了万能钥匙及他对密码的分析研究后来启发了现代电脑的制作者,他也是第一个提出通过观察树木年轮去测算过去的天气的人。 他对疯狂的想法充满热情,而历史也证明了他的那些想法并不单单只是疯狂。
从 Babbage 参与的公开争论的数量来判断,他为人处事的能力并不如他的智商那样稳定。除了与英国皇家学会的长期矛盾之外,他还与英国的管风琴演奏家们、街头音乐家们也进行了很长时间的辩论争吵。Babbage 会写信给报刊杂志的编辑投诉街头的噪音,伦敦一半的管风情手们喝完酒都会在 Babbage 家的窗户下弹奏小夜曲。传记作家 B. V. Bowde 写到,「Babbage 的悲剧在于,尽管他有着无限广阔的视野和想象力,但是他对人情世故的判断力无法与之匹配,更别说他的不耐烦的性格容忍不下那些不同情他项目的人」。
Babbage 一生涉猎了六门学科,并经常随身携带了一个便携式实验室。 他是一个极其吹毛求疵的人,目光敏锐同时脾气古怪。他以给数学表格出版商写愤怒的信而闻名,指责他们出版的对数表中发现的晦涩不准确之处。 因为那个时代,航海需要靠这些表格去计算坐标,所以航海上的一个错误对于一个海员来说是生死攸关的事情。 对数表中的一个错误可能会严重妨碍像他这样伟大的思想家的工作。
他的吹毛求疵间接导致 Babbage 发明了今天电脑的祖先——「分析机/Analytical Engine」。 作为一个声名不小的数学家和天文学家,他痛恨花很多时间去研究分析对数表,从而剔除他所知道的所有错误。这些错误是由「靠计算七位对数维生的 Cornish 老牧师用手工完成的,他们太容易犯错误了。」
Babbage 留下了一本胡思乱想的回忆录《Passages from the Life of a Philosopher》,电脑先驱 Herman Goldstine 将这本书描述为「一套文献,包含了从崇高到荒谬,从深奥到低俗的一堆胡言乱语。 事实上,Babbage 的大部分职业生涯就是这样的。 奇怪的是,在他行为如此古怪的时候,他竟然有这么多忠诚的好朋友。」在这本书中,Babbage 提到了他的分析机最初的灵感来源。
有天晚上,我坐在剑桥分析学会的屋里,头斜靠在前面的桌子上,心情梦幻一样对着展开的一张对数表。学会的一个会员走进来,看着我半梦半醒就喊道:「Babbage,你在做什么白日梦啊?」 ,我回答:「我觉得世界上所有的这些对数表都应该用机器来计算。」
1822年,Babbage 在英国皇家天文学会展示了一个由齿轮、轴承等组成的小型机器模型。 该装置能够通过计算数组之间的逐次差异来执行多项式方程式。 他在现场发表的论文也获得了皇家天文学会的金质奖章。在那篇论文中,Babbage 描述了他雄心勃勃的「差分机」计划 。他获得了英国政府的资助,1823年,英国政府向他发放了第一笔资金,其他资金在后续的几年中继续零星地、有争议地发放给他。
Babbage 聘请了一位大师级的机械师,并在他自己的庄园里开设了工厂,开始了解到构建他梦想的技术能力要远超过他所处那个时代人们拥有的的能力。英国政府委托制造的差分机比英国皇家天文学会展示的模型要更大一些,更复杂一些。 但是当时的工具制作艺术还没有达到 Babbage 的设计所要求的精度水平。 工作持续了几年,没有成功。 在这事开始时嬴得喝彩的演示活动看起来像是 Babbage 职业的巅峰,此后就是顽固而持久的衰落, 英国政府最终放弃了对该计划的资助。
Babbage 从不回避与那些异议者就他珍视的想法发生冲突,他与他的英国政府和那个时代的许多人就差分机的问题争执不休,他们中的许多人开始疯狂的取笑 Babbage。
他此后构思了一个更加雄心勃勃的发明来努力证明这些人是错误的。Babbage 此前沉浸在一个梦幻般的项目中,不可思议地又开始构想另一个。 1833年,他想出了一个比差分机更加昂贵耗时同时也要复杂得多的新东西。
Babbage 推断,如果人们能够建造一台机器来进行某种特定计算,那么是否有可能建造一台能够进行任何一种计算的机器? 与其建造许多小机器来执行不同种类的计算,是否有可能通过改变部件相互作用的顺序,使一台大机器的部件在不同的时间执行不同的任务?Babbage 偶然发现了通用计算设备的想法,这个想法也在 1930s 的 Alan Turing 脑中思考着。Alan Turing 是英国另一位杰出而古怪的数学家,他们同样的略显悲剧地走在了他们所处的时代的前面。Babbage 把他假想中的计算机器称为「分析机」 ,使用相同的内部部件进行不同的计算,使用不同的「行动模式」重新配置每次计算时部件移动的顺序。
机器的中央核心单元是「mill」 ,一个能将数字精度控制到小数点后50位的计算引擎,计算引擎的速度和可靠性足以让 Cornish 老牧师退休休息了。 被 Babbage 称为「store」 的存储单元可以存储上千个50位的数字,为了展示计算的结果,Babbage 还设计了世界上第一台自动排字机 typesetter。数字可以从 mill 或者穿孔的卡片输入到存储单元 store 中去,Babbage 使用的是法国的纺织机进行操作,穿孔的卡片也可以输入数字到 mill 中去来指定计算过程。通过正确使用穿孔卡片,mill 可以被指令将暂时的结果存储在 store 里,同时将 store 里面的存储数字放入 mill 继续进行计算。分析机的最后一个组件是读取卡片的部分,实际上这是一个起到控制和决策的单元。
Babbage 的儿子最终建造了一个可以运行的原型出来了,Babbage 自己没能活着看到分析机。 据一位曾在他生命最后阶段看望过他的人说,他的大大的房子里几乎所有的房间都堆满了各种机器模型, 一旦看起来有一丝让分析机成真的可能性,Babbage 就不放弃去实验制作,同时他也不断的想出更好的办法。
分析机的4个子组件和现代电脑中基本的运行单元非常相似;
mill 对应的是 CPU;
store 对应的是存储器。
20世纪的程序员会认为打印机是一种标准的输出设备,正是输入设备和控制单元使得通用计算设备迈向真正的电脑成为可能。
分析机的输入部分是编程历史上非常重要的一个里程碑,Babbage 借鉴了法国发明家 Jacquard 的穿孔卡片的思想,Jacquard 发明了一种在布料上织布出复杂图案的机械方法从而引发了一场纺织业的革命。织布机使用排列的金属棒自动将线拉入位置,为了织出图案,Jacquard 的装置在杆和线之间插入了一张硬卡片,卡片上有穿孔。设计卡片的目的是阻止一些杆在每次通过时接触到线,卡片上的孔只允许某些杆携带线进入织机。 每次飞梭被抛出时,一张新的卡片就会出现在杆的轨道上。 因此,一旦将特定织物图案的方向转换成穿孔卡片的图案,并将卡片按照适当的顺序排列以呈现给卡片读取装置,布料图案就可以预编程序,整个织造过程就可以自动化。
Babbage 认为这些卡片是自动计算的关键。 这是一种控制那些令人沮丧的抽象「行为模式」的有形手段。Babbage 将复杂计算的指令逐步放入一系列打孔的编码卡片中,这些卡片将改变工厂每一步的工作方式。 以正确的方式排列正确的编码卡片,你就取代了一排 Cornish 老牧师。 换一张牌,你就可以取代一整支军队。
在 Babbage 的建造分析机的运动中,他遇到了一个女人,这个女人后来成为了他的知己、同事、合伙人和守护者。 她立刻看出了 Babbage 打算用他的分析机做什么,并帮助他构建了分析机的软件。 她与 Babbage 的合作以及她所写的关于计算引擎的可能性的文章,使得 Augusta Ada Byron,Lovelace 伯爵夫人,成为了一位 Babbage 的守护神,更是编程艺术和科学的奠基人。
2.Ada Lovelace
人物小传 :
Ada 的父亲正是英国著名诗人拜伦勋爵,他是那个时代最被诽谤为可耻的人物。 他与 Ada 母亲的分手是那个时代最知名的家庭里短事情之一,Ada 在一个月大之后就再也没有见过她的父亲。
Byron 在他的一些诗歌中写了一些关于 Ada 的令人心酸的段落,Ada 生前曾想死后被安葬在生父身边,可能是为了刁难比她活得更长的母亲吧。 Ada 的母亲,被传记作家描绘成一个虚荣和傲慢并存的维多利亚时代典型女人,她认为每天服用一剂含有鸦片酊的「滋补品」 将是治愈她美丽、直率的女儿的叛逆行为的完美药方,因此迫她女儿对鸦片上瘾!
Ada 早年就展示了她的数学天赋, 她家庭最亲近的朋友之一是英国著名逻辑学家 Augustus De Morgan。 她受过良好的教育,但似乎总是渴望获得比她的导师能提供的更多的知识。 Ada 一直在积极地寻找一位完美的导师,而现在她认为这位导师就是与她母亲同龄的 Charles Babbage 。
当年轻的 Ada Byron 第一次看到差分机的工作模型时,De Morgan 也出席了这个历史性的场合,当时的 Babbage 正在为 Byron 夫人们的朋友演示差分机的工作原理。在 De Morgan 的回忆录里面,回忆起这个机器对 Augusta Ada 的影响是说道,「当与会的他人如同野蛮人第一次看到镜子亦或者听到枪声时表现的那种表情时,年纪轻轻的 Ada 却完全明白了它的作用,凝视着这个美丽的发明,并且我相信她看到了它的伟大之美。」
在工业革命时期,这种机械装置的演示在英国的上层社会中非常流行,当 Ada 的长辈们在一旁窃窃私语,无法理解这个计算设备和他们脑海中的类似水泵之间的差别时,年轻聪明的 Ada 就开始探究这个机械的各个部分了,也让她成为了第一个电脑天才。
Ada 是少数几个认识到差分机去过去所有的机械计算设备完全不同的人之一,以前的计算设备是模拟的(通过测量进行计算),而 Babbage 的设备是数字的(通过计数进行计算),更重要的是 Babbage 的设计结合了算术和逻辑。(当 Babbage 晚年终于读到 De Morgan 的朋友 George Boole 关于逻辑代数的著作时,Ada 早已过世,对 Ada 来说为时已晚。 )
De Morgan 是那个时代最重要的逻辑学家,她曾是 Ada 的家庭老师,对于人们应用差分机的可能性,她有着自己的看法。关于 Ada 对数学和逻辑的天赋,Babbage 自己意识到:「她似乎比我理解的要好,而且解释这个问题的也优雅顺畅。」
19岁是,Ada 嫁给了 Lovelace 男爵,男爵也算是个数学家,尽管他的才能远不如他的妻子。年轻的 Lovelace 夫人继续与 Babbage 进行着数学和计算方面的合作,坚持支持着 Babbage 的想法。而彼时,英国当权派中没有远见的人将 Babbage 斥为怪人。
1840 年,Babbage 就他那个没有建造成功的机械装置在欧洲大地上做巡回演讲,在意大利站,一位叫 Menabrea 的伯爵在他演讲的时候详述的做了大量的笔记记录,并在巴黎出版了这些演讲笔记。Ada 将这些笔记加上她自己的注解从法语翻译成英语,并写了一份增篇附录,光这份附录就是翻译的笔记的2倍。当 Babbage 读到这些的时候,感动兴奋之余,催促 Ada 发行出来。
Ada Lovelace 翻译编纂的这些笔记在今天依然清晰易懂,这份笔记对程序员来说尤其有意义。因为衙门可以看到分析机真正领先时代多远。B. H. Newman 教授在《Mathematical Gazette》上写道,她的观察表明 Ada 早在一个世纪之前就完全理解编程电脑的原理。
Ada 尤其被 Babbage 发明的设备中用来输入数据和方程式的穿孔卡片的数学含义所吸引。 Ada 的文章标题是《对 Babbage 先生的分析机的观察》,这篇文章被她的同时代的大多数人所忽略,但是一个世纪过后,他的重要性却越发增长。
分析机的独特之处在于它引入了 Jacquard 设计的纺织图案的原理赋予了机械传动装置广泛的能力,使其成为代数运算的高效辅助。而正是这一点是差分机和分析机之间的差别,差分机中并没有引入这个设计。我们可以严谨的说道,分析机对数据的编织分析就像 Jacquard 的纺织机在布上织绘出花和叶子一样。
The bounds of arithmetic were, however, outstepped the moment the idea of applying cards had occurred; and the Analytical Engine does not occupy common ground with mere "calculating machines." It holds a position wholly its own; and the considerations it suggests are most interesting in their nature. In enabling mechanism to combine together general symbols, in successions of unlimited variety and extent, a uniting link is established between the operations of matter and the abstract mental processes of the most abstract branch of mathematical science. A new, a vast and a powerful language is developed for the future use of analysis, in which to wield its truths so that these may become of more speedy and accurate practical application for the purposes of mankind than the means hitherto in our possession have rendered possible. Thus not only the mental and the material, but the theoretical and the practical in the mathematical world, are brought into intimate connexion with each other. We are not aware of its being on record that anything partaking of the nature of what is so well designated the Analytical Engine has been hitherto proposed, or even thought of, as a practical possibility, any more than the idea of a thinking or a reasoning machine.
作为一名数学家, Ada 对将繁琐的计算自动化的可能性感到兴奋,同时她更是对这些设备的编程原理感兴趣。如果她不是英年早逝,Ada 就有可能将十九世纪的先进技术提高到真正计算的门槛。即使分析机尚未建成,Ada 还是尝试写下一系列的指令。 她指出了这门新艺术中一些特殊技巧的价值,这些技巧对于现代电脑编程语言来说仍然是必不可少的——子程序、循环和跳转。
如果你的目标是从子计算中编织出一个复杂的计算,其中一些计算可能要重复多次,那么反复重写一系列十几条或一百条指令是非常繁琐的。为什么不把经常使用的计算的副本或子例程存储在一个过程“库”中,以供以后使用呢? 然后,当计算需要时,程序可以从库中自动“调用”子例程。 这样的子过程库实际上已经成为每个高级语言的一部分。分析机和数字计算机非常擅长一遍又一遍地快速地做事情。 Ada 发明了一种指令,这种指令可以将读卡片设备备份到指定的上一张卡片上,这样指令序列就可以被执行很多次。Ada 创造了这种循环——也许是每种当代编程语言中最基本的思想之一。
正是这种有条件的跳转让 Ada 发挥了天赋。 她又想出了另一个操作读卡片机器的指令,但是这个指令不是备份和重复一系列卡片,而是使读卡片机器能够跳转到序列的任何部分,如果一个特定的条件得到满足。 将这个小小的“如果”添加到以前纯粹的运算列表意味着程序可以做比计算更多的事情。 以一种原始但潜在有意义的方式,分析机现在可以做出决定。
她还指出,有朝一日机器的性能可能远远超过维多利亚时代的技术,并推测这种机器是否有可能实现智能化。 她在《Observations》一文中提出的反对人工智能的论点,几乎在一个世纪后被另一位预言家 Alan Turing 所引用。Turing 把她的论点称为「Lady Lovelace's Objection」 ,这种观点在关于机器智能的辩论中仍然经常被听到。「分析机可以做任何我们知道如何命令它执行的事情,它并不是什么自命不凡的东西。」
目前尚不清楚 Ada 是如何以及何时卷入赌博冒险活动中去的。 没有任何证据表明是 Babbage 将赌博介绍给 Ada ,让她一生沾染上这个恶习。 有一段时间,Ada 的丈夫和她一样着迷于此,但在输了很多钱之后,他戒掉赌博了,但是 Ada 并没有,还在一直秘密的赌钱。
Babbage 在 Ada 生命的最后阶段也深深卷入了赌博中。 在她的这一面,Ada 不止一次的帮助 Babbage 筹集资金建造了分析机, 这是一个奇怪的组合,罪恶高智商的冒险和怪异的企业家精神。 他们建造了一个 tic-tac-toe 游戏机,但当一位顾问向透露 (General Tom Thumb 已经垄断了新奇的游戏产品的市场时,他们放弃了这个赚钱的生意。 具有讽刺意味的是,尽管 Babbage 的游戏机生意在商业上是失败的,但他的理论方法为未来的游戏理论科学奠定了基础,甚至比 20 世纪的天才 John von Neumann 还早了大约100年。
正是 Babbage 和 Ada 试图建立一个绝对可靠的赌马系统,使得 Ada 陷入了两次典当家庭珠宝的悲惨境地,在她丈夫不知情的情况下,这些珠宝用来支付赌马的赌资。 Ada 和 Babbage 一直进行着一个疯狂的计划,他们一度利用一个小规模的差分机的模型去计算赌马这件事。随着 AI 在一个世纪后的发展,我们了解到即使最好的 AI 也无法处理真正复杂的系统。自然,他们损失惨重,更糟糕的是 Ada 在此时求助了她的母亲,而她的母亲告诉了她的丈夫,Ada 又不得不借钱赎回了家族的珠宝。
Ada 是36岁时死于癌症,Babbage 比她多活了几十年,但没有 Ada 的建议、支持,有时还有严厉的挑战,他无法完成梦寐以求的分析机。 因为他那个时代的工具制作艺术没有达到他的设计所要求的公差,Babbage 率先使用钻石镶嵌工具进行精密车削。 为了使发动机零部件的生产系统化,他设计了大规模生产可互换零部件的方法,并写了一篇后来被称为「mass production」 的经典经济学论文。
Babbage 写过不同程度的连贯性书籍,在一些科学领域取得了突破,在另一些领域却失败了,与 Charles Darwin 这样的客人一起举办过辉煌而著名的晚宴,而且似乎最终都以怨恨收场。 Bowden 指出,「在 Babbage 去世前不久,他告诉一个朋友,他一生中没有一个完全是快乐的日子,他说话的样子好像他憎恨人类,尤其是英国人,尤其是英国政府和他楼下的英国管风琴演奏家。」
自上世纪50年代以来, Ada Lovelace 在程序员的内部圈子里就已经非正式地为人所知。当时,卡片穿孔批处理与 Ada 的那种编程并没有完全不同,但是她在这些圈子之外还相对默默无闻。 1970s,美国国防部正式以她的名字命名指代「超级语言」 。
3.George Boole
人物小传 :
尽管为时已晚,无法为分析机的最初设计提供帮助,但后来成为电脑构造必不可少的另一项发现,却是与 Babbage 和 Ada 同时代的人所做出的。 符号逻辑代数的创造是另一位英国数学天才的杰作,但他工作和生活在一个不同的世界,远离伦敦上流社会人家的客厅。
1832年的一天,一位名叫 George Boole 的十七岁英国人在穿过一片草地时,突然发现了一件令人震惊的事情。 这个想法来得如此突然,对他的生活产生了如此深远的影响,以至于 Boole 对一种他称之为「无意识」的迄今为止尚未被怀疑的人类天赋做出了一种虽然晦涩但却具有开创性的推测。然而,Boole 对人类知识的贡献并不在心理学领域,而是在他自己设计的领域。 正如 Bertrand Russell 在70年后所说,Boole 发明了纯粹的数学。
尽管 George Boole 开始学习数学的时间很晚,但他突然发现了一种方法,可以用代数的形式来捕捉人类理性的力量。 Boole 的方程式在应用于逻辑问题时,确实有效。 但是有一个问题,这不在 Boole 的概念之内。 当时的问题是,没有人在乎。 一部分是因为他来自一个错误的社会阶层,另一部分是因为他那个时代的大多数数学家对逻辑知之甚少,Boole 最终阐述这一见解的时候并没有在他出版时引起太大的骚动。 他的启示在他死后的几代人中基本上被忽视了。
一百年后,当电脑技术的不同部分意外地融合在一起时,电气工程师需要数学工具来理解他们正在发明的复杂机械。 他们创造的开关网络是电路,其行为可以用精确的方程式来描述和预测。 由于电脉冲模式现在被用来包含诸如「和 、或」 ,最重要的「如果/if」 等逻辑运算,以及计算器通常使用的「加减乘除」 ,因此需要用方程来描述计算机电路的逻辑属性。
理想情况下,相同的数学工具集可以同时用于电子操作和逻辑操作。 20世纪30年代后期的问题是,没有人知道任何数学运算有能力同时描述逻辑和电路网络。 然后,正确的头脑看到了正确的地方。 麻省理工学院一个非常精明的研究生,名叫 Claude Shannon ,他后来发明了信息论,发现 Boole 的代数正是工程师们要找的东西。
如果没有 Boole ,一个和 Ada 同一年出生的贫穷的自学成才的数学老师,逻辑和数学之间的关键联系可能永远不会完成。 虽然分析机是一个鼓舞人心的尝试,但它对后来创造了现代电脑的思想家影响甚微。 然而,如果没有 Boole 代数,电脑技术可能永远不会发展到电子速度,从而使真正有趣的通用计算成为可能。
尽管如果 Boole 看到真空管或开关电路,他也不知道该怎么办,但是他关于远见的重要性的观点是正确的。 与Babbage 不同,Boole 不是工程师。 二十年后,Boole 在那片草地上发现并在纸上写下的东西,注定要成为将软件的逻辑抽象与电子机器的物理操作结合起来的数学关键。
在 Babbage 和 Boole 之间,他们是一体2面,这2种动机在几个世纪里面指引或者内驱世人去想象并成功塑造出了计算机。一方是科学家工程师,总是渴望有一个设备来分离他们的创造力和事务工作,解放他们的思想去追求更有趣的问题,繁琐的计算交给机器。另一方是有个更抽象更恢弘的欲望,用一套数学符号系统去捕捉人类理性思考的过程。
当 Ada 看到 Babbage 的模型时,她立刻就理解了它们,并且由 De Morgan 教导,这个世界上最有能力理解 Boole的人,是第一个推测能够进行逻辑运算和数字运算的机器的操作的人。
Boole 的作品直到 Ada 去世后才出版。 如果 Ada 再多活几年,她对编程原理的强有力的直观理解就会因为 Boole 代数的使用而得到无可估量的提高。
Babbage 和拉 Ada 是英帝国鼎盛时期的贵族。 尽管有些人嘲笑 Babbage 在公众场合的古怪行为,他依然是 Duke of Wellington 、Charles Dickens 和 Prince Albert 的朋友。 Ada 可以接触到最好的导师,最好的实验设备和最新的书籍。 他们都有闲暇发展自己的思想,如果他们愿意的话,还有在皇家学会上出丑的特权。
Boole 是一个小店主的儿子,这不是接受良好科学教育的最佳途径。 在他十六岁的时候,家庭不稳定的经济状况迫使 Boole 找到了一份学校教师的工作。 面对着教授学生一些数学知识的任务,以及现在他的家乡林肯充分发挥他自我教育的能力,Boole 开始学习数学。 他很快了解到,对于一个有经济能力的人来说,这是最具成本效益的智力活动,不需要实验室设备和相当少量的基础书籍。 十七岁的时候,他经历了后来工作的灵感,但是在他能够向世界展示他的发现之前,他还有很多关于数学和逻辑的东西要学。
在他二十岁的时候,他发现了他那个时代最伟大的数学家所遗漏的东西——代数不变性理论,这个理论后来成为爱因斯坦阐述相对论时不可或缺的工具。 1849年,在他作为小学教师的漫长岁月之后,Boole 的数学著作使他被任命为 University College Cork 爱尔兰科克大学皇后学院的数学教授。 五年后,他发表了《An investigation of the laws of thought》《对思维定律的调查》 ,在此基础上建立了逻辑和概率的数学理论。
形式逻辑早在希腊时代就已经存在,最广为人知的是亚里士多德完善的三段论形式,大多数人学习的简化版本不超过「人都要死的,苏格拉底是人,所以苏格拉底也会死。」 几千年来,亚里士多德的逻辑以同样的形式存在,似乎注定要停留在形而上学的外部边界上,永远不会突破到更具体的数学领域,因为它仍然只是一个文字的问题。 下一个级别的符号精度缺失了。
一千多年来,唯一可以用严谨而精确的符号表达的基于逻辑的系统学科,被称为数学 ,也包含了欧几里得确立的几何学。 正如欧几里得在空间图形的公理和定理系统中规定了基本的几何陈述和规则那样,Boole 在代数符号中规定了逻辑的基础。 这并不是一个微小的事情。 虽然几何知识是一个广泛有用的可以走遍四方的工具,但是 Boole 确信逻辑是理解确立人类理性本身的关键。 他知道他发现了从亚里士多德到笛卡尔以来的每一位形而上学家所忽视的东西。
在 Boole 的《An investigation of the laws of thought》第一章中,他写道:
1. 下面论述的目的是研究进行推理的心智操作的基本规律。用微积分的符号语言表达这些规律,并在此基础上建立逻辑科学和构造其的方法... 从这些研究过程中得到的各种真理要素中收集一些关于人类心智的本质和构成的可能的模仿...
2. ...使我们能够从给定的前提推断出正确的推论,并不是逻辑的唯一对象... 这些研究还有另一种兴趣,来自于它们所散发出的智力的光芒。 它们告诉我们,语言和数字是推理过程的工具。它们在某种程度上揭示了我们共同智力的不同权力之间的联系。 它们向我们提出了... 真理和正确性的基本标准——这些标准不是从外部产生的,而是深深地建立在人类能力的构成之中... 通过超越人们对自身和世界所理解的知识的能力来揭示那些高度思维能力的秘密法则和关系,这是一个不需要赞扬理性思维的目标。
虽然他的发现对纯数学和电子工程都产生了深远的影响,但是 Boole 逻辑代数中最重要的元素原则上是简单的。 他以学校里每个人都学的代数为出发点,对代数组合的标准规则作了几个小而重要的例外,并用他的特殊版本精确地表达了经典逻辑的三段论。
Boole 用来连接逻辑和计算这两种截然不同的思维工具的概念是一个数学系统的想法,其中只有两个量,他称之为“宇宙”和“无” ,并用符号1和0表示。 虽然 Boole 当时并不知道,但他发明了一种用于量化逻辑的两态系统,这恰好也是分析电气继电器或真空管等两态物理设备逻辑的完美方法。
通过使用规定的符号和运算,逻辑命题可以化为等式,三段论结论可以根据一般的代数规则计算。 通过应用纯粹的数学运算,任何知道 Boole 代数的人都可以发现任何逻辑上包含在任何特定前提集合中的结论。
由于演绎逻辑非常接近人类推理的思维过程,Boole 确信他的代数不仅证明了数学和逻辑之间的有效对等,而且代表了人类思维的数学系统化。 自 Boole 时代以来,科学已经认识到人类的推理工具远比形式逻辑工具复杂、模糊、不可预测和强大。 但是数学家们发现,Boole 的数理逻辑对于他们事业的基础比他们最初猜想的要重要得多。 第一台电脑的发明者发现,一个只有两个值的简单系统确实可以编织非常复杂的计算。
在数学和逻辑之间建立一座理论桥梁的工作已经辉煌地开始了,但是 Boole 的工作还远远没有完成。 后来的人才发现,虽然人类的大脑像一台机器可能不是真的,但通过思考类似于大脑运作的机器,仍然可以获得巨大的力量。十九世纪的技术不够精确,不够快速,也不够强大,不足以让 Babbage、Ada 和 Boole 等人的想法成为现实。 制造现代电脑几个最重要组件所需的基础科学和工业能力根本不存在。 仍然有一些重要的问题需要发明家而不是理论家来解决。
4.Herman Hollerith 与 IBM
计算史上的下一个重要发展,也是十九世纪最后一个重要贡献,与计算对数表或设计思想法则毫无关系。 第二次推动这一发展的是 Herman Hollerith,19岁的美国人口普查办公室雇员。 他的角色不会对电脑的重要理论基础产生影响, 他的发明最终被淘汰, 但他的小创新却后来主导电脑产业。
Hollerith 对计算的发展做出了美国人的第一个重要贡献,他在人口普查办公室的上司给他制定了一个计划,使数据的收集自动化。 根据他上司的建议,他设计了一个系统,该系统使用在卡片上打孔方式将信息输入电子计数系统中。
1890年的人口普查是历史上将数据处理和数学方程式计算变成自动化的时刻。 事实证明,Hollerith 斯既不是数学家,也不是逻辑学家,而是一个数据处理者。 他的任务并不是数字计算,而是收集、分类、存储和检索信息集合中的大量小项目。 Hollerith 和他的同事们在不知不觉中成为了二十世纪信息工作者的先驱,因为他们的任务是找到一种机械方法来跟踪他们的组织所掌握的信息。
Hollerith 是由他的上司 John Shaw Billings 介绍这项任务的,Billings 自1870年以来一直留心信息技术的发展,当时他受雇于人口普查办公室,开发了处理大量信息的新方法。 由于 Billings 负责收集和整理1880年和1890年人口普查的数据,他敏锐地意识到,日益增长的全国人口使政府每十年进行一次宪法规定的人口普查的事情受到限制。 在可预见的未来,要计算和分类的如此大量信息可能需要十五年或二十年才能完成。就像关于电脑其他部件起源的故事一样,关于穿孔卡片系统的发明的确切认证也存在一些争议。
人口普查办公室的 Billings 和 Hollerith 的同事Willcox 在一份报告中写道:
当第十次(1881年)人口普查的结果在华盛顿制成表格时,Billings 和一个同伴正在办公室里走来走去,办公室里有数百名工作人员,他们正在用缓慢而令人心碎的手工清点方法,费力地将日程表上的信息项目转移到记录单上。 当他们看着那些职员的时候,他对他的同伴说: 「应该有一些机械的方法来做这件工作,这是 Jacquard 织布机的原理,即卡片上的孔可以调整要织的图案。」 种子落在了良好的土地上。 他的同伴是办公室里一位才华横溢的年轻工程师,他第一次确信这个想法是可行的,此后 Billings 并没有要求或拥有这个想法专利的欲望。
天才的年轻人 Hollerith 在 1919 年写下的这个版本:
一个星期天的晚上,在 Billings 的茶几上,他对我说,应该有一台机器来做纯机械的人口统计工作和其他类似这样的工作。 我们讨论了这个问题,我记得... 他是那个想到用卡片上的刻度来描述在卡片边缘打孔的那个人...研究完这个问题后,我回到 Billings 那里,说我想我可以找到解决这个问题的办法,并问他是否愿意和我一起去。 Billings说,除了想看到问题的某种解决办法之外,他对其他的事情都不感兴趣了。
Hollerith 系统把用过的穿孔放在卡片上的指定位置,代表每个被采访者的人口统计特征。 就像 Jacquard 和Babbage 的卡片,以及当时流行的「演奏钢琴」一样,Hollerith 卡片上的孔是为了让机械部件通过。 Hollerith 使用的是一种机电计数器,在这种计数器中,如果遇到孔,铜刷会关闭某些电路,如果没有孔,则不会关闭电路。
一个电动机制增加了运行计数在每个类别的每一个单位时,该类别的电路被关闭。 通过添加分类设备,将卡片分发到各种箱子中,根据孔的模式和所需的制表类型,Hollerith 不仅创造了跟上大量数据的能力,而且创造了询问有关数据的新的更复杂的问题的能力。 新制度在 1890年人口普查时发挥了大作用。
Hollerith 及时申请了这个发明的专利,1882年至1883年,他在麻省理工学院担任机械工程讲师,建立了麻省理工学院与电脑科学和技术发展之间最早的联系。 1896年,Hollerith 成立了「Tabulating Machine Company」 ,生产卡片和读卡机。 1900年,Hollerith 把他的设备租给人口普查局进行第十二次人口普查。几年之后,Hollerith 的「Tabulating Machine」 已经成为一个被称为「International Business Machines」 的公司,由一个叫 Thomas Watson 的老人经营。
5.结尾
从 Alan Turing 的英国团队需要一种特殊的计算设备来破解德国密码,到 John von Neumann 在 Los Alamos 的数学家们在制造原子弹时面临着几乎无法克服的计算,到 Norbert Weiner 的研究人员在发明更好更快的方法来提高防空火力的瞄准精度,再到生产了电子数值积分器和计算器的美国陆军弹道研究实验室的项目。
在没有对电脑的起源历史的意识的情况下,推测电脑在不久的将来会变成什么样子是愚蠢的。
历史在这一点上是清楚和无可争辩的:「弹道学诞生于控制论。 第一台电子数字电脑 ENIAC 最初是为了计算弹道射击表而建造的。 当 ENIAC 的发明者后来设计出第一台微型电脑时,它就是 BINAC,这种设备小到可以装进洲际弹道导弹的尖端,而且智能到可以根据星星的位置进行导航。」
虽然建造第一台电子数字电脑是为了生产更精确的武器,但是如果没有至少一项与弹道学或炸弹无关的重要理论突破,这项技术就不可能实现。
计算的理论起源不在于寻找更高效的武器,而在于寻找更强大、更优雅的符号系统。
第一台现代意义上的电脑不是机器, 它甚至都算不上是一个蓝图。
数字电脑被描绘为是一种抽象的符号系统 —— 第一个自动化的符号系统 —— 而不是作为一种工具或武器。
发明它的人并不关心弹道学或计算科学,而是关心思想和机器的本质。