9 comments

[ 3.4 ms ] story [ 35.9 ms ] thread
#2 is my all-time favorite. It's such a common situation.
I usually associate fanatical goto hatred (as in #4) with people who don't do systems programming, particularly in C, where using a goto to jump to a label that executes instructions (like cleanup and freeing memory) in the event of an error condition, is a very common pattern.

These people would probably be shocked if they read the source code of the average GNU/Linux distro's software stack.

To be fair, the example in #4 is EXACTLY WHY IT'S BAD TO USE GOTO. It's a horrible abuse of the construct that makes program flow much more difficult to follow and should have been replaced with moving some of the code off into methods.
'GOTO considered harmful' is practically biblical law amongst many programmers, but it's worth remembering that he made that statement in the context of an argument with Donald Knuth. Knuth won: ( http://web.archive.org/web/20070927094626/http://pplab.snu.a... See also http://web.archive.org/web/20051128093253/http://kerneltrap.... about goto

Good uses of goto are very rare with current programming languages. The only cases where I have found good uses were with languages that did not have exception handling and in each cases, there was some deficiencies in the specifications and the code containing the goto has disappeared with the corrected specifications. Maybe this was luck.

I still think it is ridiculous to hate goto.

I associate goto hatred with people who've experienced goto hell, but perhaps that's extrapolating from my own experience too much. My first programming language was BASIC - one baked into the ROM of an Apple II. Numeral based gotos were simply how you got around. I saw no problems with this - it's just how things were.

I've since been ruined by better programming languages. That gotos for cleanup is the lesser evil in C speaks more to the weakness of C than the virtue of gotos for me. I'm sure stockholm syndrome would eventually assuage my pain and I'd stop hoping for raptors if I went back to C...

For what it's worth:

I'm not a systems programmer, so chalk up another one for that association.

I was a little shocked by GNU software - the 50 line GCC if statement, not the cleanup goto pattern. But only a little - I've seen Lugaru's GameTick.cpp before it was cleaned up.

Pretty funny stuff. But man the code examples there made me want to take a shower.
What I think is odd is the apparent SO hate on #1. That sounds like a good idea to me - to better understand what SQL injection is and how to find and plug vulnerabilities, try to write your own vulnerable application and then exploit it. At least, I'd much rather have them do that then copy and paste generic code off of some learning site which is vulnerable without even thinking about it.