[Coco] GOTO and code maintainability

Gene Heskett gene.heskett at verizon.net
Mon Sep 7 22:25:00 EDT 2009


On Monday 07 September 2009, Aaron Banerjee wrote:
>All of us have at least at one point in time either used, or tried to
>figure out code containing GOTO statements.  In a recent programming
>environment I was in, GOTO (or it's equivalent in whatever language we
>happened to be programming) was expressly forbidden -- no exceptions
>no matter what.
>
>Just to be an irritant, I chucked a single GOTO (to make a polling
>loop) in a relatively simple program, which totally confused my
>colleagues.
>
>Given that it isn't abused, I don't see why GOTO makes code any less
>maintainable than other obviscation techniques, such as polymorphism
>(which, while useful, if abused can lead to very multiple inheritance
>or exception-based program control.  At least GOTO tells you where it
>is going....
>
>Has anyone else run into this type of "GOTO intolerance" while
>programming?
>
>                           - Aaron

The largest reason to discourage its use is because then the compiler must 
use even more resources tracking the stack.  

Scenario:

Your proggy is well and truly into a stack of subroutines possibly 10 deep on 
the stack and encounters a goto.  At this point the compiler can either 
upchuck and make you take it out, or it can search through a table to find 
the stack offset in effect now, then backtrack far enough in front of the 
goto's target label and try to figure out what the stack offset would be if 
it approached that target label by some other sequence of events, then insert 
enough stack cleanup in the goto path to keep the stack sane.  Without that 
effort, the first return it encounters, which will pull the address it is to 
resume execution at off the stack, there is an excellent chance of that 
return becoming a bushel of colored confetti on the screen crash.

I have had both crashes, and good results using goto's in C.  B09 seems to 
have a little better control,  but I have also had an on err goto go up in 
smoke with basic09.  Probably because the stack pointer wasn't tracked well 
enough.

Interpreted languages such as the basic in the roms, generally fare better in 
that dept.
>--
>Coco mailing list
>Coco at maltedmedia.com
>http://five.pairlist.net/mailman/listinfo/coco


-- 
Cheers, Gene
"There are four boxes to be used in defense of liberty:
 soap, ballot, jury, and ammo. Please use in that order."
-Ed Howdershelt (Author)
The NRA is offering FREE Associate memberships to anyone who wants them.
<https://www.nrahq.org/nrabonus/accept-membership.asp>

Oh, wait, that was Randal...nevermind...
             -- Larry Wall in <199709261754.KAA23761 at wall.org>



More information about the Coco mailing list