Go To Statement Considered Harmful
folcloreprogramação
A carta de Dijkstra, de 1968, argumentando que o goto irrestrito torna os programas difíceis de raciocinar.
Ele sustentou que saltos livres deixam o fluxo de controle vagar até não se conseguir acompanhar o estado do programa, e defendeu construções estruturadas; o título famoso foi, na verdade, dado pelo editor Niklaus Wirth. O texto venceu o debate, inaugurou o formato de ensaio 'considered harmful' e moldou como todos escrevem fluxo de controle hoje.
A carta de Dijkstra, de 1968, argumentou que instruções goto irrestritas tornam os programas mais difíceis de raciocinar, porque a relação entre o texto do programa e o estado de sua execução fica arbitrariamente complexa. O título foi dado pelo editor, e gerou um gênero de ensaios do tipo considerado prejudicial que segue até hoje.
O ponto de fundo sobrevive ao alvo específico. A preocupação de Dijkstra era a distância entre o texto estático que um humano lê e o comportamento dinâmico que ele produz, e o fluxo de controle estruturado estreita essa distância ao tornar os caminhos possíveis visíveis no formato do código. Laços e condicionais venceram não porque o goto seja o mal, mas porque permitem ao leitor reconstruir a execução a partir da página.
A nuance em geral perdida é que a resposta de Knuth, Structured Programming with go to Statements, é ao menos igualmente importante. O argumento dele era que uma proibição geral substitui julgamento por ritual, e que alguns casos, notadamente a saída antecipada de laços aninhados e os caminhos de erro, ficam mais claros com um salto que com as contorções necessárias para evitá-lo. As linguagens modernas em boa medida resolveram isso oferecendo break, continue, return e exceções, que são goto com os destinos restringidos.
Também conhecido como: Go To Statement Considered Harmful, Dijkstra goto, considered harmful
Fontes
- Dijkstra, CACM (March 1968)