6
C实现的最大计算能力
如果我们按照本书(或您愿意的话,可以选择其他任何语言规范版本)进行阅读,那么C实现可以具有多少计算能力? 请注意,“ C实现”具有技术含义:它是C编程语言规范的特定实例,其中记录了实现定义的行为。AC实施不必一定可以在实际计算机上运行。它确实必须实现整个语言,包括每个具有位字符串表示形式的对象和具有实现定义的大小的类型。 出于此问题的目的,没有外部存储。您可能执行的唯一输入/输出是getchar(读取程序输入)和putchar(写入程序输出)。同样,任何调用未定义行为的程序都是无效的:有效程序的行为必须由C规范以及附录J中列出的实现定义的行为的实现描述(对于C99)进行定义。请注意,标准中未提及的调用库函数是未定义的行为。 我最初的反应是,C实现只不过是有限的自动机,因为它对可寻址内存的数量有限制(您不能寻址的存储sizeof(char*) * CHAR_BIT位数更多,因为存储时不同的内存地址必须具有不同的位模式)在字节指针中)。 但是,我认为实现不仅仅可以做到这一点。据我所知,该标准对递归的深度没有限制。因此,您可以根据需要进行任意数量的递归函数调用,只有有限数量的调用中的所有调用都必须使用不可寻址(register)参数。因此,允许任意递归并且对register对象数量没有限制的C实现可以编码确定性下推自动机。 它是否正确?您能找到更强大的C实现吗?是否存在图灵完备的C实现?