“图灵完整性”的完整定义需要无限的记忆。
除了受限于有限(例如100字或16位或32位等)的地址空间之外,编程语言和实现是否有比Turing Complete更好的术语?
答案 0 :(得分:1)
我想,您可以将有限的内存带入定义中。像
这样的东西给定体系结构的编程语言(!)是限制图灵完成,如果每个图灵机都存在一个程序
a)模拟图灵机并返回相同的结果(如果图灵机返回)或
b)在某些时候完全使用至少一个可用的有限资源(例如内存)并返回任意结果。
问题是,这个直观的定义是否真的有帮助,或者假设您的架构具有无限的内存(即使它实际上是有限的)更好。请注意,您甚至不必为了满足有限的图灵完整性(如上所述)而努力,如果您只是进入每次mallocs一个字节的无限循环,那么您找到了 all的程序图灵机。
问题似乎是您无法固定特定于实现的属性。例如,如果你有500K ram,你可以表达一个计算1+1
的程序,但也许你不是,谁知道。
我认为像Haskell和Brainfuck这样的语言(是的,我是认真的)实际上是Turing Complete,因为它们抽象资源。虽然像C ++这样的语言只是限制图灵完全,但是在某些时候指针的地址空间已经耗尽,并且不可能解决任何更多的数据(例如,排序2 ^ 2 ^ 2 ^ 2 ^ 100项目的列表)。
答案 1 :(得分:0)
你可以说实现需要无限的内存才能真正完成,但语言本身没有内存限制的概念。您可以在不更改语言的情况下为百万位计算机或4位计算机创建编译器。