【发布时间】:2014-04-20 14:54:18
【问题描述】:
我知道 C++ 是不可判定的。但它是递归可枚举的吗?
让我们将一组有效的 C++ 程序定义为当前 C++ 标准下任何定义良好的程序。
是否有可能构建一个总能在有限时间内识别有效 C++ 程序的编译器?
或者它是递归可枚举的?
是否有可能构造一个编译器,在有限时间内总能识别出无效C++程序?
或者两者都没有?
【问题讨论】:
-
您可能正在寻找Theoretical Computer Science stackexchange site。这个问题与实际的编码问题一点关系都没有。
-
“C++ 模板是图灵完备的 (2003)”,作者 Todd L. Veldhuizen:citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.14.3670
-
这个问题不是一个实际的编程问题。这似乎是一个理论上的问题。但无论如何,请考虑:
while (Riemann_hypothesis_is_true()) { }。 1.10.24 规定程序最终必须终止、调用 I/O 函数、访问 volatile 对象、执行同步操作或执行原子操作。如果黎曼假设为真,那么这个程序是无效的。 -
“实现可能假设”和“一个有效的程序必须”是不同的东西。一个实现可能假设某事是真的,但仅仅因为它不是并不意味着程序是无效的。
-
顺便说一句,如果您有 Riemann_hypothesis_is_true 的实现,我很乐意看到它:P。
标签: c++ computation-theory turing-complete decidable