【问题标题】:Criteria to determine if it's a programming language判断它是否是编程语言的标准
【发布时间】:2011-06-18 12:18:40
【问题描述】:

判断 XY (或不是所需的标准或基本特征是什么? >) 一种编程语言?

我已经阅读了一些资料(Is HTML considered a programming language?Turing completeothers),得出的结论是语言或语法必须是图灵完备才能考虑一种编程语言。它是否正确?够了吗?

我如何确定某件事是否是图灵完备的?有什么具体的标准吗?

是否拥有足以被认为是图灵完备的流控制结构(条件语句和循环)?

【问题讨论】:

    标签: programming-languages turing-complete


    【解决方案1】:

    “编程语言”这个词有点模糊。正则表达式是否构成编程语言?大多数程序员都会说是,即使正则表达式不完整。

    至于图灵完备,我不是专家,但我认为有条件分支和无限堆栈就足够了(因此真机只近似图灵完备)。

    编辑:经过一番研究,我发现这还不够。您至少需要两个堆栈和一些最少数量的状态(以及一个状态转换表)。

    也许更实际的衡量标准是,如果可以记住任意数量的状态和执行循环,那么它可能是图灵完备的。

    【讨论】:

      【解决方案2】:

      存在不是图灵完备的编程语言。有关非图灵完备语言的一些示例,请查看:Practical non-Turing-complete languages?

      使用非图灵完备的语言的一个优势可能是它可能足以执行您需要的任务,同时又足够简单,可以让您证明程序的属性,否则您无法做到证明。例如,这在知道程序将无错误运行至关重要的情况下可能很有用。

      究竟是什么构成了编程语言有点模糊,但可以说它是一种可以表达计算的语言。如果我们看一下 HTML,你不能创建一个计算任何东西的文档。它只是告诉浏览器页面的外观。需要注意的重要部分是,它不会计算任何新内容。

      正如马塞洛所说,它非常模糊。

      至于判断一个语言是否图灵完备,我给你提这个问题:What are practical guidelines for evaluating a language's "Turing Completeness"?

      【讨论】:

      • 函数式程序不计算任何东西;它告诉结果应该是什么。像 Prolog 这样的逻辑编程语言也是如此。从语言理论的角度来看,编程语言的唯一要求是它存在一个明确的语法,因此任何有效序列都有一个单一的句法结构。所述结构的含义取决于口译员或笔译员;一个漂亮的打印机、一个指标分析器和一个编译器,为同一个 程序 赋予不同的含义(一个漂亮的打印机不关心不匹配的类型和操作,f.i.)。
      • TCP协议是一种编程语言。
      【解决方案3】:

      判断 X 或 Y 是(或不是)编程语言所需的标准或基本特征是什么?

      正如 Marcelo Cantos 已经说过的那样,它有些模糊,特别是因为某些领域特定语言(DSL;http://en.wikipedia.org/wiki/Domain-specific_language)不是图灵完备的,但也经常被认为是编程语言。

      我如何确定某个东西是否是图灵完备的?有什么具体的标准吗?

      确定编程语言是否图灵完备的一种方法是在其中编写图灵机(或 Lambda 演算的实现)。

      另一种方法是证明所有的 mu 递归函数 http://en.wikipedia.org/wiki/%CE%9C-recursive_function 可以通过编程语言计算。

      由于可以证明命令式编程语言是图灵完备的,如果存在变量赋值、表示数字 0 的方法、后继函数、前驱函数以及表示 while 循环的可能性,这是另一种方式.

      证明一种编程语言不是图灵完备的一种有时使用的方法(由于显而易见的原因并不总是有效)是检查所有程序是否终止;如果是,那不可能。

      【讨论】:

        【解决方案4】:

        让我们考虑一下这些具体定义的后果:

        图灵完备语言是一种编程语言:CSS becomes a programming language

        一种编程语言必须是图灵完备的:也许吧,但是programs can be written otherwise

        现在有了一个更好的定义:一种编程语言是一种可以用来编写程序的语言

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-12
          • 2020-04-04
          • 2011-01-07
          • 2014-04-26
          • 1970-01-01
          • 2012-05-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多