comp.lang.ada
 help / color / mirror / Atom feed
From: Shark8 <onewingedshark@gmail.com>
Subject: Re: Ada design bug or GNAT bug?
Date: Fri, 3 Jul 2015 18:52:23 -0700 (PDT)
Date: 2015-07-03T18:52:23-07:00	[thread overview]
Message-ID: <4228c0ea-837d-42a0-b2a8-a98d8d30f820@googlegroups.com> (raw)
In-Reply-To: <mn4jj1$n50$3@loke.gir.dk>

On Thursday, July 2, 2015 at 6:04:50 PM UTC-6, Randy Brukardt wrote:
> 
> The reason Ada has anonymous access parameters was a desire (for Ada 9x) 
> that code from existing OOP languages like C++ could be directly converted 
> to Ada without having to think at all (thinking being necessary to get rid 
> of access types).

Do you think, in hindsight that (anonymous access parameters) was a mistake?

> [snip]
> >
> >One may think that the distinction between class type and tagged type is 
> >subtle, but the
> >implications of it are huge : without class object one needs as replacement 
> >access to a
> >class wide type. This has led to the use of access values everywhere when 
> >doing OOP.
> >To ease the pain access parameters and anonymous access types were 
> >introduced...
> 
> This seems to me to be nonsense. There's no need to use access types in Ada 
> OOP interfaces; "in out T" and "access T" have virtually the same semantics 
> when T is a tagged type. (Claw only has one access type in its entire 
> interface, used for a return type that ought to be by reference. Everything 
> else does not use visible access types.) It's more work this way, but it's 
> definitely possible.

I think I remember getting an error-message in GNAT awhile back about return and reference semantics... wasn't that something that Ada95 had but was later forbidden in Ada 2005? -- Also, do you think it would have been better to have extended-return signal to the compiler a desire for a build-in-place return-object?

Also, I seem to recall your dislike of INTERFACEs -- in hindsight, what would you have done differently if you needed the mechanism of "Type T has functions X, Y, and X" applied to a group of types? Generics, or some variations thereof?

>> with P1; use P1;
>> package P2 is
>>   type T3 is new T1 with private;
>> private
>>   type T3 is new T2 with null record; -- Legal!
>
>This is only legal because of a hack, which I was very much against
introducing. If you have an extension component, this is illegal:
>
>    type T4 is new T2 with record C : Character := '1'; end record; --  
Illegal!!!

Why is this hack required?/How was it justified? How would you address the problem w/o resorting to this hack?


Other than those specifics, I'm quite interested to know what you regard to be mistakes in Ada's design.


  reply	other threads:[~2015-07-04  1:52 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-20 18:55 Ada design bug or GNAT bug? Dmitry A. Kazakov
2015-06-21  2:42 ` Randy Brukardt
2015-06-21  6:47   ` Dmitry A. Kazakov
2015-06-22 17:39     ` Randy Brukardt
2015-06-22 18:16       ` Dmitry A. Kazakov
2015-06-23 11:00         ` G.B.
2015-06-23 14:27           ` Dmitry A. Kazakov
2015-06-23 11:45         ` G.B.
2015-06-23 14:30           ` Dmitry A. Kazakov
2015-07-02 22:22         ` Randy Brukardt
2015-07-03  8:02           ` Dmitry A. Kazakov
2015-07-03 17:33             ` Randy Brukardt
2015-07-03 21:34               ` Dmitry A. Kazakov
2015-07-04  3:11                 ` Randy Brukardt
2015-07-04 12:14                   ` Dmitry A. Kazakov
2015-07-05  0:53                     ` Randy Brukardt
2015-06-22 18:27       ` Shark8
2015-06-23 11:51         ` vincent.diemunsch
2015-06-23 19:55           ` Shark8
2015-06-23 13:06         ` vincent.diemunsch
2015-06-23 14:30           ` David Botton
2015-06-23 15:57             ` Niklas Holsti
2015-06-23 16:01               ` G.B.
2015-06-23 18:05               ` David Botton
2015-06-23 19:38               ` David Botton
2015-06-23 14:38           ` Dmitry A. Kazakov
2015-06-23 16:57             ` Vincent
2015-06-23 17:15               ` Dmitry A. Kazakov
2015-06-23 19:14                 ` vincent.diemunsch
2015-06-23 19:33                   ` Dmitry A. Kazakov
2015-06-23 17:42           ` Jeffrey R. Carter
2015-07-02 22:06           ` Randy Brukardt
2015-07-04  1:52             ` Shark8 [this message]
2015-07-04  3:24               ` Randy Brukardt
2015-07-04 11:02                 ` Build-in-place semantics? (Was: Ada design bug or GNAT bug?) Jacob Sparre Andersen
2015-07-04 12:15                   ` Dmitry A. Kazakov
2015-07-05  0:45                     ` Randy Brukardt
2015-07-05  7:10                       ` Dmitry A. Kazakov
2015-07-05  0:40                   ` Randy Brukardt
2015-07-04 14:05                 ` Ada design bug or GNAT bug? Bob Duff
2015-07-04  7:46               ` Simon Wright
2015-07-04 12:00                 ` Björn Lundin
2015-07-05  0:48                   ` Randy Brukardt
2015-07-06 12:37             ` Vincent
2015-07-06 20:05               ` Randy Brukardt
2015-07-07  8:06               ` Dmitry A. Kazakov
replies disabled

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