监视循环侦听器
发布于2008年1月11日星期五。
没有一个程序能说出另一个程序会做什么。 现在,我不只是断言,我会向你证明: 我会证明,尽管你可能会一直工作到放弃, 你无法预测一个程序是否会停止。
想象一下,我们有一个叫做P的程序 它将在程序的源代码中窥探以查看 没有无限的循环; 如果没有发现循环,P打印单词“好!”。
你输入你的代码和它需要的输入, 然后P把它们都拿出来学习和阅读 并计算事情是否会如期结束 (而不是以他们可能的方式走弯路)。
事实是P不可能是, 因为如果你写下来交给我, 我可以用它来设置逻辑绑定 那会打碎你的理智,扰乱你的思维。
这是我要使用的技巧——而且很简单。 我会定义一个过程——我们将这个东西命名为Q—— 这需要一个我们称之为P的程序(当然!) 通过读取源代码来判断它是否循环;
如果是这样,Q会简单地打印“Loop!”然后停止; 但如果没有,Q将直接回到顶部, 然后再次开始,无休止地循环, 直到宇宙消亡,冻结,变黑。
这个名为Q的程序不会停留在货架上; 我会运行它,然后(狠狠地)自己喂它。 当我对Q这样做时,会产生什么行为? 当它读取自己的源代码时,它会做什么?
如果P警告循环,Q将打印“Loop!”并退出; 然而,P应该真实地谈到这一点。 因此,如果Q打算退出,那么P应该说“很好!” 这将使Q回到它的第一行!
无论P会做什么,Q都会独家报道: Q使用P的输出使P看起来很愚蠢。 如果P做对了,那么它就在它的牙齿上; 如果它说假话,那就是在说真话!
我创造了一个悖论,尽可能简洁—— 简单地用你的假设P。 当你假定P时,你就陷入了圈套; 你的假设把你引向了我的巢穴。
那么,如何摆脱这种逻辑混乱? 我不必告诉你; 我相信你能猜到。 签署人 还原 ,不可能有 一个像神话中的P。
你永远无法发现机械手段 用于预测计算机的行为。 这是一件无法完成的事情。 所以我们用户 必须找到我们自己的漏洞; 我们的电脑是失败者!
-
匿名 (2011年7月30日上午10:55) 令人惊叹的!