From: mheaney@ni.net (Matthew Heaney)
Subject: Re: AQ&S Guidance on pragma Elaborate_Body
Date: 1997/04/24
Date: 1997-04-24T00:00:00+00:00 [thread overview]
Message-ID: <mheaney-ya023680002404972329250001@news.ni.net> (raw)
In-Reply-To: JSA.97Apr24162056@alexandria
In article <JSA.97Apr24162056@alexandria>, jsa@alexandria (Jon S Anthony) wrote:
>>>A trivial example is two packages, each of whose bodies with's the others
>> >spec, which is not that uncommon.
>>
>> It may be true that it "is not that uncommon," but mutual dependency of
>> packages indicates that you have a pair of highly cohesive abstractions,
>> and they should really be combined into a single package.
>
>Hmmm, you're probably about the only one left here that believes this.
>The "withing problem" (and this is for SPECS, not just the above sort
>of case) has been discussed here extensively and the general consensus
>is that this inability (to define mutually dependent types across
>package boundaries) is a hole in the language.
You're right, I'm not especially passionate about wanting to define
mutually recursive types across package boundaries.
I think it's a cool idea, though. One of the tricks C++ programmers do is
to pass a reference to an object as a method parameter. That way, you
don't have to #include the other class because you know an address is going
to get passed.
Knowing that tagged types are passed by reference, perhaps we could avoid a
spec dependency on the package containing a tagged type's declaration:
with Q.T is tagged limited private;
package P is
type S is private;
procedure Op (OS : in out S; OT : in Q.T); -- OT is passed by reference
...
In this example, spec deferral makes sense. Sometimes, though, you have
closely-related abstractions - maybe the dependency is in one direction
only, or maybe they're "merely" logically cohesive - and they just sort of
belong together.
Of course, avoiding unnecessary compilation dependencies is A Very Good
Thing, especially in Ada, where value semantics is the norm, and heap
allocation is to be avoided.
So there is a very real tension between the need to minimize compilation
dependencies, and the desire to minimize the "declaration span" between
closely-related types. Yes, we have to program real systems on real
computers, but it's still humans that have to do it.
--------------------------------------------------------------------
Matthew Heaney
Software Development Consultant
<mailto:matthew_heaney@acm.org>
(818) 985-1271
next prev parent reply other threads:[~1997-04-24 0:00 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-04-18 0:00 AQ&S Guidance on pragma Elaborate_Body JP Thornley
1997-04-18 0:00 ` Robert Dewar
1997-04-19 0:00 ` Michael Paus
1997-04-19 0:00 ` Robert A Duff
1997-04-21 0:00 ` Robert Dewar
1997-04-23 0:00 ` Robert A Duff
1997-04-23 0:00 ` Robert Dewar
1997-04-24 0:00 ` Robert A Duff
1997-04-24 0:00 ` Robert Dewar
1997-04-24 0:00 ` Robert Dewar
1997-04-25 0:00 ` Robert A Duff
1997-04-25 0:00 ` Mats Weber
1997-04-25 0:00 ` Robert I. Eachus
1997-04-26 0:00 ` Nick Roberts
1997-04-26 0:00 ` Robert Dewar
1997-04-28 0:00 ` Robert I. Eachus
1997-04-29 0:00 ` Robert Dewar
1997-04-29 0:00 ` Robert I. Eachus
1997-04-27 0:00 ` Robert Dewar
1997-04-28 0:00 ` Mats Weber
1997-04-29 0:00 ` Redefinition of "=", elaboration and learning Ada Mats Weber
1997-04-29 0:00 ` Robert A Duff
1997-04-30 0:00 ` Mats Weber
1997-04-26 0:00 ` AQ&S Guidance on pragma Elaborate_Body Nick Roberts
1997-04-26 0:00 ` Robert Dewar
1997-04-24 0:00 ` Mats Weber
1997-04-24 0:00 ` Robert A Duff
1997-04-24 0:00 ` Robert Dewar
1997-04-25 0:00 ` Robert Dewar
1997-04-20 0:00 ` Robert Dewar
1997-04-21 0:00 ` Michael F Brenner
1997-04-23 0:00 ` Robert Dewar
1997-04-24 0:00 ` Laurent Guerby
1997-04-24 0:00 ` Matthew Heaney
1997-04-24 0:00 ` Jon S Anthony
1997-04-24 0:00 ` Matthew Heaney [this message]
1997-04-26 0:00 ` Nick Roberts
1997-04-26 0:00 ` Matthew Heaney
1997-04-26 0:00 ` Robert A Duff
1997-04-26 0:00 ` Robert Dewar
1997-04-26 0:00 ` Matthew Heaney
1997-04-27 0:00 ` Robert Dewar
1997-04-29 0:00 ` John G. Volan
1997-04-29 0:00 ` Matthew Heaney
1997-04-30 0:00 ` Jon S Anthony
1997-05-01 0:00 ` John G. Volan
1997-05-02 0:00 ` Booch "forms" and child packages [was: AQ&S Guidance on pragma Elaborate_Body] John G. Volan
1997-05-02 0:00 ` AQ&S Guidance on pragma Elaborate_Body John G. Volan
1997-04-25 0:00 ` Robert Dewar
1997-04-24 0:00 ` Robert A Duff
1997-04-24 0:00 ` Robert Dewar
1997-04-25 0:00 ` Michael F Brenner
1997-04-26 0:00 ` Nick Roberts
1997-04-18 0:00 ` Robert A Duff
1997-04-21 0:00 ` Michael F Brenner
1997-04-22 0:00 ` Robert A Duff
1997-04-20 0:00 ` Doug Smith
1997-04-20 0:00 ` Robert Dewar
1997-04-21 0:00 ` Matthew Heaney
1997-04-21 0:00 ` Robert A Duff
1997-04-21 0:00 ` Robert Dewar
1997-04-22 0:00 ` Robert A Duff
1997-04-24 0:00 ` Robert Dewar
1997-04-21 0:00 ` Matthew Heaney
1997-04-21 0:00 ` Matthew Heaney
1997-04-22 0:00 ` Mats Weber
1997-04-22 0:00 ` Robert A Duff
1997-04-22 0:00 ` Matthew Heaney
1997-04-22 0:00 ` Robert A Duff
1997-04-22 0:00 ` Matthew Heaney
1997-04-23 0:00 ` Robert A Duff
1997-04-24 0:00 ` Matthew Heaney
1997-04-24 0:00 ` Robert A Duff
1997-04-25 0:00 ` Robert Dewar
1997-04-23 0:00 ` Robert Dewar
1997-04-24 0:00 ` Robert Dewar
1997-04-24 0:00 ` Robert A Duff
1997-04-23 0:00 ` Robert Dewar
1997-04-21 0:00 ` Robert A Duff
-- strict thread matches above, loose matches on Subject: below --
1997-04-30 0:00 W. Wesley Groleau (Wes)
1997-04-30 0:00 ` Robert I. Eachus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox