|
1
106
首先,我想你已经听说了 Church-Turing thesis 好吧,那不是很有用。让我举个例子。有一件事你不能在任何图灵不完整的语言:你不能写一个图灵机器模拟器(否则你可以在模拟图灵机器上编码任何计算)。 仍然 信息量不大。真正的问题是,什么 程序不能用图灵不完全语言编写?好吧,没有人提出一个有用程序的定义,它包括某个地方为一个有用的目的而编写的所有程序,而且它不包括所有的图灵机器计算。因此,设计一种图灵不完全语言来编写所有有用的程序仍然是一个非常长期的研究目标。 现在有几种非常不同的图灵不完全语言,它们在不能做的事情上有所不同。然而,有一个共同的主题。如果您正在设计一种语言,有两种主要方法可以确保该语言是图灵完整的:
让我们看一些非图灵完全语言的例子,尽管有些人可能称之为编程语言。
顺便说一句, Douglas Hofstadter Gödel, Escher, Bach: an Eternal Golden Braid |
|
|
2
6
最直接的答案是:不是图灵完备的机器/语言不能用来实现/模拟图灵机器。这来自图灵完备性的基本定义:机器/语言如果能够实现/模拟图灵机器,那么它就是图灵完备性。 那么,实际意义是什么呢?好吧,有证据表明,任何可以证明是图灵完备的东西都可以解决所有可计算的问题。这意味着任何非图灵完备的东西都有一个缺陷,即存在一些它无法解决的可计算问题。这些问题是什么取决于缺少哪些使系统非图灵完整的特性。
另一个例子是,如果一种语言不支持列表或数组(或者允许您模拟它们,例如使用文件系统),那么它就不能实现图灵机,因为图灵机需要对内存的任意随机访问。因此,这种语言无法解决需要任意随机访问内存的问题。 因此,将一种语言分类为非图灵完备语言所缺少的特性实际上限制了这种语言的实用性。所以答案是,这取决于:是什么使语言非图灵完整? |
|
3
4
一类重要的不适合Coq等语言的问题是那些端接是推测的或难以证明的问题。你可以在数论中找到很多例子,也许最著名的是 Collatz conjecture
这种局限性导致在Coq中用一种不太自然的方式来表达这些问题。 |
|
|
4
3
你不能写一个模拟图灵机器的函数。你可以写一个函数来模拟图灵机
|
|
|
Sudhanva c · 如何提高编码技能?[已关闭] 7 年前 |
|
|
hoffm · 为什么Ruby找不到调用方类中定义的常量? 8 年前 |
|
|
Thamme Gowda · “lambda”关键字的较短替代项? 8 年前 |
|
|
AlphaModder · 有没有带有“不寻常”访问修饰符的编程语言? 10 年前 |
|
|
lucasasecas · 有可能静态地使用动态语言吗? 11 年前 |
|
|
Eugenio Laghi · 仅由括号、加号和感叹号组成的语言 11 年前 |
|
dallin · 数组中的逗号运算符是否有名称? 11 年前 |