for / while else doesn't make sense
Rustom Mody
rustompmody at gmail.com
Wed Jun 15 08:44:13 EDT 2016
On Wednesday, June 15, 2016 at 5:57:51 PM UTC+5:30, BartC wrote:
> On 15/06/2016 12:19, Rustom Mody wrote:
> > On Wednesday, June 15, 2016 at 8:42:33 AM UTC+5:30, Steven D'Aprano wrote:
>
> >> Sort of. A break is a jump, and a goto is a jump, but apart from that,
> >> they're not really the same thing. A goto can jump (almost) anywhere.
> >> Depending on the language, they can jump into the middle of functions, or
> >> into the middle of loops. That's what makes them powerful enough to break
> >> compositionality. But break can only jump to a single place: to the
> >> statement that follows the for...else compound statement. It's more like a
> >> return than a goto.
> >
> > I thought there'd be many examples for showing that break is just goto in disguise... Evidently not
> >
> > So here is an example in more detail for why/how break=goto:
> >
> > http://blog.languager.org/2016/06/break-is-goto-in-disguise.html
>
> That example is nothing to do with break vs. goto. You've just replaced
> an erroneous goto with an erroneous break.
Precisely the point -- that that erroneous goto could be an erroneous break
with minor changes to the code (One needs to be inside a break-able statement
like for/while (or for C do/switch)
>
> It's to do with C (or C-like syntax if not C) using braces for compound
> statements at the same time as making them optional for a single statement.
>
> With the wrong indentation applied, that sort of error can easily be
> missed. Some tools may be able to pick that up.
>
> (Another kind of error (C seems to have plenty of capacity in this
> regard!) is forgetting the */ in a /* ... */ comment. Then code is
> mysteriously ignored until the end of the next /* ... */ comment.
> Although a syntax-highlighting editor will pick that up more easily.)
As the links point out there can be any amt of post-mortem analysis
- gcc silently stopped dead code warnings
- the misleading indent -- could be detected by tools
- etc
Doesnt change the fact that that misplaced goto could be a misplaced break
And either did/would JUMP OVER critical code wrongly
tl;dr:
A rose by any name smells sweet
A goto by any name goes-to
More information about the Python-list
mailing list