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

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

【问题讨论】:

    标签: turing-machine turing-complete computer-science turing-machines 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 中看到一个正则表达式,它匹配长度仅为质数的字符串。使用回溯并花费了相当长的时间......
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 2010-10-03
    • 2011-11-11
    • 1970-01-01
    • 2018-04-12
    • 2016-02-23
    • 1970-01-01
    • 2012-01-02
    相关资源
    最近更新 更多