“完整”编程语言的术语?

时间:2011-12-02 20:53:15

标签: terminology turing-complete

“图灵完整性”的完整定义需要无限的记忆。

除了受限于有限(例如100字或16位或32位等)的地址空间之外,编程语言和实现是否有比Turing Complete更好的术语?

2 个答案:

答案 0 :(得分:1)

我想,您可以将有限的内存带入定义中。像

这样的东西
  

给定体系结构的编程语言(!)是限制图灵完成,如果每个图灵机都存在一个程序

     
    

a)模拟图灵机并返回相同的结果(如果图灵机返回)或

         

b)在某些时候完全使用至少一个可用的有限资源(例如内存)并返回任意结果。

  

问题是,这个直观的定义是否真的有帮助,或者假设您的架构具有无限的内存(即使它实际上是有限的)更好。请注意,您甚至不必为了满足有限的图灵完整性(如上所述)而努力,如果您只是进入每次mallocs一个字节的无限循环,那么您找到了 all的程序图灵机。

问题似乎是您无法固定特定于实现的属性。例如,如果你有500K ram,你可以表达一个计算1+1的程序,但也许你不是,谁知道。

我认为像Haskell和Brainfuck这样的语言(是的,我是认真的)实际上是Turing Complete,因为它们抽象资源。虽然像C ++这样的语言只是限制图灵完全,但是在某些时候指针的地址空间已经耗尽,并且不可能解决任何更多的数据(例如,排序2 ^ 2 ^ 2 ^ 2 ^ 100项目的列表)。

答案 1 :(得分:0)

你可以说实现需要无限的内存才能真正完成,但语言本身没有内存限制的概念。您可以在不更改语言的情况下为百万位计算机或4位计算机创建编译器。