comp.lang.ada
 help / color / mirror / Atom feed
From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: Ada 0Y plans for garbage collection?
Date: Fri, 12 Sep 2003 10:43:50 +0200
Date: 2003-09-12T10:43:50+02:00	[thread overview]
Message-ID: <l213mvgattffdctsato5fpsh7g0uq00cfd@4ax.com> (raw)
In-Reply-To: 3F60E747.40805@attbi.com

On Thu, 11 Sep 2003 21:21:21 GMT, "Robert I. Eachus"
<rieachus@attbi.com> wrote:

>>>I still think the way it was done in Modula-3 gives you the best of
>>>both worlds. If you want garbage collection, you allocate from a
>>>different pool. If you don't want it you don't use it, and there is no
>>>overhead.
>> 
>> Well, you can have this allready at least with GNAT. See
>> http://www.ada.krischik.com for details.
>
>Exactly.  And if you read the documentation there, you eventually 
>conclude that a garbage collected pool for Ada implementations may seem 
>like a good thing, but it creates more issues than it solves.  It can be 
>done, and it has been done.  But in practice building reference counts 
>into types which need garbage collection gives you much better control 
>over finalization.

Absolutely!

(I saw no single real-life example, where automatic GC were a solution
of choice)

>And yes, I know that there are general graph structures where reference 
>counts don't work.  I also know that in practice most such general 
>graphs can be constructed with structural pointers and general pointers 
>so that the structural pointers define a tree and nodes not in the tree 
>should be reclaimed. You could say that doing that is a lot of extra work.

Actually, it is not so much work. I did it many times. 

---------
But reference counting could be made much more easy and attractive if
smart pointers have more light-weighted implementation than controlled
types in generic packages. There are too many problems with that:

1. Controlled types are slow.

2. They have by-reference semantics, which is a source of nasty
pitfalls.

3. They are not transparent as true access types are. So you have to
define a plethora of proxy methods and take a great care to maintain
them when the pointed type gets changed. It is awful and unsafe.

4. Derived types are not supported. That is, there is no way to make a
smart pointer to a derived type class a member of the class of smart
pointers pointing to the base type class. One need to support two
parallel type hierarchies which is absolutely impossible with
generics.

---
Regards,
Dmitry Kazakov
www.dmitry-kazakov.de



  reply	other threads:[~2003-09-12  8:43 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-09 13:35 Ada 0Y plans for garbage collection? Jano
2003-09-09 16:24 ` Martin Krischik
2003-09-09 18:30 ` Jeffrey Carter
2003-09-10  6:55   ` olehjalmar kristensen - Sun Microsystems - Trondheim Norway
2003-09-11 15:09     ` Martin Krischik
2003-09-11 21:21       ` Robert I. Eachus
2003-09-12  8:43         ` Dmitry A. Kazakov [this message]
2003-09-12 15:38           ` Martin Krischik
2003-09-15 13:33             ` Dmitry A. Kazakov
2003-09-16 18:04               ` Martin Krischik
2003-09-12 15:49           ` Martin Krischik
2003-09-14 19:26             ` Matthew Heaney
2003-09-14 21:46             ` Berend de Boer
2003-09-14 21:58               ` Ludovic Brenta
2003-09-15  1:43                 ` Robert I. Eachus
2003-09-16 16:48                   ` Jon S. Anthony
2003-09-16 21:45                 ` Berend de Boer
2003-09-17  1:39                   ` Jeffrey Creem
2003-09-17  3:38                     ` Larry Kilgallen
2003-09-17 14:14                     ` Jon S. Anthony
2003-09-17 17:23                     ` Gautier Write-only
2003-09-18  0:39                     ` Berend de Boer
2003-09-18 16:52                     ` chris
2003-09-22 15:51                       ` Robert I. Eachus
2003-09-22 16:29                         ` Warren W. Gay VE3WWG
2003-09-22 16:30                         ` chris
2003-09-23  9:26                         ` Dmitry A. Kazakov
2003-09-24  1:46                           ` Nick Roberts
2003-09-24 14:28                             ` Maxim S. Shatskih
2003-09-24 16:01                               ` Preben Randhol
2003-09-24 16:52                                 ` Stephane Richard
2003-09-24 17:19                                   ` chris
2003-09-25 17:49                                 ` OT " Pascal Obry
2003-09-25 19:30                                   ` Pascal Obry
2003-09-25 20:32                                   ` tmoran
2003-09-26 18:57                                     ` Pascal Obry
2003-09-27  0:40                                       ` Stephane Richard
2003-09-27  8:05                                         ` Preben Randhol
2003-09-27 10:01                                         ` chris
2003-09-24 16:33                               ` Time Taken to Boot Nick Roberts
2003-09-24 20:11                                 ` Mark A. Biggar
2003-09-25 15:14                                   ` Maxim S. Shatskih
2003-09-25 17:29                                     ` Warren W. Gay VE3WWG
2003-09-25 15:00                             ` Ada 0Y plans for garbage collection? Robert C. Leif
2003-09-12 17:20           ` Robert I. Eachus
2003-09-13  9:54             ` Martin Krischik
2003-09-13 20:37               ` Robert I. Eachus
2003-09-15 13:33             ` Dmitry A. Kazakov
2003-09-15 21:17               ` Alexander Kopilovitch
2003-09-14 19:10     ` Matthew Heaney
2003-09-15  6:48       ` Martin Krischik
2003-09-14 13:19 ` Matthew Heaney
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox