图灵机vs冯·诺依曼机器

背景

Von-Neumann体系结构描述了stored procedures的计算机,其中指令和数据被存储在存储器中,并且机器通过改变其内部状态来工作,即指令操作一些数据并修改数据。 从本质上讲,系统中维护着状态。

图灵机架构通过操纵磁带上的符号来工作。 即存在无限数量插槽的磁带,并且在任何一个时间点,图灵机处于特定插槽中。 根据在该插槽读取的符号,机器可以更改符号并移动到不同的插槽。 所有这些都是确定性的。


问题

  1. 这两种模式有什么关系吗? 冯·纽曼模型是基于图灵模型还是基于图灵模型?

  2. 我们可以说图灵模型是冯·纽曼模型的超集吗?

  3. 函数式编程是否适合图灵模型? 如果是这样,怎么样? 我认为function编程不适合冯·诺依曼模型。

图灵机是发明的理论概念,以math方式探索可计算问题的领域,并获得描述这些计算的方法。

Von-Neumann架构是构build实际计算机的架构( 实现图灵机理论描述的)。

函数式编程基于lambda演算 ,这是描述计算的另一种方法,或者更确切地说是可计算的函数。 虽然它使用了一种完全不同的方法,但它对图灵机(据说是彻底完成 )同样强大。

每个lambda-calculus程序(term) T只是使用一个组合来编写的

  • x这样的variables
  • λx. T这样的匿名函数λx. T λx. T
  • function应用TT

尽pipe是无状态的,但对于计算机可以执行的每个计算而言,这是足够的。 图灵机和lambda术语可以互相模拟,而冯·诺伊曼(Von-Neumann)计算机可以同时执行 (除了提供图灵机可能需要的无限存储等技术限制外)。

但是由于它们的无状态和更抽象的性质,function程序可能效率较低,而且与那些遵循二进制,内存和更新风格的命令程序相比,冯·诺依曼计算机上的“直觉”更不直观。

通常一个是指冯·诺依曼结构,与哈佛结构形成对比。 前者具有以相同方式存储的代码和数据,而后者具有用于代码和数据的单独的存储器和总线通路。 所有现代台式电脑都是冯诺依曼,大多数微控制器都是哈佛。 两者都是尝试模拟理论型图灵机(真正的图灵机需要无限存储器是不可能的)的真实世界devise的例子。

图灵模型定义的计算能力没有深入实施,没有人会创造出像图灵机字面上的计算机。 (除了发烧友http://www.youtube.com/watch?v=E3keLeMwfHY )。

图灵模型不是体系结构

冯·纽曼是指导如何build立电脑。 它没有提到计算能力。 根据指令集生产的计算机可能或不可能是图灵完成(手段可以解决与图灵机相同的任务)

函数式编程(lambda calculus)是另一种计算模型,它是图灵完备的,但不能在本地适应冯诺依曼体系结构。

我不知道图灵机和冯·诺依曼架构之间有什么历史关系。 但是,我确信,冯·诺依曼在开发冯·诺依曼架构的时候已经意识到了图灵机。

然而就计算能力而言,图灵机和冯·诺依曼机是等价的。 任何一个人都可以模拟另一个(IIRC,在图灵机上模拟冯·诺依曼程序是O(n ^ 6)操作)。 lambda演算forms的函数式编程也是等价的。 实际上,至less与图灵机一样强大的所有已知的计算框架是相同的:

  • 图灵机
  • Lambda微积分(函数式编程)
  • 冯·诺依曼机器
  • 部分recursion函数

这些模型中可以计算的一组函数没有区别。

函数式编程来自lambda演算,因此它不直接映射到Turing或von Nemuan机器。 他们中的任何一个都可以通过仿真来运行function程序。 我认为图灵机的映射可能比冯·诺依曼机器的映射更为单调,所以我对第三个问题的回答是“不,实际上它更糟糕”。

图灵“模型”根本不是一个build筑模型。 图灵假设这只是一个不存在的机器,作为他certificate决策问题的工具 。