Breaking Out

James J. Besemer jb at
Mon Aug 26 22:37:30 CEST 2002

Bo M. Maryniuck wrote:

>Dijkstra rejects gotos and nameis it worse programming. This is good in 
>Assembler but we have a "break" statement.
I am well acquainted with the Dogma.

You should read Knuth's "Structured Programming With GOTOs" to know why 
The Dogma does not always apply and when. Among other things, Knuth 
argues that the introduction of auxilliary variables or other 
contortions to avoid a simple goto is worse than the disease.

Also, we know from our experience with compilers that any structured 
program can be reduced to a program using only tests and gotos (machine 
code).  A lesser known fact is that any arbitrary sphagetti code program 
using only tests and gotos can be automatically transformed into a 
'structured' program using only if and while. That is, 'structured' and 
'spaghetti' styles are isomorphic with one another.

The conclusion from all of this is that including an occasional goto is 
not in and of itself harmful (even Dijkstra only warns against Excessive 
use); nor does avoiding gotos make any guarantee about the readability 
or any other goodness property of the resulting code.  I for one 
certainly have observed some awful code that didn't include gotos.



James J. Besemer		503-280-0838 voice
2727 NE Skidmore St.		503-280-0375 fax
Portland, Oregon 97211-6557	mailto:jb at	

More information about the Python-list mailing list