首页 > 代码库 > 程序史记:从巴贝奇、爱达到图灵

程序史记:从巴贝奇、爱达到图灵

技术分享

书架上一直放在一本《信息简史》,最近终于读完了。这是一本从信息的视角来描述其进化史的书,一本充满了技术性描述的科普性书籍。也不乏一些有趣的故事,其中就有那么几个人,他们实际是和计算机和程序有关,而计算机和程序在今天这个信息时代早已是信息的载体和处理者了。

十八世纪

查尔斯·巴贝奇(Charles Babbage),90 后,恩,一个十八世纪的 90 后(1791 年生),出生于工业革命的高峰时期。那时英国工业革命的巅峰作品 —— 蒸汽机,在他出生前没几年才刚刚被发明出来。

那时,是一个崇尚机械的年代。人们相信机械的力量是可以做到一切的时代,这源自于工业革命的进步带来了蒸汽机和各种机械装置,将人们从各种劳动中解放了出来。就是在这样的时代背景下,巴贝奇成长起来,开始了对数学制表的机械化研究,并逐渐成为活跃于十九世纪的数学家、发明家和机械工程师。

十九世纪

一天,巴贝奇坐在家里的阳台上休息,不知不觉被对面纺织女工的工作吸引了目光。他不由得看的出了神,他看着纺织女工纺织布匹的过程,把一种纸上的花纹图案通过纺织过程转移到了织物之上。近来,他一直在思考用机械装置进行数学计算,这似乎一下击中了他,看到了曙光。

引发巴贝奇想象的不是布匹的纺织过程,而是将布匹的图案从一种媒介转换到另一种媒介的编码过程。那是一台纺织用的雅卡尔提花机,这台机器通过编码并存储在打孔卡片上的指令进行控制。在这台纺织提花机的启发下,巴贝奇发明了「差分机」,一台能大幅提高乘法运算速度和提高对数计算精度的机器。

1832 年,17 岁的爱达(Ada),在老师的带领下去参观了巴贝奇的「差分机」,并被其深深的迷住了。这是一台能自动计算数学题的机器,而当时爱达正醉心于数学学习。她的母亲为她请的老师摩根正是计算机数学基础布尔代数的创始人之一。那时的英国科学风气盛行,许多妇女都在杂志上发表文章探讨数学问题,而爱达也在那时展现出了非凡的数学天赋。

在见到「差分机」的第二年,爱达和巴贝奇正式见了一次面。当时,巴贝奇奇雄心勃勃的设计了一个新的机器:「分析机」。他将自己的想法和设计详细地讲给爱达听,爱达认真地听完巴贝奇的计划,并仔细看了他的文稿,深深地为之陶醉。她认为这的确是一个将要改变世界的伟大设想,她表示一有机会就将亲身参与这项工作。从此爱达与巴贝奇开启了一段持续十八年的忘年之交。

巴贝奇的「分析机」,它的机械结构被分成了「计算单元」和「存储单元」两个部分。其中「计算单元」不仅内建四则运算,还可以存四组不同的运算方程式,用穿孔卡片(来自雅卡尔提花机的灵感)载入到机器里。从某些方面来说,它的计算、存储、输入输出(I/O)三项分离设计,和今天的计算机设计完全一致。只是可惜他的思想太超前,无论他如何努力游说、路演也没有人投资给他建造这台机器所需的资金。所以,「分析机」的设计仅停留在纸面上,从没做成过实体机。

就是在这样一台从未做成实体,停留在想象和纸面的机器上,爱达开始了她的编程之旅。她设计了一个过程,一组规则以及一系列运算。在一个世纪后,这些过程、规则和运算会被称为一种算法或一个计算机程序。当时,所有有关编程概念的术语,包括:算法、循环、条件、分支、递归,在那个时代都还没有发明出来。而爱达却已深刻的理解了所有这些名字背后的实质。她设想的算法是递归的,它循环运行,巴贝奇曾将这种方式称为“机器咬尾巴——团团转”。

