是否像来自那样强大?

时间:2014-08-01 21:21:00

标签: language-agnostic goto comefrom

我只是想知道讨厌的goto语句是否与comefrom语句一样强大?在我看来,他们的能力可能相等,但我并不完全确定。是否有任何形式证据证明它们同样强大(或同样强大)?


对于任何从未听说过的人:comefrom有点颠倒goto

    comefrom doom;
    WriteLine("I will never stop executing!");
doom:

1 个答案:

答案 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的传统编程语言无法实现这种非确定性。