如果一种语言有控制结构和变量,但不支持数组、列表、内存访问和分配等,它能是图灵完备的吗?
也许如果您可以创建的变量数量没有限制,您可以通过创建变量来模拟数组,例如array_1
, array_2
, ... array_6000
并手动循环它们,并以某种方式创建复杂的数据结构和递归?
Edit:即使您无法通过名称操作访问变量(array_10+i
不允许)?
当然。看一下拉姆达演算 http://en.wikipedia.org/wiki/Lambda_calculus,这是我见过的最小的图灵完备语言之一。基本上,您拥有的只是 lambda(函数文字);没有赋值,没有声明,没有数据结构。这一切都非常非常瘦身。
但是,您可以通过将函数链接在一起来模拟线性数据结构,例如列表。它变得相当冗长,但它肯定是可能的,并且比拥有大量顺序命名的变量要好得多。
一般来说,一种语言是否图灵完备与它是否有数组无关。像 SML 和 Haskell 这样的函数式语言缺乏数组,就像 Lambda Calculus 一样,而这些实际上是有用的语言!说一种语言是“图灵完备”只是说不存在不能用该语言表达的图灵可计算函数的另一种方式。这是一个令人惊讶的宽松资格,允许许多完全不切实际的语言(例如 Lambda 演算)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)