comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Inherited Methods and such
Date: Mon, 24 Sep 2007 20:59:53 -0500
Date: 2007-09-24T20:59:53-05:00	[thread overview]
Message-ID: <fd9ptb$ct7$1@jacob-sparre.dk> (raw)
In-Reply-To: 9ukf2wtqjs0q$.iuijmal4x56b$.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:9ukf2wtqjs0q$.iuijmal4x56b$.dlg@40tude.net...
...
> > Right. Ada doesn't have *any* constructors. :-)
>
> Surely it has. The point is that in NO typed language a constructor can be
> defined solely in the language terms. Constructors have to be generated
> "per magic." But the language shall provide hooks for user-defined
> insertions in the generated constructors at the points, where the type
> contracts are satisfied. Isn't it obvious?
>
> Ada keeps on trying to use only magic. Returning limited types, new in Ada
> 2005, is just another step in this direction.

Ada has no choice. You agree that "magic" is needed to do the memory
allocation, layout, etc. for the underlying object. (To say otherwise would
be to require all objects to be fixed in size.) But that is not divisible
from the initialization of the value in Ada (and the values of the
components), because the memory allocation depends on the value of the
discriminants, and even the components that exist depends on those values.

One could require all objects to be constrained at birth, or to not have
discriminant-dependent components, but such a language is not Ada (even if
it would work just fine for O-O purposes). Those things are a legacy of
Ada's Ada 83 roots.

Note that this is very similar to the reasons that Ada cannot have "real"
user-defined assignment; it's not possible to divide an assignment into
components managed separately.

I made the mistake of thinking as you did when we implemented discriminated
records in Janus/Ada (a long, long time ago). It led to a never-ending
series of bugs, and an equal amount of work replacing it with code that
actually works (and does all of the steps of initialization at once).

> This is IMO a road to nowhere.

It's way better than no constructors at all, which is the only other option.

> And also, it is inconsistent with Ada's own stance on types
> matching by-name rather than by-structure.

This I don't see at all. Since constructors are named (and I agree that
Initialize is not a constructor in any sense, its more of an initial
mutator) and are tied to the return types, they fit well into the Ada type
model. The best constructors are dispatching, and those surely are
one-to-one with the types that they construct (Ada 95 required those to be
overridden for each new type; the Amendment changed that over my strong
objections, but even so you surely are allowed to override them).

                      Randy.





  parent reply	other threads:[~2007-09-25  1:59 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-17 14:26 Inherited Methods and such shaunpatterson
2007-09-17 15:11 ` Ludovic Brenta
2007-09-17 16:46   ` shaunpatterson
2007-09-17 19:07     ` Ludovic Brenta
2007-09-17 20:22   ` Maciej Sobczak
2007-09-17 21:07     ` Ludovic Brenta
2007-09-18 14:27       ` Maciej Sobczak
2007-09-18 14:27       ` Maciej Sobczak
2007-09-18 15:25         ` Dmitry A. Kazakov
2007-09-18 18:34           ` Ludovic Brenta
2007-09-18 19:29             ` Dmitry A. Kazakov
2007-09-18 19:39               ` Ludovic Brenta
2007-09-18 20:49                 ` Dmitry A. Kazakov
2007-09-18 21:10               ` Simon Wright
2007-09-18 20:39           ` Maciej Sobczak
2007-09-18 21:12             ` Dmitry A. Kazakov
2007-09-19 14:49               ` Maciej Sobczak
2007-09-19 15:16                 ` Dmitry A. Kazakov
2007-09-19 22:13                   ` Maciej Sobczak
2007-09-20  8:12                     ` Dmitry A. Kazakov
2007-09-20 13:52                       ` Maciej Sobczak
2007-09-20 16:22                         ` Dmitry A. Kazakov
2007-09-20 20:45                           ` Maciej Sobczak
2007-09-21 18:59                             ` Dmitry A. Kazakov
2007-09-21 21:02                               ` Maciej Sobczak
2007-09-22  8:48                                 ` Dmitry A. Kazakov
2007-09-22 21:53                                   ` Maciej Sobczak
2007-09-23  8:41                                     ` Dmitry A. Kazakov
2007-09-23 20:36                                       ` Maciej Sobczak
2007-09-24  9:32                                         ` Dmitry A. Kazakov
2007-09-24 15:02                                           ` Maciej Sobczak
2007-09-24 19:20                                             ` Dmitry A. Kazakov
2007-09-25 20:53                                               ` Maciej Sobczak
2007-09-26 10:42                                                 ` Dmitry A. Kazakov
2007-09-26 21:31                                                   ` Maciej Sobczak
2007-09-27 15:02                                                     ` Dmitry A. Kazakov
2007-09-27 21:02                                                       ` Maciej Sobczak
2007-09-26 12:21                                                 ` Robert A Duff
2007-09-26 12:54                                                   ` Dmitry A. Kazakov
2007-09-26 21:37                                                   ` Maciej Sobczak
2007-09-26 23:47                                                     ` Randy Brukardt
2007-09-27 21:08                                                       ` Maciej Sobczak
2007-09-28  0:44                                                         ` Randy Brukardt
2007-09-28 20:32                                                           ` Maciej Sobczak
2007-09-28 22:35                                                             ` Randy Brukardt
2007-09-29 23:58                                                             ` Robert A Duff
2007-09-26 12:26                                                 ` Robert A Duff
2007-09-26 21:50                                                   ` Maciej Sobczak
2007-09-26 22:20                                                     ` Ray Blaak
2007-09-27  0:01                                                     ` Randy Brukardt
2007-09-27 13:39                                                     ` Robert A Duff
2007-09-27 14:54                                                       ` Dmitry A. Kazakov
2007-09-28  0:35                                                         ` Randy Brukardt
     [not found]                                                           ` <7p6gc1s9imfa$.kmvwf5zyf8e9.dlg@40tude.net>
2007-09-28 22:53                                                             ` Randy Brukardt
2007-09-29 20:37                                                               ` Dmitry A. Kazakov
2007-09-27 21:23                                                       ` Maciej Sobczak
2007-09-28 19:12                                                         ` Robert A Duff
2007-09-28 19:02                                                     ` Robert A Duff
2007-09-28 19:42                                                       ` Robert A Duff
2007-09-28 20:44                                                         ` Maciej Sobczak
2007-09-28 22:40                                                           ` Randy Brukardt
2007-09-29 20:35                                                           ` Dmitry A. Kazakov
2007-09-29 20:52                                                             ` Maciej Sobczak
2007-09-30  8:38                                                               ` Dmitry A. Kazakov
2007-09-29 23:47                                                             ` Robert A Duff
2007-09-29 20:48                                                           ` Maciej Sobczak
2007-09-29 23:39                                                             ` Robert A Duff
2007-09-30  8:38                                                               ` Dmitry A. Kazakov
2007-09-29 23:42                                                           ` Robert A Duff
2007-09-25  1:59                                   ` Randy Brukardt [this message]
2007-09-25  8:59                                     ` Dmitry A. Kazakov
2007-09-25 21:02                                       ` Randy Brukardt
2007-09-26 12:42                                         ` Dmitry A. Kazakov
2007-09-18  4:03 ` Steve
replies disabled

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