Functional programming 这意味着lambda演算等价于图灵机

Functional programming 这意味着lambda演算等价于图灵机,functional-programming,computation-theory,lambda-calculus,turing-machines,computability,Functional Programming,Computation Theory,Lambda Calculus,Turing Machines,Computability,我正试图了解lambda演算,以及它与语言、编译器和二进制代码的关系。lambda演算与图灵机等价的实际含义是什么?它在哪里真正表现出来 我不明白lambda演算如何取代图灵机作为计算的理论模型。图灵机是关于顺序指令来改变状态的,而lambda演算是关于表达式求值的。它更抽象,就像它自己的一种编程语言,而不是如何实际计算某些东西,使事情发生的模型。或者让我们这样说:lambda演算就像是路线图,而图灵机就像是汽车模型。如何将这两者视为等价物?有可能在硬件上运行软件而不实现图灵机器吗 例如,lis

我正试图了解lambda演算,以及它与语言、编译器和二进制代码的关系。lambda演算与图灵机等价的实际含义是什么?它在哪里真正表现出来

我不明白lambda演算如何取代图灵机作为计算的理论模型。图灵机是关于顺序指令来改变状态的,而lambda演算是关于表达式求值的。它更抽象,就像它自己的一种编程语言,而不是如何实际计算某些东西,使事情发生的模型。或者让我们这样说:lambda演算就像是路线图,而图灵机就像是汽车模型。如何将这两者视为等价物?有可能在硬件上运行软件而不实现图灵机器吗


例如,lisp编译器和语言如何与lambda演算相关?lambda演算在哪一层实现?从lambda演算的定义来看,实现是纯的吗?lambda演算背后的理论在哪里以及如何将语法转换为运行的二进制?例如,在lambda演算中,数字被编码为应用于其他函数n次的特殊函数。然而,在语法中,我们使用数字文字。所有这些公理在哪里使用?

所有这些基础语言都是在计算机出现之前的时代引入的。整个研究的重点在于描述一类(数值)函数的特征,这些函数在算法意义上看起来“直观”可计算,而不一定是由自动设备实现的。现在,事实证明,lambda演算和图灵机,以及许多其他计算模型,如组合逻辑、后系统、广义递归函数等,精确地表达了同一类可计算函数。这激发了丘奇的论点

我同意你的看法,图灵机器(像随机存取机器)有更大的优势 与其他模型相比,具有建筑风格。 事实上,这正是让戈德尔信服的原因,他起初有点怀疑 对丘奇的论点的有效性表示怀疑

我也同意你的观点,lambda演算不能取代图灵机器作为计算的理论模型:在这种运算中没有明显的收获

同时,lambda微积分很有趣,而图灵机是致命的 没趣的这很有趣,正是因为它与图灵极为相反 机器。我认为有人可以合理地说,这是最高水平 曾经设想过的计算模型(可能永远也不会) 是)。这就是为什么它对每个人来说都是一种具有挑战性和教育性的语言
程序员。

在可计算性理论中,两种理论计算模型之间的等价性意味着它们可以解决同一组问题。在图灵机器中可以计算的任何东西,都可以使用Lambda演算进行计算,反之亦然

我们如何证明这一点?如果我们可以用lambda演算来模拟一个图灵机,那么很明显,lambda演算可以计算出图灵机所能计算的一切。如果我们能在图灵机上求解lambda演算,那么反过来也是正确的

这两个模型都是可能的,因此可以说这两个模型是等价的

当然,在实践中,对于某些用例,一个模型可能更实用。今天的计算机是基于RAM状态模型的,而RAM状态模型又从图灵机器的思想中为其理论提供了基础。Lambda演算确实是非常抽象的,而且它本身并不容易在物理硬件中实现。然而,这两个模型都存在于同一计算类中,它们可以解决相同的问题,因此被称为等价的。

是一个很好的起点。