Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!zephyr.ens.tek.com!tekcrl!tekgvs!jans
From: jans@tekgvs.LABS.TEK.COM (Jan Steinman)
Newsgroups: comp.sw.components
Subject: Re: Garbage Collection & ADTs
Message-ID: <5995@tekgvs.LABS.TEK.COM>
Date: 26 Sep 89 00:50:47 GMT
Organization: Tektronix Inc., Beaverton, Or.
Lines: 46

<62342@tut.cis.ohio-state.edu (Golden Richard)>
<>

<...I can't imagine a properly designed application where storage management is 
so complicated that the usual techniques for  programmer-managed storage 
reclamation aren't adequate.   If the programmer can't define when a certain 
object can go poof, I suspect a serious lack of understanding of the problem at 
hand.>

One who cannot imagine a need for garbage collection other than to correct for 
programmer deficiencies simply lacks imagination.

The situation is not so simple in dynamic-bound systems.  Are you claiming that 
Smalltalk, Lisp, Eiffel, Objective C, Gnu Emacs, et. al. have garbage 
collectors simply because those who program in them lack serious understanding 
of their problems?

In particular, systems designed for rapid prototyping may have storage systems 
that have completely non deterministic usage patterns.  I'm certain those who 
have used non-GC systems to build things similar to the NeXT InterfaceBuilder 
or the Smalltalk Browser have come to appreciate the need for GC.

To bring it back to the newsgroup, the problem of reusable components is 
intimately concerned with automatic storage management.  The need to document 
storage procedures is yet another reason truly reusable components are rare.

I really agree with Gary:   Once 
the religious give up their stubborn, blind opposition to GC, we can all begin 
to discover when to use it, when not to, and how to control it so that it stays 
out of the way when not used.  I can pound most nails with the handle of a 
screwdriver, but I'm a fool if I declare there will never be a hammer in my 
toolbox!

In particular, I don't think the combination of asynchronous GC with programmer 
storage handling has been adequately explored.  Creation and destruction of 
many data can be handled by a compiler, and most real-time systems can have 
scheduled "idle time" in which to perform overhead activities.  (A SONAR 
project I worked on performed GC during the few milliseconds then the beam was 
sweeping through the hull.)

							   Jan Steinman - N7JDB
						  Electronic Systems Laboratory
					Box 500, MS 50-370, Beaverton, OR 97077
						(w)503/627-5881 (h)503/657-7703