寻找不是图灵完备的语言
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 中看到一个正则表达式,它匹配长度仅为质数的字符串。使用回溯并花费了相当长的时间......以上是关于寻找不是图灵完备的语言的主要内容,如果未能解决你的问题,请参考以下文章