It&#x27;s worth noting that the coding climate has changed considerably since 1987. Modern goto-less languages, such as Java, include break and continue statements that can target any enclosing block; many of the example programs that people suggest using gotos for end up basically using these forms. It&#x27;s worth pointing out that these multi-level break&#x2F;continue statements allow you to build any reducible control flow graph (that is, the only thing you cannot do is construct a loop which has two entry points; incidentally, these constructs are also the best way to ensure that the optimizer gives up).<p>Optimizers have also gotten better over the years--it would be fairly easy to transform the idiomatic find-loop pattern based on flags to the one that uses the goto. There&#x27;s also been a shift to using basic block-based optimizers, which means that the optimizer sees a loop statement and something built entirely of gotos as completely identical anyways.<p>So, in the end, the goto debate is moot: there&#x27;s no real difference in performance either way these days, and we&#x27;ve renamed the goto instruction to break which sidesteps most of the puritanical section of the debate.