Programming languages 确定是否为';它是一种编程语言

Programming languages 确定是否为';它是一种编程语言,programming-languages,turing-complete,Programming Languages,Turing Complete,判断X或Y是否为(或是否为)编程语言所需的标准或基本功能是什么 我读了一些书(、和),得出了这样的结论:一种语言或语法必须是图灵完备的,才能被视为编程语言。这是正确的吗?够了吗 我如何确定某个东西是否是图灵完备的?有什么具体的标准吗 对流结构(条件语句和循环)的控制是否足以被视为图灵完备?术语“编程语言”有点模糊。正则表达式是否构成一种编程语言?大多数程序员会说是的,即使正则表达式不是图灵完全的 至于图灵完备性,我不是专家,但我认为有一个条件分支和一个无限堆栈就足够了(因此,真正的机器只有近似的

判断X或Y是否为(或是否为)编程语言所需的标准或基本功能是什么

我读了一些书(、和),得出了这样的结论:一种语言或语法必须是图灵完备的,才能被视为编程语言。这是正确的吗?够了吗

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

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

术语“编程语言”有点模糊。正则表达式是否构成一种编程语言?大多数程序员会说是的,即使正则表达式不是图灵完全的

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

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


也许更实际的标准是,如果你能记住任意数量的状态和do循环,它可能是图灵完全的。

有一些编程语言不是图灵完全的。有关非图灵完整语言的一些示例,请参阅:

例如,拥有一种非图灵完全的语言的一个优点可能是,它可能足以执行您需要的任务,同时足够简单,允许您证明程序的属性,而这是您无法证明的。例如,在知道程序将无误运行非常重要的情况下,这可能非常有用

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

正如马塞洛所说,它相当模糊

至于确定一种语言是否是图灵完备的,我将向您提出以下问题:

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

正如Marcelo Cantos已经告诉我们的,这有点模糊,特别是因为有些领域特定语言(DSL;)不是图灵完备的,但也经常被认为是编程语言

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

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

另一种方法是证明所有mu递归函数 可以通过编程语言进行计算

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


证明一种编程语言不是图灵完全的一种有时使用的方法是检查是否所有程序都终止;如果是的话,那就不可能了。

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

图灵完备语言是一种编程语言:

编程语言必须是图灵完全的:也许是,但是


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

函数式程序不计算任何东西;它告诉我们结果应该是什么。类似于Prolog这样的逻辑编程语言也是如此。从语言理论的角度来看,编程语言的唯一要求是它有一个明确的语法,因此任何有效序列都有一个单一的语法结构。所述结构的含义由译员或翻译人员决定;漂亮的打印机、度量分析器和编译器对同一程序赋予不同的含义(漂亮的打印机不关心不匹配的类型和操作,f.i.)。TCP协议是一种编程语言。