Von-Neumann架构描述了存储程序计算机,其中指令和数据存储在存储器中,并且机器通过改变其内部状态来工作,即指令对某些数据进行操作并修改数据。因此,系统本身就存在状态。
图灵机架构通过操纵磁带上的符号来工作。即存在具有无限数量的槽的磁带,并且在任何一个时间点,图灵机都在特定的槽中。根据在该插槽读取的符号,机器可以更改符号并移动到不同的插槽。所有这些都是确定性的。
这两个型号之间有什么关系吗?冯·诺伊曼模型是基于图灵模型还是受其启发?
我们可以说图灵模型是Von Newman模型的超集吗?
功能编程是否适合图灵模型?如果是这样,怎么样?我假设 功能性编程并不适合冯·诺伊曼模型。
答案 0 :(得分:43)
图灵机是发明的理论概念,用于在数学上探索可计算问题的领域,并获得描述这些计算的方法。
Von-Neumann架构是一个用于构建实际计算机的架构(实现图灵机在理论上描述的内容)。
函数式编程基于lambda-calculus,它是另一种描述计算的方法,或者更准确地说是可计算的函数。虽然它使用了一种完全不同的方法,但它对图灵机同样有用(据说它完全)。
每个lambda-calculus程序(术语)T
仅使用
x
λx. T
T T
尽管是无状态的,但对于计算机可以执行的每个计算,这都是sufficient。图灵机和lambda术语可以相互模拟,Von-Neumann计算机可以执行两者(除了技术限制,如提供无限存储,图灵机可能需要)。
但是由于其无状态和更抽象的性质,与命令式程序相比,功能性程序在Von-Neumann计算机上的效率可能更低,更不“直观”遵循二进制,内存和更新的风格
答案 1 :(得分:10)
通常,一个引用Von Neumann架构,与Harvard架构形成对比。前者具有以相同方式存储的代码和数据,而后者具有用于代码和数据的单独的存储器和总线路径。所有现代台式电脑都是Von Neumann,大多数微控制器都是哈佛。两者都是试图模仿理论图灵机的真实设计的例子(这是不可能的,因为真正的图灵机需要无限的内存)。
答案 2 :(得分:4)
图灵模型定义了计算能力而没有深入实现,没有人会创建看起来像图灵机的计算机。 (除了爱好者http://www.youtube.com/watch?v=E3keLeMwfHY)。
图灵模型不是架构。
Von Neuman是如何构建计算机的指南。它没有说明计算能力。根据指令集,生产的计算机可能是也可能不是图灵完成(手段可以解决与图灵机相同的任务)
函数式编程(lambda演算)是图灵完备的另一种计算模型,但不能原生地适用于冯·诺依曼架构。
答案 3 :(得分:4)
我不知道图灵机和冯诺伊曼架构之间有什么历史关系。不过,我确信冯·诺伊曼在开发冯·诺伊曼建筑时,已经了解图灵机。
然而,就计算能力而言,图灵机和冯·诺伊曼机器是等价的。任何一方都可以模仿另一方(IIRC,在图灵机上模拟von Neuman程序是O(n ^ 6)操作)。以lambda演算形式的函数式编程也是等价的。事实上,至少与图灵机一样强大的所有已知计算框架都是等价的:
可以使用任何这些模型计算的函数集没有区别。
函数式编程源自lambda演算,因此它不直接映射到Turing或von Nemuan机器。他们中的任何一个都可以通过仿真运行功能程序,hoewver。我认为图灵机的映射可能比冯诺伊曼机器的映射更繁琐,所以我对第三个问题的回答是“不,实际上它更糟糕。”
答案 4 :(得分:0)
图灵“模型”根本不是建筑模型。这只是一个不存在的机器,图灵假设它是decision problem证据的载体。