The original poster is correct in pointing out that the Dijkstra paper was written in a time when high level language constructs didn't exist to do what people intended. For example Fortran66 doesn't have an Else keyword so you have to write:
if(blah.eq.0) then goto 101 endifC This is actually the 'else bit'. some_value = something goto 102 101 ContinueC This is actually the 'if'd block. blah = array(34) 102 ContinueC ...
In today's context we all know to use the built in features that simplify this mess. I think the 5 pages from this thread and countless other threads comes from a misunderstanding of exactly how bad the situation was when Dijkstra wrote the paper. Surely nowadays everyone knows to use a loop contstuct when they want a loop and not a goto.
This is incidentally why some people like customizable languages like Lisp, Scheme, Ruby, and Smalltalk. You can define new constructs in the code so the next time you use them, you can simply say what you are doing without resorting to goto/loop/etc constructs or waiting until a new language comes out that does what you want.
Afterall, that's the point: say what you mean.