我只是想知道讨厌的goto
语句是否与comefrom
语句一样强大?在我看来,他们的能力可能相等,但我并不完全确定。是否有任何形式证据证明它们同样强大(或同样强大)?
对于任何从未听说过的人:comefrom
有点颠倒goto
:
comefrom doom;
WriteLine("I will never stop executing!");
doom:
答案 0 :(得分:5)
comefrom
严格来说比goto
更强大。
每个带goto
的程序都可以通过机械方式转换为等效的comefrom
计划,并将每个goto
替换为相应的comefrom
。
反之则不然。这个程序没有goto唯一的等价物:
doom:
comefrom doom;
WriteLine("I will never stop executing!");
goto doom;
comefrom doom;
WriteLine("Guess my time has come!");
此程序打印第一个短语未知次数,然后是第二个短语,然后退出。使用缺少comefrom
的传统编程语言无法实现这种非确定性。