Goto is surprisingly readable.
Loops don’t get labels. Labels are awesome. Sprinkle in some goto so you can use labels.
In languages like python inside a loop you have if condition: continue. Except continue means don’t continue, you skip to the next iteration without breaking the loop. That’s confusing as heck (and what is else doing on loops Guido???). if condition: goto loop is more honest.
I also like that goto is “take my stack frame and run that procedure instead”, which is kind of unique and cool in its own way, and impossible to do with most lexical scoping systems. It’s reliable zero cost function calling (if you can make your optimizer happy).
Everyone loves repeating “goto considered harmful” and “numbering should start at zero”, but nobody critically thinks about those things. Rules are made to be broken.
~Oh, and the numbering argument is totally wrong… using one notation to advocate for another is silly. Offset from zero, but index by domain logic!~



It’s a blessing and a curse. I’ll give you that.