写巴贝奇和阿达的时候,我是以一种崇拜和欣赏的心态去写的。要知道,我对于高智商的人是没有免疫力的。原因很简单:得不到的总是最好的。
图灵其人
阿兰∙图灵是天才,每次写到他的时候,心里总有点摸不去的悲伤。有人说Apple那缺角的苹果是为了纪念他,当然,也有人说那缺角的苹果只是因为当初某个创始人退出而设计为缺角。我更希望是前者。
可以说,图灵在每个学计算机专业的人心里都有着特殊的地位。那么一位才华横溢的人,为世界和平作了那么大贡献的人,却那么年轻就走了。
先推荐一部电影:《模仿游戏》(The Imitation Game)。
这部电影虽然也介绍了图灵的平生,但重点确实他在他的著名的论文发表之后协助盟军破译德国密码系统“英格玛”,从而扭转二战战局的经历。也正是应为这经历,使得我们对图灵的真实生活状况知之甚少。因为为了当时的需要,他的很多资料都被秘密销毁。其实在参与这个工作之前,图灵在普林斯顿时,冯诺依曼曾经邀请他留在他的实验室,但是图灵却选择了回国。记得我当时看到这里的时候在书的页边上用铅笔写了“如果他当初答应了,结局会是怎样的呢?”。
再推荐一本书:《图灵的秘密——他的生平、思想集论文解读》人民邮电出版社。这本书不仅比较客观和全面的纪录了图灵及当时跟他研究相关的环境之外,详细地分析了图灵的论文《ON COMPUTABLE MUMBERS, WITH AN APPLICATION TO THE ENTSCHEIDUNGSPROBLEM》,中文即为:《论可计算数及其在判定行问题上的应用》。这篇论文用全新的方法证明了判定性问题不可解。他的全新之处就在于构造了一台虚拟的机器,能执行少量的指令,对可计算数进行处理。
图灵机
图灵机一种抽象计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人们进行数学运算。
它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。
图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:
- 在纸上写上或擦除某个符号;
- 把注意力从纸的一个位置移动到另一个位置;
而在每个阶段,人要决定下一步的动作,依赖于 (a) 此人当前所关注的纸上某个位置的符号和(b) 此人当前思维的状态。
为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:
1.一条无限长的纸带 TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0,1,2,... ,纸带的右端可以无限伸展。
2.一个读写头 HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
3.一套控制规则 TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。
4.一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。
因此,图灵机只要根据每一时刻读写头读到的信息和当前的内部状态进行查表,就可以确定它下一时刻的内部状态和输出动作了。只要修改它的程序(也就是上面的规则表),它就可以为你做计算机能够完成的任何工作。因此可以说,图灵机就是一个简单的计算机模型。
图灵机模型信息处理的本质:输入集合、输出集合、内部状态、固定的程序。任何图灵机都可以把输入、输出信息进行编码,任何一个变换也可以最终分解为对01编码的变换,而对01编码的所有计算都可分解成三种基本的布尔运算(与、或、非),所以,用布尔电路可以组合出任意的图灵机。
具体我就不多说了,有兴趣的可以去参看我推荐的这本书。
结论
图灵作为计算机之父,其核心贡献是建立图灵机理论模型。它是计算机科学最核心的理论之一;它与后来的冯诺依曼体系结构也有关系;它为计算机设计指明了方向;它是算法分析和程序语言设计的基础理论。