comp.lang.ada
 help / color / mirror / Atom feed
From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: Visibility of Indexing aspects
Date: Wed, 25 Jul 2018 13:57:16 -0700 (PDT)
Date: 2018-07-25T13:57:16-07:00	[thread overview]
Message-ID: <3eebe2fb-f066-4248-9b2f-1db32497fd82@googlegroups.com> (raw)
In-Reply-To: <1392b483-af72-4dbe-ad51-bd703405b7a8@googlegroups.com>

On Wednesday, July 25, 2018 at 2:58:44 PM UTC-5, AdaMagica wrote:
> Much ado about nothing.
> 
> The writer of this code erroneously put things in the private part which should have been public. There is a compiler bug leaking from privacy which seduced the writer into thinking that his wrong code is correct.
> 
> The RM is very precise about this, see the references in this thread.
> 
> Love's Labours Lost with any further discussion.

In other words, I made an insightful good point about Ada failing (in that vicinity) to live up to a key portion of its core mission/reason-for-existence from Day One:  the ability to keep private portions of a design private by not forcing public declarations of portions of the design that the designer overtly intends to be kept private.  The response to my insightful good point about Ada embarrassingly failing (in this portion) to live up to one of its fundamental goals (i.e., encapsulation):  Shut it down!  Shut it down!  Speak no more about this topic!  Bury it!  Nothing to see here; move along!
https://www.youtube.com/watch?v=pdFl__NlOpA&frags=pl%2Cwn

This so-called “severe compiler bug” is a highly useful software-engineering usecase of keeping private portions of the design private instead of forcibly dragging source code up to public for no good reason in the design.  The gratuitous publicizing of those OP's private declarations of {Reference, Reference_Holder, Container_Array, ...} opens those gratuitously-publicized declarations up to misuse and abuse by users of the package, in contravention of Steelman requirements 3-5A and 3-5B.

The designer of OP's package wants to evoke the Variable_Indexing for users of the package without permitting the users of the package to directly use/misuse/abuse {Reference, Reference_Holder, Container_Array, ...}.

Steelman 3-5A clearly states “An encapsulation may contain declarations of ••anything•• (including the data elements and operations comprising a type) that is definable in programs.”  Variable_Indexing clearly is a set of operations comprising a type.

Steelman 3-5B clearly states “An encapsulation may be used to inhibit external access to implementation properties of the definition. In particular, it shall be possible to prevent external reference to ••any declaration•• within the encapsulation including automatically defined operations such as type conversions and equality. Definitions that are made within an encapsulation and are ••externally accessible•• may be renamed before use outside the encapsulation.”

So the question is:  how does the _LRM_ live up to Steelman 3-5B's requirement for “•any• declaration” for “automatically defined operations” (e.g., Variable_Indexing) to be made “•externally accessible•” in the public part of the package by being “renamed before use outside” that private part of the package?  It seems that OP's/GNAT's “severe bug” comes far closer to living up to the letter & spirit of Steelman 3-5B's explicit demand there than the current wording of the _LRM_ that seems to force those private declarations of {Reference, Reference_Holder, Container_Array, ...} to be gratuitously publicized.

The _LRM_'s forcing of {Reference, Reference_Holder, Container_Array, ...} to be public declarations instead of OP's private declarations seems to be itself a crystal-clear “severe noncompliance” with Steelman 3-5A's “•any• declaration … including •automatically defined• operations” intersecting with Steelman 3-5B's “••any declaration•• … including automatically defined operations … made … ••externally accessible•• ”.


  reply	other threads:[~2018-07-25 20:57 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-14 14:18 Visibility of Indexing aspects Jere
2018-07-14 17:04 ` Shark8
2018-07-14 18:29   ` Jere
2018-07-14 18:41     ` Dmitry A. Kazakov
2018-07-14 23:00     ` Shark8
2018-07-14 23:28       ` Jere
2018-07-15 14:41 ` AdaMagica
2018-07-15 15:33   ` Jere
2018-07-16  3:22     ` AdaMagica
2018-07-17  0:35       ` Jere
2018-07-17  9:46         ` AdaMagica
2018-07-17 10:11           ` AdaMagica
2018-07-20 12:08             ` Jere
2018-07-20 16:11               ` AdaMagica
2018-07-20 22:03                 ` Dan'l Miller
2018-07-20 22:07                 ` Jere
2018-07-21 10:33                   ` AdaMagica
2018-07-24  3:32                   ` Randy Brukardt
2018-07-24 17:15                     ` Dan'l Miller
2018-07-25  5:37                       ` Randy Brukardt
2018-07-25 18:26                         ` Dan'l Miller
2018-07-25 19:58                           ` AdaMagica
2018-07-25 20:57                             ` Dan'l Miller [this message]
2018-07-26  0:12                               ` Randy Brukardt
2018-07-26  2:41                                 ` Dan'l Miller
2018-07-26 19:09                                   ` Randy Brukardt
2018-07-26 20:31                                 ` Shark8
2018-07-26 21:25                                   ` Dan'l Miller
2018-07-27 22:05                                     ` Randy Brukardt
2018-07-28  0:35                                       ` Dan'l Miller
2018-07-27 21:58                                   ` Randy Brukardt
2018-07-20 22:23                 ` Jere
2018-07-20 22:25                   ` Jere
2018-07-21  5:58                   ` J-P. Rosen
  -- strict thread matches above, loose matches on Subject: below --
2018-08-02 20:31 Randy Brukardt
2018-08-03  0:43 ` Dan'l Miller
2018-08-03 20:56   ` Randy Brukardt
2018-08-03 21:32     ` Dan'l Miller
2018-08-06 21:46       ` Randy Brukardt
2018-08-06 22:12         ` Dmitry A. Kazakov
2018-08-07 15:13         ` Dan'l Miller
2018-08-07 22:41           ` Randy Brukardt
replies disabled

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