comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Package's private parts and protected types
Date: Tue, 9 Feb 2010 20:29:59 -0600
Date: 2010-02-09T20:29:59-06:00	[thread overview]
Message-ID: <hkt5n8$kp5$1@munin.nbi.dk> (raw)
In-Reply-To: wccy6j2mpa0.fsf@shell01.TheWorld.com

"Robert A Duff" <bobduff@shell01.TheWorld.com> wrote in message 
news:wccy6j2mpa0.fsf@shell01.TheWorld.com...
> AdaMagica <christoph.grein@eurocopter.com> writes:
>
>> OK, but then you have a similar problem to Ada83's syntactically
>> unneeded bodies which Ada95 solved with a pragma.
>
> I think that problem is an illusion.  There was a problem,
> but it was a problem with implementations, not with the
> language.  How do we know if a given package spec has
> a body?  Simple: look on the disk and see if there's
> a source file containing that body.  In GNAT, that would
> mean looking for foo.adb.

I think you're forgetting how this happens in practice. And the actual 
problem with Ada 83, which was that a unneeded unit with an error had to be 
ignored when linking. (The ACVC used to insist on that.) Ada surely needed a 
fix to that problem, and it wasn't one with the implementations -- at least 
not until they were changed to match the ACVC. (I remember doing that in 
Janus/Ada, it was a lot of work and it made things worse for users. 
Wonderful.)

Moreover, it is easy to imagine errors that would cause the unit to no 
longer be the body (such as misspelling the name, or misspelling "body"), at 
which point the implementation would have to guess. But the problem of a 
body that the programmer expected to be included being left out would 
continue. So while I don't doubt that implementations could have reduced the 
problem (in the absense of the ACVC test - the main thing I wanted from Ada 
95 was to change the rules enough to repeal that stupid test!), they 
couldn't have fixed it completely. Surely the same dynamic would occur for a 
separate private part.

I'm also dubious of the basic idea. I suppose you could keep the private 
part in a separate file, but I can't imagine any useful way to *compile* it 
separately (you'd have to have both parts available in order to do any sort 
of code generation). So there wouldn't be much, if any, advantage in terms 
of development. (For Janus/Ada, at least, every source file is compiled 
separately, and code is generated as necessary without needing anything 
other than direct semantic dependencies to have been previously compiled. 
That model is impossible for separate private parts; the specification would 
not contain enough information to generate any code or any code for calls to 
it.)

                                         Randy.





  reply	other threads:[~2010-02-10  2:29 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-08  4:30 Package's private parts and protected types Hibou57 (Yannick Duchêne)
2010-02-08  8:30 ` Martin
2010-02-08  9:11   ` Hibou57 (Yannick Duchêne)
2010-02-08 10:10     ` Alex R. Mosteo
2010-02-08 10:46       ` Hibou57 (Yannick Duchêne)
2010-02-09 14:55         ` Alex R. Mosteo
2010-02-08 10:20   ` Dmitry A. Kazakov
2010-02-08 10:54     ` Hibou57 (Yannick Duchêne)
2010-02-08 10:58       ` Hibou57 (Yannick Duchêne)
2010-02-08 11:01       ` Dmitry A. Kazakov
2010-02-08 13:19         ` Georg Bauhaus
2010-02-08 15:17         ` Robert A Duff
2010-02-08 16:15           ` (see below)
2010-02-08 20:44             ` Robert A Duff
2010-02-08 22:00               ` Hibou57 (Yannick Duchêne)
2010-02-09  5:48               ` AdaMagica
2010-02-09 14:56                 ` Robert A Duff
2010-02-10  2:29                   ` Randy Brukardt [this message]
2010-02-11 23:46                     ` Robert A Duff
2010-02-12  1:29                       ` Randy Brukardt
2010-02-11 23:53                     ` Robert A Duff
2010-02-12  1:10                       ` Randy Brukardt
2010-02-10 16:05                   ` Adam Beneschan
2010-02-10 20:17                     ` sjw
2010-02-12  0:05                     ` Robert A Duff
2010-02-12 11:07                       ` Stephen Leake
2010-02-12 15:01                         ` Robert A Duff
2010-02-13  8:00                           ` Stephen Leake
2010-02-09  9:04               ` stefan-lucks
2010-02-08 17:11           ` Jeffrey R. Carter
2010-02-08 14:56       ` Robert A Duff
2010-02-08 15:36         ` Dmitry A. Kazakov
2010-02-08 16:06           ` Robert A Duff
2010-02-08 17:46             ` Jean-Pierre Rosen
2010-02-08 20:39               ` Robert A Duff
2010-02-08 21:54                 ` Hibou57 (Yannick Duchêne)
2010-02-08 21:50               ` Hibou57 (Yannick Duchêne)
2010-02-08 22:04         ` Hibou57 (Yannick Duchêne)
2010-02-09 10:58         ` Hibou57 (Yannick Duchêne)
2010-02-09 14:47           ` Robert A Duff
2010-02-09 19:34             ` Hibou57 (Yannick Duchêne)
2010-02-09 20:19               ` Hibou57 (Yannick Duchêne)
2010-02-09 23:29               ` Robert A Duff
2010-02-10  2:39               ` Randy Brukardt
2010-02-10  5:12                 ` Hibou57 (Yannick Duchêne)
2010-02-10  7:17                   ` Hibou57 (Yannick Duchêne)
2010-02-10 16:09                   ` Robert A Duff
2010-02-10 22:21                     ` Hibou57 (Yannick Duchêne)
2010-02-11  0:48                       ` Robert A Duff
2010-02-09  0:48     ` Randy Brukardt
2010-02-09 12:43     ` Hibou57 (Yannick Duchêne)
replies disabled

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