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

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

十八世纪

查尔斯·巴贝奇(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 年,未来二三十年会怎样呢?今天人们对人工智能的追捧,似乎就像巴贝奇年代对机械的崇尚,谁又来书写二十一世纪的传奇呢?



写点文字,画点画儿,记录成长瞬间。

微信公众号「瞬息之间」,既然遇见,不如一起成长。

时间: 2024-12-24 12:40:52

程序史记:从巴贝奇、爱达到图灵的相关文章

统计史记的字数

好久没有读书了,突然想读一读历史来提高一下自己的逼格.然后就到网上下载了<史记>原文全文. 因为不知道是不是全集的,所以突发奇想,想统计一下总的文字数量,看看是不是基本齐全.OK ,说干就干,能使用的语言很多,C# ,PHP ,JAVA ,C++ ,PYTHON, VB , 都可以.用哪一种呢?python 刚接触,挺新鲜,就你了.没想到,一下子就掉坑里了(如果上天再给我一次选择的机会,我一定选择Java,没想到python 2.7 处理中文真费劲). 决定用python 了,先选个版本吧,电

《史记》为二十四史之首与其他各史相比明显高出一筹

两千多年前,一位文人遭受了莫大的屈辱,却"不堕凌云之志",以血作墨,心灵为纸,完成了堪称"史家之绝唱,无韵之离骚"的历史巨作.这就是司马迁和他的<史记>. 一位普通史官与一部旷世之作,是什么将他们融成一体?谁启动了<史记>的千古盛大?又是谁改变了司马迁的一生? <史记>记载了上起黄帝下至汉武帝约两千多年的历史,开创了中国史传文学的先河.在<史记>之前,中国的历史书只有两类,一类是编年体,按年代来记述历史,其中最有名的,

《趣读史记:不可不知的49个史记人物》—— 读后总结

这本书感觉就是吐槽的呢! 没读过史记,对汉.春秋的历史也不是很了解.所以人物都不是很熟,按照这种人物来讲述的小故事,总感觉看完就忘. 不过还是有几个印象深刻的,比如: 1 金屋藏娇 这里所说的娇是长公主的女儿阿娇,最后嫁给了刘彻,成了皇后. 当年刘彻说,若得阿娇,必以金屋贮之.最后得出了金屋藏娇,其实是指吃醋嫉妒争宠. 2 端午节 是南方是纪念伍子胥,而不是屈原. 其他的还真没记住啥,以后还得补习一下其他朝代的历史.

[电影]《大史记》:“馒头”的榜样

[电影]<大史记>:“馒头”的榜样     <大史记>的作者已与胡戈取得联系,准备根据陈凯歌的反应,制作真正的<大史记2> “<一个馒头引发的血案>就作品本身而言,是一个简单.粗糙,制作水平不高的作品.”<分家在十月>的作者之一 Y说,他认为原因是“写作能力不强,片子不精致,没有足够的专业技术.比如把真田广之安排成城管,包袱就用得太直接,反而不好笑了”.     讲述电视流氓自己的故事 Y十分不理解,网络传播者为什么会把<分家在十月>

码农带你读《史记》

之前很多园友讨论过读书的话题,我平常除了工作需要读写技术类书籍外,其他时间读的最多也许就是历史类的书了,非常高兴也在这里和大家一起讨论关于读书的话题. 我要给大家推荐一本书<史记>,在我们的普遍观点中好像历史类的书籍都是讲的王侯将相,乍感觉离我们很遥远,跟我们普通百姓的生活好像关联不大,其实不然. 羹颉侯 读<史记>其实也是在读生活,为什么这样说呢?我来给大家讲个故事. 据<史记 楚元王世家>记载,刘邦年轻时不是太循规蹈矩,年轻时,在秦朝老犯事,秦警察经常抓他,所以他老

你好,C++(30)“大事化小,小事化了”5.4.3 工资程序成长记:函数

5.4.3 工资程序成长记:函数 自从上次小陈“程序员”的工资程序得到老板的夸奖,口头许诺给他涨工资以后,老板再也没有找过他,涨工资的事自然也就没有下文了.这天,老板又突然召他去办公室.这下可把小陈高兴坏了,心想盼星星盼月亮终于盼来涨工资这一天了.于是赶紧到了老板的办公室.可他刚进门就发现情况有点不对,只见老板阴沉着脸坐在他那张硕大的老板椅上,满头大汗,手指还在不停地敲击着键盘输入着什么.一见到小陈进来,就好像见到仇人似的,劈头盖脸地来了一句: “小陈啊,你这个工资程序怎么搞的,怎么每次都要重新

(转载)你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作

你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作 4.4  从语句到程序 了解了各种表达式和语句之后,就相当于掌握了写作文要用到的词语和句子,但是,仅有词语和句子是无法构成一篇有意义的文章的.要完成一篇文章,先需要确定这篇文章的结构,是先分述再总述,还是逐层递进论述.定好结构后再按照结构的要求将词语和句子安排到合适的位置,这样才能写出一篇有意义的词句通顺的文章.编写程序就像写文章一样,也同样需要先根据需要处理的事务确定程序的流程控制结构,然后再将那些零

你好,C++(23) 4.4.2 工资程序成长记:用数组处理批量数据,用循环结构执行重复动作

4.4  从语句到程序 了解了各种表达式和语句之后,就相当于掌握了写作文要用到的词语和句子,但是,仅有词语和句子是无法构成一篇有意义的文章的.要完成一篇文章,先需要确定这篇文章的结构,是先分述再总述,还是逐层递进论述.定好结构后再按照结构的要求将词语和句子安排到合适的位置,这样才能写出一篇有意义的词句通顺的文章.编写程序就像写文章一样,也同样需要先根据需要处理的事务确定程序的流程控制结构,然后再将那些零散的语句串联起来描述一个完整的处理事务的过程,从而将多条零散的语句组织成可以完成一定功能的完整

《史记》摘录

摘自网络. 祸不妄至,福不徒来. 出自<史记·龟策列传> 解释:灾祸不会胡乱发生,幸福不会徒然到来. 天下熙熙,皆为利来:天下攘攘,皆为利往. 出自<史记·货殖列传> 解释:天下人吵吵嚷嚷,嘈杂喧闹,都是为了各自的私利而来:天下人碰碰撞撞,拥挤奔忙,都是为了各自的私利而往. 当断不断,反受其乱. 出自<史记·齐悼惠王世家> 解释:应当采取果断行动时没有果断采取,贻误了时机,反而会遭受到祸乱. 守经事而不知其宜,遭变事而不知其权. 出自<史记·太史公自序> 解