她就是这样为一台还不存在的机器编程,在头脑中编程。这些程序包括计算三角函数程序、级数相乘程序、伯努力数计算程序等等,今天这被视为是“第一套计算机程序”。因此,爱达被世人称为第一位程序员。1981 年,美国国防部把它花了 10 年开发的一种计算机语言命名为 Ada,以此纪念她。

有时觉着历史上的很多天才总是不长命,而爱达还出生于一个天才家庭。她有一个比她更有名的父亲 —— 英国大诗人:拜伦。但父亲在其刚满月不久时就和她母亲离婚,从此离开英国再未相见。拜伦一直想找机会回到英国见见自己的女儿,但人生无奈,爱达 8 岁那年他还没来得及回去,便已离世。有时读着拜伦留下的诗句:

如果我们再相见,事隔经年。我将何以招呼你,以眼泪,以沉默。

在想,如果他们真有再相见时,这也许就是爱达的心境吧。爱达开始和巴贝奇共同构建梦想的那年,她 18 岁,18 年后,爱达因病去世,和拜伦一样都是 36 岁去世。根据她的遗愿,她被葬于诺丁汉郡其父亲身边,终于再见了。在她短暂一生的最后时光,她留下了一个关于程序的梦想:

我以我自己的方式迟早会成为一名独裁者。我现在可不会说,但我希望,它们将是纪律严明、异常和谐的军队 —— 由大量的数构成,伴着军乐以势不可挡的力量行进。

至于巴贝奇的那台分析机,爱达离世后它便逐渐淡出视线,埋尘历史。它在重新被人记起之前,先得被人遗忘。巴贝奇在其生命的最后几年,可能感觉时日无多,再不可能等到这台机器被造出来的那一天,他写道:

如果有人在未被告诫以我的前车之鉴的情况下,试图尝试这项如此了无指望的工作,并通过完全不同的原理或更简化的机械手段而成功实现了一台可与整个数学分析部门相当的机器,那么我不怕把自己的名誉托付给他,因为他肯定会完全理解我当年努力的性质及其成果的价值。

恩,这个人会出现的,但还需要再等一百年。

二十世纪

一个世纪后,1936 年,还在剑桥国王学院就读的阿兰·图灵发表重要论文《论可计算数及其在判定问题上的应用》,正式提出了“算法(algorithms)”和“计算机(computing machines)”这两个核心概念,一直让我们受用到今天。

1950 年,图灵接着发表了论文《计算机器与智能》(Computing Machinery and Intelligence),为后来的人工智能科学提供了开创性的构思。他提出了著名的「图灵测试」:指出如果第三者无法分辨人类与人工智能机器反应的差别,则可以论断该机器具备人工智能。图灵首次从行为主义的角度给出了人工智能的定义。

前两年有部电影《模拟游戏》就是基于图灵的传记改编的,电影实际只刻画了图灵波澜起伏的人生中短短的一小段。而且改编的也不一定完全符合史实,但里面有一段情节倒是很让人触动:图灵闪耀光芒的时期,正是在打第二次世界大战的时代。二战背景下如图灵这样的技术工作者,处在一个两难境地 —— 破解不了德军密码,每时每刻都有人在战场上死亡;最后破解了密码,获得了情报,却只能看着却不能告知友军转移。

图灵也许就是巴贝奇一直寄希望出现的人,值得他托付名誉的人。用一种和他设想的完全类似的原理,但却非机械化的手段,成功设计出了可以媲美十九世纪整个数学分析部门的计算机器。「图灵机」是图灵在头脑思维中的构想,但很快以此为基础的计算机就被发明了出来。在还没有计算机的时代,图灵不但探索了计算机能做的事,还指出了计算机永远不能做到的事。他为计算机领域奠定了不可埋没的基础,没有他也许就没有计算机的今天。

从巴贝奇的分析机到图灵的计算机正好一百年,而从图灵提出的人工智能距今已快 70 年,未来二三十年会怎样呢?今天人们对人工智能的追捧,似乎就像巴贝奇年代对机械的崇尚,谁又来书写二十一世纪的传奇呢?


写点文字,画点画儿,记录成长瞬间。
微信公众号「瞬息之间」,既然遇见,不如一起成长。
技术分享

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    程序史记:从巴贝奇、爱达到图灵