巴贝奇首先为分析机构思了“存贮库”和“运算室”。此外,巴贝奇也构思了送入和取出数据的机构,以及在“存储库”和“运算室”之间运输数据的部件。一个多世纪过去后,现代计算机的结构几乎就是巴贝奇分析机的翻版,只不过它的主要部件由机械变成了集成电路。因此,现代人给巴贝奇封了一个“计算机之父”的称号。
巴贝奇的另一个重要的贡献是在计算机控制中加入了分支控制,使得计算机和计算器分道扬镳。条件控制非常重要,软件工程师都非常熟悉,程序的流程有3类:顺序、分支、循环,分支控制使得计算机可以做很多事,而不像计算器只能做一件事。
巴贝奇不是一个人在战斗,他在研制计算机的过程中,找到了一个志同道合的女助手,她就是英国著名浪漫派诗人拜伦的女儿——爱达·拜伦(也叫爱达·拉弗雷斯,同丈夫姓)。
5.第一位程序员——居然是个女人
爱达出生不久后父母离异,爱达由母亲抚养成人。深受数学家母亲的影响,她从小就酷爱数学,一直醉心于数学研究。在当时,巴贝奇的机器被认为是没有价值的,是个只会烧钱的废物,巴贝奇拉不到经费,也得不到人们的理解,不过爱达却非常清楚这项工作的意义。爱达负责为这台还没有建成的机器写程序,她创造了子程序、循环的概念。后来美国国防部开发了一种面向对象的高级编程语言,为了纪念这位计算机软件的开山之祖,美国国防部将这种语言命名为ADA(爱达)。ADA语言至今还在计算机的某些领域发挥着重要作用,而爱达也被人们尊称为世界上第一个程序员。
程序员这个职业一般被认为是男性职业,就像我所在的公司,写软件的男女比例都快到10:1了,不想第一位程序员却是个女人,而且是个诗人的女儿,历史真是把玩笑开大了。
巴贝奇和爱达的想法超前世界太多年,当时人们对电还没有太深刻的认识,机械水平也不能支撑分析机的实现,他们终其一生也没法制造出自己所设想的机器。
直到大半个世纪之后,在哈佛大学攻读博士学位的美国青年霍德华·艾肯(H·Aiken),
从图书馆积满灰尘的书刊里发现了分析机论文。巴贝奇仿佛还在同他娓娓交谈,为他讲解那台机器的结构,目光中充满着期待的神色。以艾肯所处时代的科技水平,已经能够实现巴贝奇的夙愿。为此,他写了一篇《自动计算机的设想》的建议书,提出要用机电方式,而不是用纯机械方法来构造新的“分析机”。
1944年,在IBM公司提供的100万美元资助下,艾肯研制出著名的MarkⅠ机电式计算机,设计思想几乎就是巴贝奇分析机的翻版,MarkⅠ当时就被用来计算原子核裂变过程。1946年,艾肯发表文章写道:“这台机器能自动实现人们预先选定的系列运算,甚至可以求解微分方程。”这是对巴贝奇预言最好的验证。事隔多年后,已经担任大学教授的艾肯博士谈起巴贝奇其人其事,仍然惊叹不已,他感慨地说:“假如巴贝奇晚生75年,我就会失业。”
巴贝奇和爱达是不幸的,他们生前所作的工作得不到认可,他们将种子种在了地下,辛勤耕耘,但收获的却不是他们。在巴贝奇近80年的奋斗生涯里,屡战屡败,屡败屡战,他始终不放弃自己对崇高理想的追求。正如他经常所说的那样:“不管今天怎样被认为是无用的知识,到后世将会变成大众的知识,这就是知识的生命力。”
巴贝奇和爱达过得很悲催,不过悲催的不仅是他们,还包括下面这位。
6.图灵机
计算机领域一直缺少一个奖项。诺贝尔奖一般只授予基础研究的人,像计算机这样偏向于应用的领域却是很难获奖。1966年,美国计算机协会(Association for Computer Machinery,ACM)设立图灵奖,专门奖励那些对计算机科学研究与推动计算机技术发展有卓越贡献的杰出科学家,图灵为什么能担当大任,因为他是用理论证明计算机可行的第一人。
阿兰·图灵于1912年6月23日出生于英国伦敦。图灵很小的时候就显示出了自己的科学家天分,3岁时,他把玩具木头人的胳膊掰下来种植到花园里,想让它们能长出更多的木头。8岁时,图灵写了一部“科学著作”:《关于一种显微镜》,除了错了几个单词外,还算是有板有眼。
1936年,24岁的图灵发表了一篇论文《On computable numbers, with an application to the entscheidungs problem》(论可计算数及其在判定问题中的应用)。这篇论文被誉为是阐明计算机原理的开山之作。
图灵在这篇论文中,详细描述了一项计算任务是怎么用一种计算机器(Computing Machine)来完成的。下图为图灵机的基本组成: