图灵完备是什么意思?

你能不能给出一个简单的解释,而不是过多的理论细节?


当前回答

这是最简单的解释

艾伦·图灵创造了一台机器,它可以接收程序,运行程序,并显示结果。但是他必须为不同的程序创造不同的机器。所以他发明了“通用图灵机”,可以接收并运行任何程序。

编程语言类似于这些机器(尽管是虚拟的)。他们获取程序并运行它们。现在,一种编程语言被称为“图灵完备”,如果它可以运行图灵机在足够的时间和内存下可以运行的任何程序(无论哪种语言)。

例如:假设有一个程序需要10个数字并将它们相加。图灵机可以很容易地运行这个程序。但是现在想象一下,由于某种原因,您的编程语言不能执行相同的加法。这将使它成为“图灵不完整”(可以这么说)。另一方面,如果它能运行通用图灵机能运行的任何程序,那么它就是图灵完备的。

大多数现代编程语言(如Java、JavaScript、Perl等)都是图灵完备语言,因为它们都实现了运行程序所需的所有功能,如加法、乘法、if-else条件、返回语句、存储/检索/擦除数据的方法等等。

更新:你可以在我的博客文章中了解更多:“JavaScript是图灵完备的”-已解释

其他回答

以下是最简单的解释:

图灵完备系统指的是这样一个系统,在这个系统中,可以编写程序来找到答案(尽管不保证运行时间或内存)。

所以,如果有人说“我的新东西是图灵完备的”,这意味着在原则上(尽管通常不是在实践中)它可以用来解决任何计算问题。

有时候这是个玩笑……有人用vi写了一个图灵机模拟器,所以可以说vi是世界上唯一需要的计算引擎。

图灵机要求任何程序 能进行条件测试。这是最基本的。

考虑到一个播放器钢琴卷。钢琴播放器可以 演奏一段非常复杂的音乐, 但是从来没有任何条件逻辑 音乐。它不是图灵完备的。

条件逻辑既是力量也是 图灵完备机器的危险

钢琴的滚动每次都保证会停止。 对于TM来说,没有这样的保证。这 被称为“停止问题”。

这是最简单的解释

艾伦·图灵创造了一台机器,它可以接收程序,运行程序,并显示结果。但是他必须为不同的程序创造不同的机器。所以他发明了“通用图灵机”,可以接收并运行任何程序。

编程语言类似于这些机器(尽管是虚拟的)。他们获取程序并运行它们。现在,一种编程语言被称为“图灵完备”,如果它可以运行图灵机在足够的时间和内存下可以运行的任何程序(无论哪种语言)。

例如:假设有一个程序需要10个数字并将它们相加。图灵机可以很容易地运行这个程序。但是现在想象一下,由于某种原因,您的编程语言不能执行相同的加法。这将使它成为“图灵不完整”(可以这么说)。另一方面,如果它能运行通用图灵机能运行的任何程序,那么它就是图灵完备的。

大多数现代编程语言(如Java、JavaScript、Perl等)都是图灵完备语言,因为它们都实现了运行程序所需的所有功能,如加法、乘法、if-else条件、返回语句、存储/检索/擦除数据的方法等等。

更新:你可以在我的博客文章中了解更多:“JavaScript是图灵完备的”-已解释

图灵完备意味着它至少和图灵机一样强大。这意味着任何可以被图灵机计算的东西都可以被图灵完备系统计算出来。

目前还没有人发现比图灵机更强大的系统。因此,就目前而言,说一个系统是图灵完备的,就等于说这个系统与任何已知的计算系统一样强大(参见丘奇-图灵论文)。

在大多数程序员熟悉的实际语言术语中,检测图灵完整性的通常方法是该语言是否允许或允许模拟嵌套的无界while语句(与具有固定上界的pascal风格for语句相反)。