图灵机与编程语言

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/abcamus/article/details/79481065

年前看了一本科普书籍–《人工智能简史》,作者尼克,早年任职哈佛和惠普,后投资创业。

这本书描述了两大人工智能的发展方向,一派主张拟生物大脑(譬如人工神经网络),另一派则主张用逻辑和符号系统(譬如自动定理证明)。真正伟大的飞跃以1937年图灵关于可计算数的开创性论文开始,奠定了计算机发展的基础。

图灵机是这样一种装置:有一条无限长的纸带,纸带上有无穷多个格子;一个可以移动的读写头,每次可像制定格子写入0或1(有限状态机没有写入操作);一个有限状态机,可以根据自身的状态和当前纸带格子上是0还是1,指示读写头向左或向右移动一个格子,以及向当前的格子写入内容。
几种计算装置(包括哥德尔的递归函数、lambda演算、post系统)都被证明是和图灵机等价的。这个图灵机本身是可以被编码的,编码后作为另一台图灵机的输入,那么被编码的图灵机其实就是我们现在所谓的软件了,而算法就是指在图灵机上运行指令的过程。这一台能解释图灵机的图灵机称为通用图灵机,现代计算机都是通用图灵机。

回顾现在计算机,CPU都有自己的寄存器保存当前执行的状态,通过对当前指令的翻译来知道下一步的读写操作以及要跳转到哪个位置,然后进入一个新的状态(寄存器集合)。这就是如今广为传播的冯诺依曼体系结构,可以证明这样一个过程和图灵的简单机器是等价的。

后来科学家和工程师们为了开发的方便,发明了编程语言,以前C语言课老师会跟我们讲一大堆关于语言的语法,怎么用,然后去做几个实验。但是很少会讲程序语言是怎么来的,为什么要这么设计。其实编程语言配合编译器完成的工作就是对图灵机的模拟,我们是在通过编程语言制造图灵机。这个图灵机对数据按照特定方式进行处理,即所谓的算法。如果编程语言定义的操作和图灵机等价,那么该语言就是图灵完备的。包括C/C++/Java等常见语言都是图灵完备语言。

这是计算机发展的理论基础,后来又去看了《论可计算数:图灵与现代计算的诞生》,该书把计算机发展的过程详细阐述了一遍,受益颇丰。

猜你喜欢

转载自blog.csdn.net/abcamus/article/details/79481065