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