从理论上讲,可以指定一种不存在任何实现的编程语言吗?编程语言是定义函数的一种方式。一种实现是指一种方法,该方法在给定输入上以该语言执行给定程序,该输入对应于该输入上的程序的功能输出。
这种语言的最低要求是什么?
从理论上讲,可以指定一种不存在任何实现的编程语言吗?编程语言是定义函数的一种方式。一种实现是指一种方法,该方法在给定输入上以该语言执行给定程序,该输入对应于该输入上的程序的功能输出。
这种语言的最低要求是什么?
Answers:
通常,实现一种编程语言至少是为一种解释器提供一种图灵完备的语言(或该语言的编译器)。
使用此“定义”,我们可以指定如下编程语言:
只有一个可能的程序是HALT
;
规范HALT
:它是解决暂停问题的功能。
实现这种编程语言需要解决实现中的停顿问题。(这是不可能的,因为我们的实现不应比图灵机更强大)。
规范处理逻辑,因此可以要求更多。另一个不可能实现的规范是“ false”。(或规范中任何矛盾的句子)但这听起来不像是规范,这就是我使用停顿问题示例的原因。
只是一个奇怪的提示:C ++模板引擎是图灵完备的
定理1: 在没有实例化边界的情况下,C ++模板是图灵完备的。
推论1: 在没有实例化限制的情况下,不确定C ++编译器在编译给定程序时是否会暂停。
...所以C ++本身可以被视为一种不存在任何“实现”的编程语言... :-D
您不清楚“编程语言”和“某种语言的实现”是什么意思。您需要提供这两个的严格定义才能得到答案。
但这不是人们使用短语“编程语言”时所指的那种规范语言。甲编程语言通常意味着是表示可计算函数(进程,...)和所述指令传达给一台机器,因此存在能够模拟这些方案和它们的输出结果的TM语言。因此,从某种意义上说,拥有无法实现的编程语言是没有意义的。