沃尔特·艾萨克森:《创新者》
提起沃尔特·艾萨克森,想必大家都不陌生,他曾为本杰明·富兰克林、爱因斯坦、乔布斯写过传记,并风靡全球,还曾经出任过《时代》周刊总编辑和传媒巨头CNN公司总裁。
《创新者》是沃尔特·艾萨克森最近的一部著作,书的副标题是:一群技术狂人和鬼才程序员如何颠覆世界,为我们描绘了最近两个世纪在信息革命历程中那些伟大的创新和变革者们的故事。正是这些伟大的探索者不懈的努力,推动着科技的进步,让今天的我们如此便捷的享受计算机技术带来的生产力和乐趣。
世界上的第一位“程序员”——埃达·洛夫莱斯伯爵夫人
1979年5月,美国国防部将他们负责开发的一门新的高级程序语言命名为Ada,以纪念世界上第一位“程序员”——埃达·洛夫莱斯伯爵夫人。
世界上任何一项发明都不是空穴来风,而是往往基于现实需求。使用机器代替人工进行大量重复劳动的需求自古有之,在数学这一需要大量精密计算的领域更是如此。早在17世纪40年代,法国数学家布莱兹·帕斯卡为了减轻父亲在税务计算工作上的负担,就曾经发明了一台机械式的计算器,这是世界上第一台获得专利并进行商业销售的计算器。
埃达所处的时代正是工业革命末期,当时蒸汽纺织机已经大范围应用于工业生产。1804年,法国人雅卡尔甚至发明了一台可以输入打孔卡片来设计纺织图案的提花机,从而几十倍的提高了纺织效率,更为重要的是,打孔卡片的输入方式将为即将到来的信息革命开启一扇大门。
作为英国大诗人拜伦的女儿,埃达自然而然的天生富有浪漫精神和想象力,再加上母亲从小让她接受严谨的数学教育,年轻的埃达已经可以自由驰骋在的在科学和人文交织的神秘境地。在接触到查尔斯·巴贝奇以及他发明的差分机后,埃达立即对这一可能改变世界的发明表现出浓厚的兴趣,她与巴贝奇随后在计算机原型方面的探索终将使她载入史册。
巴贝奇原本打算制造一台机器进行诸如对数、正弦、余弦等的计算,并尝试将这些计算分解为只包含加法和减法的计算步骤,这就是差分机。英国政府被这一计划深深打动,在他建造这台机器期间累计投入了17000英镑(相当于两艘战舰的造价)。随后,巴贝奇又想出了通用型计算机器的概念,即可以接收输入,并根据预先设计好的指令进行各种不同的运算,他给这种机器取名为分析机。这些想法足足领先了整个时代一个多世纪,但巴贝奇建造计算机器的目的始终限制在进行数学计算,而且限于当时的技术条件,始终未能完成最终的建造。
埃达在此基础上将通用型计算机的概念提升到了一个新的高度,她提出了4个具有开创意义的想法:
通用型计算机不仅可以完成预设的任务,还可以根据编写的程序完成无限数量的可变任务,这其实已经接近现代的计算机了。
通用型计算机不必限制于数学和数字,还应该能够储存、计算和操作任何可以使用符号表示的对象,包括文学、逻辑、音乐。她对计算机操作给出了自己的定义:任何改变两个或两个以上事物之间的相互关系的处理,这种关系可以是任何类型的。这是一次概念上的飞跃。要知道这是在160年前,在当时很多人甚至还不知道计算机的概念。
事实上写出了世界上的第一个程序。她以计算伯努利数为例,将计算过程进行分解,并制作出了一个图表,上面显示了每个运算会如何编码到机器当中,这个图表包含了带有编号的指令列表,其实已经可以近似认为是一种简单的程序语言了。她还想出了子程序的概念,用来对通用的计算进行重复利用。
对人工智能的思考。机器能够思考吗?只是一个到目前为止也没有明确答案的问题,埃达给出了自己的见解:机器只能根据指令执行操作,但是它不能产生自己的想法和意图。
这些创新想法中的任意一个都是划时代的,都足以让我们肃然起敬,尤其是考虑到在当时那个女性参与科技创新极为罕见的时代。基于她对计算机的开创性贡献,她被后来的人们尊称为“世界上第一位程序员”,尽管那个年代还没有计算机,更没有编程语言。
世界上第一台电子计算机
创新有时只是时机问题。如果一个伟大想法出现的时候刚好存在可以实现它的技术,那么一项创新就诞生了。查尔斯·巴贝奇在1837年就发表了一篇关于精密计算机的论文,但是制作这种计算机所需的技术在100年后才具备。
在世界上第一台电子计算机被发明之前,数不清的探索者在各自的领域做出了他们的贡献:
伟大的哲学家、数学家莱布尼兹在17世纪末发明了二进制
1804年,法国人雅卡尔发明了可以用打孔卡片设计图案的纺织机
查尔斯·巴贝奇发明了差分机和分析机,并建造了原型机
埃达进一步扩充了通用计算机的概念,并基于打孔卡片用符号和算法给出复杂计算的过程
赫尔曼·霍尔瑞斯为了加快人口普查的速度,在19世纪末优化了打孔卡片,并用于人口普查工作,将原本需要8年才能完成的工作缩短到1年。他后来成立的制表机器公司后来成为IBM的前身。
1931年,麻省理工学院的工程学教授万尼瓦尔·布什建造出了世界上第一台模拟电子机械计算机,他将这台机器称为微分分析机(主要用途是进行微积分计算)
1935年,艾伦·图灵提出了图灵机的概念,在理论上证明了实现完全通用的计算机的可能性
1937年是计算机历史上充满奇迹的一年,这一年取得了多项成果,体现在计算机的数字化、电子化、通用性上。例如,经过逻辑学和电子电路的发展,人们逐渐意识到数字化是相比模拟化更适合应用在计算机上,同时真空管开始被应用来作为通断开关。典型的代表是克劳德·香农在这一年发表了题为《继电器与开关电路的符号分析》的硕士论文,这篇论文为后来的数字计算机打下了理论基础。
1941年,德国工程师康拉德·楚泽研制完成自己的计算机Z3,这是世界上第一台完全可行的通用可编程数字计算机,主要局限在于它使用的是笨重的电磁继电器,没有使用真空管等电子元件
1942年,美国艾奥瓦州州立大学教授文森特·阿塔纳索夫自己设计的计算机接近完成,它是当时较早使用真空管作为电路开关的计算机,但是比较遗憾的是他提交的专利申请由于律师玩忽职守一直没有真正提交。
1945年,埃可特和莫奇利在美国军方资助下建造出世界上第一台真正意义上的电子计算机:ENIAC(Electronic Numerical Integrator And Computer,电子数字积分计算机)。虽然它的主要用途是求解微分方程,并进一步计算火炮的弹道,但是它也是一台图灵完备的计算机,具有通用计算的能力,而且采用了数字化、电子化的方式,使它可以在1秒内完成5000次加减法运算,比之前的计算机快100倍。这个大家伙占地面积相当于三居室的公寓面积,重30吨。
当然,这个列表还应该更长,这里远远没有囊括所有为计算机的发明作为不懈努力的探索者的贡献,只是列举了其中一些比较重要的。从中我们可以解读出如下信息:
计算机最初是由于数学计算的需求而产生的,如微积分、对数,以及后来世界大战期间的情报解密、弹道分析等军事用途
伟大的创新通常都是由多个创新者的想法融合而成的结果。它需要远见者和工程师之间的充分协作,那种地下室中的灵光一现通常只出现在故事书里。这也是为什么贝尔实验室、麻省理工等这些地方创新成果不断涌现的原因:这里不但有理想的科研环境,更重要的是有一群各式各样的人才,思想相互交融碰撞。
资源有时比想法发挥更大的作用,在20世纪三四十年代,其实很多计算机方面的先驱都意识到真空管可以大幅提高计算机的性能,但是一个真空管造价数美元,即使一台初级的计算机动辄也需要几百上千个真空管,很少有人能负担得起这笔费用,这就导致康德拉·楚泽,阿塔纳索夫等人制造出来的计算机在可用性上非常受限,而美国军方由于战争的需要才同意资助埃可特和莫奇利大规模使用电子元器件来建造计算机,而且他们充分结合了前人的经验,从而成就了世界上第一台大规模应用的电子计算机,被使用长达10年。这也是为什么在今天在互联网领域风投如此重要的原因。
历史更容易记住那些临门一脚,把事情最终做成的人。在信息革命早期,其实世界各地很多天才探索者都做出了各种各样的尝试,这些尝试最大的价值也许就是给后来者提供成功的经验和失败的教训,而较少被历史铭记。就像我们现在认定爱迪生发明了电灯,莱特兄弟发明了飞机一样,却很少关注在这背后几代人的辛苦付出。但这就是历史。