不可能编写一种编程语言来允许所有输入都停止的机器,而没有其他输入。但是,为任何标准复杂性类定义这样的编程语言似乎都很容易。特别是,我们可以定义一种语言,在其中我们可以表达所有有效的计算,并且只能表达有效的计算。
例如,对于类似东西:采用您喜欢的编程语言,然后在编写程序(对应于Turing Machine M ')之后,在标头中添加三个值:整数c和整数k,以及默认输出d。当程序被编译,输出图灵机中号给定输入X大小的Ñ运行中号'上X为ç Ñ ķ步骤。如果在步骤上升之前没有停止,则输出默认输出。除非我没有记错,否则这种编程语言将使我们能够用表示所有计算,仅此而已。但是,这种提议的语言本质上是无趣的。
我的问题:是否有编程语言以非平凡的方式捕获可计算函数(例如所有有效的可计算函数)的子集?如果没有,这是否有原因?