寻找不是图灵完备的语言

Posted

技术标签:

【中文标题】寻找不是图灵完备的语言【英文标题】:Looking for languages that are not Turing complete 【发布时间】:2011-04-05 17:53:39 【问题描述】:

我对什么是 turing-machine 和 turing-complete 语言了解一些,但为了更好地理解,有人可以举一些图灵不完备的语言示例吗? (甚至可能不是图灵的机器?)

【问题讨论】:

【参考方案1】:

Regular languages——可以描述为正则表达式的那些——是not Turing complete。

像 XML 和 JSON 这样的标记语言(用于描述数据,而不是计算)不是图灵完备的。

【讨论】:

数据和计算之间的区别很棘手。 LaTeX 是图灵完备的,尽管它是一种文本处理语言。 @Phillip:不完全公平,因为 LaTeX 可以访问所有旨在(至少部分)成为通用语言的 TeX。请参阅 Knuth 的页面,他在其中回答了“您最喜欢的语言是什么?”这个问题。【参考方案2】:

正则表达式,在正式定义中,仅包含:

串联 (ab) 无限重复 (a*) 交替(a|b) 分组 ( (ab)|(cd) )

只能识别常规语言。图灵完备的编程语言可以识别递归枚举语言。

例如,正则表达式无法告诉您字符串是否由匹配的括号对组成:例如,()(()) 被接受,()((())() 被拒绝,而图灵完备的编程语言可以。

(请注意,现代编程语言中的正则表达式比正则表达式的正式学术定义更强大。有些甚至可能是图灵完备的。)

【讨论】:

例如,Perl 正则表达式可以是递归的:catonmat.net/blog/recursive-regular-expressions php 正则表达式有 /e 标志来计算替换中的 PHP 表达式。 曾经在 Perl 中看到一个正则表达式,它匹配长度仅为质数的字符串。使用回溯并花费了相当长的时间......

以上是关于寻找不是图灵完备的语言的主要内容,如果未能解决你的问题,请参考以下文章

手动实现一门图灵完备的编程语言——Brainfuck

手动实现一门图灵完备的编程语言——Brainfuck

“非图灵完备”到底意味着什么

GPU着色器图灵完备吗

C++ 预处理器元编程图灵完备吗?

BSV 上的图灵完备的“规则110”