Goto 不是一部恐怖电影

1968 年,Edsger Dijkstra 发表了一篇名为“Go To 语句被认为有害”的经典信件。标题虽有误导,但实际上是对结构化编程的劝诫,且这种说法没错,信中确实认为goto有害。
Dijkstra 的观点完全正确,历史也证明了他的观点。他赢了,“赢”是过去时态,胜利已完成,goto已“死”,他所谈论的那种可以随意跳跃到任何地方的goto已不存在于现代语言中,现代语言中的goto已被结构化编程范式严格约束,不能在if语句、for循环等中间进行跳转。
从现代观点看,Dijkstra 抱怨的那种goto不仅能随意跳转,还导致当时程序的组织原则存在问题,从而阻止了函数的存在,因为在无约束的goto存在时无法保证函数的提供。
不要将 20 世纪 60 年代对goto的批评应用于现代goto,不要因为在函数中使用一次goto就认为自己是个糟糕的程序员。停止贬低现代goto,它不是特殊的威胁,字符串强类型化比goto的威胁大得多。实际上,看到现代代码使用goto,可能意味着是由高技能程序员编写的,因为他们理解问题,知道现代反goto的共识是错误的,且在某些情况下goto是最佳解决方案。不要对goto感到恐慌,不要将 20 世纪 60 年代的goto与今天的goto等同。这只是个人抱怨的博客话题,若要从中获取实际东西,可重新阅读信件或首次阅读,将goto相关内容编辑掉后阅读其余部分,能了解编程环境及整个编程行业选择该环境的原因等。

阅读 13
0 条评论