如果我们主要使用上下文无关语言进行编码,我真的无法理解如何模拟图灵机(它接受递归可枚举语言)的输出。
问问题
387 次
2 回答
9
您将程序的规范与其输出混淆了。
例如,可以接受递归可枚举语言的图灵机仍然由有限转换函数或“规则表”指定。规则表本身可以用常规语言表示。
再说一次,只有现代编程语言的基本语法完全由上下文无关语法定义。一个有效的程序必须满足许多语法无法捕获的条件:标识符必须在使用之前声明,一个函数只能定义一次,程序必须通过类型检查器,等等。
于 2012-05-15T12:38:41.400 回答
4
“大部分没有上下文”没有意义,就像“有点怀孕”没有意义一样。该属性要么存在,要么不存在,对于我曾经使用过的任何编程语言,它都不存在。
但这不是您可以在其中编写任意算法的原因。一种语言的源代码语法可能会或可能不会被特定的语法描述,但重要的是输入/输出行为。例如,打印 A^iB^iC^i 形式的字符串的程序可以用 Pascal 编写,即使这些字符串不构成上下文无关语言。但这可能的原因不是 Pascal 语法比上下文无关(尽管这是真的),而是 Pascal 中构造的语义(最终,程序将在其上运行的冯诺依曼机器的概念)。
于 2012-05-15T12:39:56.147 回答