comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Possible Ada deficiency?
Date: Fri, 7 Jan 2005 15:32:31 -0600
Date: 2005-01-07T15:32:31-06:00	[thread overview]
Message-ID: <HOadnQBnqp4TYkPcRVn-hA@megapath.net> (raw)
In-Reply-To: gemini.i9yj3c0051not02as.nick.roberts@acm.org

"Nick Roberts" <nick.roberts@acm.org> wrote in message
news:gemini.i9yj3c0051not02as.nick.roberts@acm.org...
> "Randy Brukardt" <randy@rrsoftware.com> wrote:
>
> > The purpose of a child package is to extend its parent, often in ways
not
> > forseen by the parent's author. You're trying to prevent that purpose.
If
> > you don't want access to the private information, then don't write
> > children. You have to at some point trust programmers to do something
> > sensible; it's not the least bit hard to use 'Address or
> > Unchecked_Conversion to access the private information of a package, no
> > matter where you hide it.
>
> I think you're missing the point a little, Randy.
>
> Suppose there are some things in the private part of a package that you do
> want private children of the package to be able to see (and modify), and
> some other things in the private part that you do not want even private
> children to be able to see (or modify).
>
> In this case, it would seem it may be useful to have language construct
that
> allows this intention to be clearly stated, and enforced by the compiler.

There is, it's called the "body". :-)

> If the intention later turns out to be an obstacle, the construct can be
> changed or removed. But if the intention is /accidentally/ violated, it
> could be very useful for the compiler to detect it and flag it up.
>
> I suppose the problem is, such a construct would imply the need for a new
> kind of private child -- perhaps a 'private private' child ;-) -- which
> could access the secret stuff. And then one might have ultra-secret stuff,
> and then ultra-secret children, and so on.
>
> So possibly the argument against is that it would be overkill.

Right. When the ARG considered adding an extra part to package
specifications to support mutually dependent packages (which eventually was
handled with limited with), there were two major concerns:
1) the interactions of the visibility rules for private parts with other
rules of the language are already very complex (and hard to implement). We'd
be nuts to double those interactions with a new kind of package part.
2) How would the user be able to decide what part to put things in? Imagine
the world if all of these proposals had been accepted: package would have 5
parts! (abstract, visible, private, concealed, body).

The way to solve this problem is to figure out how to put more stuff into
the body, not inventing new kinds of parts. It has been claimed (correctly,
IMHO) that the private part originally was a hack to allow compilers to be
written more easily. Ada 95 gave it a second use (exporting stuff within the
subsystem to child units), and it is the conflict between the hack and the
legitimate use that is causing the problem. So the real solution is to get
rid of the requirement for the hack. But there currently isn't the will to
do that - maybe next time.

                           Randy.







  parent reply	other threads:[~2005-01-07 21:32 UTC|newest]

