告诉 X 或 Y 所需的标准或基本功能是什么(或不 >)编程语言?
我已经完成了一些阅读(Is HTML considered a programming language?,Turing complete和others),并得出结论:语言或语法必须图灵完成< / em>被认为是一种编程语言。它是否正确?这够了吗?
如何确定某些内容图灵完整?有没有具体的标准?
是否具有足够的控制流结构(条件语句和循环)图灵完整?
答案 0 :(得分:7)
存在非图灵完备的编程语言。有关非图灵完整语言的一些示例,请查看:Practical non-Turing-complete languages?
使用非图灵完整语言的一个优点是,例如,它可能足以执行您需要的任务,同时又足够简单,可以让您证明您的程序属性,否则您无法证明。例如,这对于知道程序运行没有错误至关重要的情况很有用。
编程语言的确切构成有点模糊,但可以说它是一种可以表达计算的语言。如果我们查看HTML,您就无法创建计算任何内容的文档;它只是告诉浏览器页面应该如何显示。需要注意的重要部分是,它不会计算任何新的东西。
正如马塞洛所说,它非常模糊。
至于确定一种语言是否图灵完整,我会推荐你这个问题:What are practical guidelines for evaluating a language's "Turing Completeness"?
答案 1 :(得分:2)
告诉X或Y是(或不是)编程语言所需的标准或基本功能是什么?
正如Marcelo Cantos已经说过它有点模糊,特别是因为有域特定语言(DSL; http://en.wikipedia.org/wiki/Domain-specific_language)不是图灵完整的,但也经常被认为是编程语言。
我如何确定图灵是否完整?有没有具体的标准?
确定编程语言是否图灵完备的一种方法是在其中编写图灵机(或Lambda演算的实现)。
另一种方法是证明所有mu-recursive函数 http://en.wikipedia.org/wiki/%CE%9C-recursive_function 可以通过编程语言计算。
因为可以证明命令式编程语言是Turing完成的,如果有一个变量赋值,一种表示数字0的方法,一个后继函数,一个前驱函数和一个表示while循环的可能性这是另一种方式
有时候使用的方式(由于显而易见的原因并不总是有效)来证明编程语言不是Turing-complete是检查所有程序是否终止;如果是,那就不可能。
答案 2 :(得分:1)
让我们考虑一下这些具体定义的后果:
图灵完备语言是一种编程语言:CSS becomes a programming language。
编程语言必须是turing-complete:may,but programs can be written otherwise。
现在有一个更好的定义:编程语言是一种可用于编写程序的语言。
答案 3 :(得分:0)
术语“编程语言”有点模糊。正则表达式是否构成编程语言?大多数程序员会说是,即使正则表达式没有完成。
至于图灵完整性,我不是专家,但我认为有条件分支和无限堆栈就足够了(因此真机只有近似图灵完备性)。
编辑:经过一番研究,我发现这还不够。您至少需要两个堆栈和一些最小数量的状态(以及状态转换表)。
也许更实际的尺度是,如果能记住任意数量的状态并做循环,那么它可能已经完成了。