From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: memory management in Ada: tedious without GC?
Date: Fri, 23 May 2008 19:15:45 -0400
Date: 2008-05-23T19:15:45-04:00 [thread overview]
Message-ID: <wccskw8d332.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 1qxcw3pphdlek.1jgsfwb7atdmo.dlg@40tude.net
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
> On Sun, 18 May 2008 20:50:48 -0700 (PDT), Matthew Heaney wrote:
>
>> On May 16, 4:42�pm, Maciej Sobczak <see.my.homep...@gmail.com> wrote:
>>>
>>> In Ada RAII is realized with controlled types. They are severely
>>> broken in that they are intrusive in the type hierarchy and they burn
>>> the whole budget for implementation inheritance,
>>
>> No, this is wrong. You can add in Controlled-ness as far down the
>> hierarchy as you like, by adding a controlled component.
>
> This is broken too:
>
> 1. You don't know exactly the order in which the Finalize of the controlled
> component gets called. So if you access the container object over an
> access discriminant, that might be already invalid.
You know something about the order. Initialize is bottom-up,
Finalize is top-down. And when there are access discrims, the
order among subling-components is specified by the RM.
I would prefer a fully defined order, based on the declaration order.
> 2. Similarly, Initialize might be called before the container object is
> fully operational.
Same here.
> 3. Access discriminant would require controlled object to become limited,
> so must be the container.
Ada 2005 allows access discrims on nonlimited types.
> 4. The pattern is exposed to multiple inheritance diamond diagram problem,
> when such components are added independently.
I don't understand your point here. Could you give an example of the
problem?
>> Furthermore, if you blow your budget in Ada, then you blow in C++ too,
>> since invoking Finalization in Ada is the same as invoking a dtor in C+
>
> Well, I suggest that the overhead required in C++ for maintenance virtual
> destructors should be lower than one Ada.Finalization. For example it does
> not require linked list of objects.
Ada's finalization does not require a linked list for stack-allocated
objects. It does for heap-allocated ones.
> IMO, initialization/finalization hooks shall be definable for all types.
- Bob
next prev parent reply other threads:[~2008-05-23 23:15 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-16 17:44 memory management in Ada: tedious without GC? jhc0033
2008-05-16 18:56 ` Ludovic Brenta
2008-05-16 20:42 ` Maciej Sobczak
2008-05-16 21:45 ` Ivan Levashew
2008-05-16 22:59 ` Peter C. Chapin
2008-05-17 5:24 ` jhc0033
2008-05-17 7:50 ` Ivan Levashew
2008-05-16 23:05 ` Randy Brukardt
2008-05-19 3:50 ` Matthew Heaney
2008-05-19 7:55 ` Dmitry A. Kazakov
2008-05-19 13:18 ` Georg Bauhaus
2008-05-19 14:16 ` Dmitry A. Kazakov
2008-05-23 23:15 ` Robert A Duff [this message]
2008-05-24 0:45 ` Randy Brukardt
2008-05-24 8:25 ` Dmitry A. Kazakov
2008-05-24 16:14 ` Robert A Duff
2008-05-24 19:04 ` Dmitry A. Kazakov
2008-05-24 20:52 ` Robert A Duff
2008-05-25 8:12 ` Dmitry A. Kazakov
2008-05-25 11:28 ` Maciej Sobczak
2008-05-25 12:35 ` Robert A Duff
2008-05-26 8:16 ` Dmitry A. Kazakov
2008-05-24 19:39 ` Georg Bauhaus
2008-05-24 20:45 ` Robert A Duff
2008-05-19 8:35 ` Maciej Sobczak
2008-05-19 15:11 ` Matthew Heaney
2008-05-19 21:13 ` Maciej Sobczak
2008-05-23 23:03 ` Robert A Duff
2008-05-24 0:12 ` Adam Beneschan
2008-05-16 22:45 ` anon
2008-05-17 7:34 ` Pascal Obry
2008-05-17 15:11 ` Bob Klungle
2008-05-17 15:27 ` Pascal Obry
2008-05-17 16:18 ` Georg Bauhaus
2008-05-20 8:04 ` Ole-Hjalmar Kristensen
2008-05-20 8:01 ` Ole-Hjalmar Kristensen
2008-05-20 10:03 ` Martin Krischik
2008-05-17 17:23 ` Martin Krischik
2008-05-17 16:51 ` Maciej Sobczak
2008-05-17 17:45 ` Pascal Obry
2008-05-17 22:28 ` Samuel Tardieu
2008-05-18 7:03 ` Martin Krischik
2008-05-18 8:50 ` jhc0033
2008-05-18 9:31 ` Dmitry A. Kazakov
2008-05-18 14:10 ` Maciej Sobczak
2008-05-18 14:59 ` Dmitry A. Kazakov
2008-05-18 20:51 ` Maciej Sobczak
2008-05-19 8:36 ` Dmitry A. Kazakov
2008-05-18 15:03 ` Martin Krischik
2008-05-18 18:27 ` jhc0033
2008-05-19 4:12 ` Matthew Heaney
2008-05-19 8:39 ` Maciej Sobczak
2008-05-19 15:37 ` Matthew Heaney
2008-05-19 21:21 ` Maciej Sobczak
2008-05-19 23:02 ` Matthew Heaney
2008-05-19 10:27 ` Martin Krischik
2008-05-17 22:42 ` Peter C. Chapin
2008-05-18 6:58 ` Martin Krischik
2008-05-18 6:52 ` Martin Krischik
2008-05-18 14:16 ` Maciej Sobczak
2008-05-17 14:30 ` Brian Drummond
2008-05-17 16:47 ` Maciej Sobczak
2008-05-19 14:45 ` Brian Drummond
2008-05-20 7:42 ` Maciej Sobczak
2008-05-20 18:01 ` jayessay
2008-05-18 8:06 ` Simon Wright
2008-05-18 14:21 ` Maciej Sobczak
2008-05-18 20:48 ` Simon Wright
2008-05-19 14:40 ` Brian Drummond
2008-05-19 3:44 ` 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