Thread overview: 103+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-31 18:15 Possible Ada deficiency? danmcleran
2004-12-31 19:12 ` Jeffrey Carter
2005-01-01  1:52   ` danmcleran
2005-01-01  2:37     ` Jeffrey Carter
2005-01-01  2:02   ` danmcleran
2005-01-01 14:11     ` Martin Krischik
2005-01-01 15:27       ` danmcleran
2005-01-02 17:49         ` Martin Krischik
2005-01-01 15:30     ` Stephen Leake
2005-01-01 15:57       ` danmcleran
2005-01-03 23:37         ` Randy Brukardt
2005-01-07 17:26           ` Nick Roberts
2005-01-07 18:26             ` danmcleran
2005-01-07 21:32             ` Randy Brukardt [this message]
2005-01-08  3:56               ` Nick Roberts
2005-01-08 18:15                 ` Robert A Duff
2005-01-08 19:11                   ` Jeffrey Carter
2005-01-08 20:03                     ` Robert A Duff
2005-01-09  3:40                       ` Jeffrey Carter
2005-01-09 17:30                         ` Robert A Duff
2005-01-09 19:24                           ` Jeffrey Carter
2005-01-09 21:56                           ` Nick Roberts
2005-01-10 13:47                             ` Dmitry A. Kazakov
2005-01-10 16:46                               ` Duncan Sands
2005-01-10 17:58                                 ` Pascal Obry
2005-01-10 18:45                                   ` Dmitry A. Kazakov
2005-01-10 19:44                                     ` Pascal Obry
2005-01-11 10:05                                       ` Dmitry A. Kazakov
2005-01-11  7:24                                     ` Vinzent 'Gadget' Hoefler
2005-01-11  9:48                                       ` Dmitry A. Kazakov
2005-01-11 13:57                                         ` Vinzent 'Gadget' Hoefler
2005-01-11 21:52                                           ` Robert A Duff
2005-01-12 11:22                                           ` Dmitry A. Kazakov
2005-01-09 17:23                   ` danmcleran
2005-01-09 17:46                     ` Robert A Duff
2005-01-10  3:05                       ` danmcleran
2005-01-09 18:41                   ` Nick Roberts
2005-01-09 19:06                     ` Martin Krischik
2005-01-09 20:10                     ` Robert A Duff
2005-01-09 20:15                     ` Robert A Duff
2005-01-11 14:13                       ` Possible Ada deficiency? (goto) Peter Hermann
2005-01-11 14:54                         ` Nick Roberts
2005-01-11 22:15                         ` Robert A Duff
2005-01-12 10:17                           ` Peter Hermann
2005-01-15 17:34                             ` Robert A Duff
2005-01-15 17:58                               ` Dmitry A. Kazakov
2005-01-15 19:34                                 ` Robert A Duff
2005-01-10 20:15                   ` Possible Ada deficiency? Randy Brukardt
2005-01-10 21:51                     ` Robert A Duff
2005-01-11 20:23                       ` Randy Brukardt
2005-01-11 21:24                         ` Robert A Duff
2005-01-12 19:57                           ` Randy Brukardt
2005-01-02 15:51       ` Adrian Hoe
2005-01-04 16:06       ` Peter Hermann
2005-01-01 23:36     ` tmoran
2005-01-02  3:38       ` danmcleran
2004-12-31 19:16 ` Martin Dowie
2005-01-01  2:32   ` Jeffrey Carter
2004-12-31 23:23 ` Nick Roberts
2005-01-01  1:56   ` danmcleran
2005-01-01 11:43 ` Dmitry A. Kazakov
2005-01-01 15:46   ` danmcleran
2005-01-01 17:58     ` Larry Kilgallen
2005-01-01 19:43       ` danmcleran
2005-01-02  0:36         ` Ed Falis
2005-01-02  3:36           ` danmcleran
2005-01-02 15:53             ` Ed Falis
2005-01-07 18:31               ` danmcleran
2005-01-07 18:44                 ` Pascal Obry
2005-01-07 19:29                   ` danmcleran
2005-01-07 21:28                     ` Pascal Obry
2005-01-01 23:28   ` danmcleran
2005-01-02 10:26     ` Dmitry A. Kazakov
2005-01-02 15:51       ` danmcleran
2005-01-03 23:48     ` Randy Brukardt
2005-01-01 14:06 ` Martin Krischik
2005-01-01 15:53   ` danmcleran
2005-01-07 21:33 ` Robert A Duff
2005-01-09 17:15   ` danmcleran
2005-01-09 17:38     ` Robert A Duff
2005-01-10  3:16       ` danmcleran
2005-01-09 18:41     ` Martin Dowie
2005-01-10  3:18       ` danmcleran
2005-01-10 20:32         ` Randy Brukardt
2005-01-10 21:42           ` danmcleran
2005-01-10 21:36         ` Robert A Duff
2005-01-10 21:44           ` danmcleran
2005-01-09 19:01     ` Jeffrey Carter
2005-01-10  3:20       ` danmcleran
2005-01-10 22:16         ` Robert A Duff
2005-01-10 22:29           ` danmcleran
2005-01-11 20:12             ` Georg Bauhaus
2005-01-11 20:30               ` danmcleran
2005-01-11 21:44               ` Robert A Duff
2005-01-11  0:06           ` Jeffrey Carter
2005-01-11  0:46             ` Robert A Duff
2005-01-11 20:37           ` danmcleran
2005-01-11 21:08             ` Robert A Duff
2005-01-17  4:40 ` Tucker
2005-01-18 13:46   ` danmcleran
2005-01-18 21:29     ` Nick Roberts
2005-01-24 17:23   ` danmcleran
  -- strict thread matches above, loose matches on Subject: below --
2004-12-31 19:06 danmcleran
replies disabled

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