|
Date: Mon, 27 Apr 2009 03:36:03 -0700
From: rpg400-l@xxxxxxxxxxxxxxxx
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: Why was GOTO removed from /free?
John,
I read the blog you're pointing to prior to replying. It did nothing to
change my opinion of GOTO. Please understand that the debate about GOTO
has been raging for at least 40 years, and we're really unlikely to
solve the question here.
Here's a link that discusses both sides of the question:
http://www.stevemcconnell.com/ccgoto.htm
But, I can only give my opinion. And my opinion is that RPG is better
off without GOTO in /free format.
It's important to understand that the vast majority of a programmer's
time is NOT spent writing code. It's spend reading and understanding
someone else's code so they know which part of the code needs to be
modified, which parts can be ignored, which parts aren't modified, but
still need to be re-tested, etc.
Even if you use GOTOs in the best possible way, it will take me longer
to read and understand your program flow because any point in the
program can jump to any other point in the program. You say that's a
non-issue because you'll use the goto "correctly" -- but if I'm reading
your program, how will I *know* that without taking the time to read
everything? However, if there are no GOTOs allowed in the language, I
don't have to worry about it.
IBM has provided op-codes like LEAVE, ITER, LEAVESR, RETURN,
MONITOR/ENDMON to make it easy to do the "good" style of GOTO without
using the actual GOTO statement. With those statements you can do the
"good" part of GOTO without resorting to GOTO opcode that causes so many
problems.the goto.
I dunno... I think we'll just have to agree to disagree.
john e wrote:
I think the problem is with the people, not the tools.
Developers writing bad code using goto still write bad code without
it
goto... IMHO, it's never actually BETTER with the goto. Not having
using goto can really make the code much more clean.forces people to structure their code around the way the program is
SUPPOSED to flow, and leads to better code in the long run.
In "normal" circumstances, yes, but in the case of error handling
language like C or RPG (no exception handling) in situations where in case
See the articles below for other opinions about this.
There really seems to be a consensus that using "goto" in a classic
actually means it's gone. You really don't want to code
I know it's still available in "fixed" format, but in practice this
get clean code just be removing the "goto". Besides not many new RPG code/end-free
goto out;
/free
And i really don't know what practical problem this solves. You don't
most "abusers" are probably programmers which 90% of their time do
The problem of abuse of goto is not solved with the removal, because
RPG is NOT "modern" such that goto is not necessary.
Date: Mon, 27 Apr 2009 02:19:11 -0700
From: rpg400-l@xxxxxxxxxxxxxxxx
To: rpg400-l@xxxxxxxxxxxx
Subject: Re: Why was GOTO removed from /free?
My personal opinion is that GOTO is a bad thing to have in a modern
language. I agree with the plethora of papers and articles that have
itsaid this.
I do see your point to a degree. It's possible to use GOTO in a way
that isn't too bad... the problem is that it always starts out that
innocently, but then gets overused and leads to a mess. Usually, at
best, the code with the goto is "just as clean as" code without the
goto... IMHO, it's never actually BETTER with the goto. Not having
itforces people to structure their code around the way the program is
SUPPOSED to flow, and leads to better code in the long run.
Just my opinion.
Regarding it being "removed" from /free -- it wasn't removed, because
stillwas never in /free. The fixed format GOTO is still there, and can
be used as always.
I have been writing GOTO-free RPG code now for 15 years (I started in
feltRPG/400) and at first it was really hard to get the hang of, and I
goodas you do that it was cumbersome and that I was avoiding it for no
nicer.reason. But after doing it for awhile I found the gotoless code
themNow, after so long, I would never even consider going back.
Also, RPG *does* support exceptions, although I wish IBM would make
classic language (yes RPG is still classic, like C).simpler to use -- but I do use those as well.
john e wrote:
Without giving something back...?
For clean error handling "goto" is often the best choice in a
we don't have exception handling in RPG as we have in C++ or Java?
What problem has been solved now by just removing goto from RPG as
http://eli.thegreenplace.net/2009/04/27/using-goto-for-error-handling-in-c/
mailing list--
_________________________________________________________________
De grappigste filmpjes vind je op MSN Video!
http://video.msn.com/video.aspx?mkt=nl-nl
This is the RPG programming on the IBM i / System i (RPG400-L)
listTo post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.
_________________________________________________________________
Nieuws, entertainment en de laatste roddels. Je vind het op MSN.nl!
http://nl.msn.com/
--
This is the RPG programming on the IBM i / System i (RPG400-L) mailing
To post a message email: RPG400-L@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at http://archive.midrange.com/rpg400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.