jbodenmann, if we're really discussing that, my take on it is:
goto
is a
huge gain in
some (often idiomatic) cases when the language is somewhat close to machine code (e.g. requires explicit resource management). In other words, it has a few very good uses in C and, to a lesser extent, C++.
Looking at other languages, for example C#, in all my time writing C# code, I didn't find a single good use for
goto
. For your typical scenarios, you're much better off using
try-finally
and/or
using
blocks. In C++, you
could do a similar thing if you want to wrap everything with exceptions and strictly follow RAII. But that's another story (IMHO the combination of exceptions with explicit resource management is a broken concept), I don't think that's
always a good idea. In C, trying to dogmatically avoid
goto
where you'd normally need it just leads to weird things like abusing other control structures in creative ways, so yes, unreadable code.