comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: How come Ada isn't more popular?
Date: Sat, 10 Feb 2007 10:15:24 +0100
Date: 2007-02-10T10:15:07+01:00	[thread overview]
Message-ID: <jogwsj4fsx7g.olpwrvwj7alf$.dlg@40tude.net> (raw)
In-Reply-To: mailman.90.1171081138.18371.comp.lang.ada@ada-france.org

On Fri, 9 Feb 2007 22:18:51 -0600, Randy Brukardt wrote:

> Dmitry A. Kazakov writes:
> ...
>> Because it does not compose upon inheritance and aggregation.
>>
>> When inherited the constructing function need to be overridden, even if
>> null record was the only thing added.
> 
> That's not true in Ada 2007. (That's a change I strongly opposed, BTW,
> because it makes prototyping much harder. I usually start an extension with
> a null record, figure out what needs to be overridden (giving those null
> bodies), and then implement the actual routines and data. This no longer
> works, because as soon as you add an extension component you are back to
> square one.)

Yuck. Do I understand correctly, primitive operations are no more covariant
in the result?

   type T is tagged ...;
   function Foo return T;

   type S is new T ...;
      -- I don't need to override Foo????

>> Further one can barely publicly
>> derive anything from T, which breaks encapsulation.
> 
> Not sure what you mean by this. It's certainly possible for a deivation to
> break encapsulation (by deriving in a child unit, for instance),

Which is not always desirable or even possible, as we don't have multiple
parents (alas!).

> It is annoying that we couldn't find a way to get composition to work for
> anything other than :=, =, and stream attributes.

I think that the problem is that we have no unified composition model for
primitive operations. Things composed per magic (like ":=" or dispatching
subprograms) use different rules. Why don't we try to expose this mechanics
in the language? There certainly exist a common denominator of how
operations are composed. It is either of:

    g := f o g  -- f extends g
    g := g o f  -- f prepends g
    g := f       -- f replaces g
    g := e o g o p -- prologue and epilogue (conversion)
                   -- (like in out Natural accepting actual Integer)

All primitive operations including assignment, attributes, constructors
(from raw memory to object's invariant), destructors (backwards),
aggregates, conversions fall under some combination of these patterns.

This could radically simplify the language (fully backward compatible of
course).

> (The lack of it for
> finalization routines is especially aggrevating and error prone.)

Yes, especially, because there is no name for parent's Initialize/Finalize.

> But the
> workarounds for constructors aren't particularly bad, especially as you can
> use extension aggregates in your overridings.
> 
>       (F with <new components>);

Yes, aggregates compose (which is good), but they aren't functions. There
is an underlying thing which IMO should be named and exposed.

BTW, the aggregate above is almost equivalent to C++'s constructor
definition

    Derived::Derived (...) : F(...), <new components> {}

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2007-02-10  9:15 UTC|newest]

Thread overview: 282+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-10  4:18 How come Ada isn't more popular? Randy Brukardt
2007-02-10  9:15 ` Dmitry A. Kazakov [this message]
2007-02-10 13:22   ` Robert A Duff
2007-02-10 15:54     ` Dmitry A. Kazakov
2007-02-12 14:23       ` Robert A Duff
2007-02-12 15:49         ` Dmitry A. Kazakov
  -- strict thread matches above, loose matches on Subject: below --
2007-01-23  5:53 artifact.one
2007-01-23  6:37 ` adaworks
2007-01-23  6:50   ` artifact.one
2007-01-23 14:24   ` Arthur Evans Jr
2007-01-23 20:11     ` Jeffrey R. Carter
2007-01-23 21:14       ` Markus E Leypold
2007-01-23 15:23   ` Ed Falis
2007-01-23 20:09   ` Jeffrey R. Carter
2007-01-24  8:50     ` Dmitry A. Kazakov
2007-01-24 20:23       ` Jeffrey R. Carter
2007-01-24 11:06     ` gautier_niouzes
2007-01-24 19:25       ` tmoran
2007-01-25  4:46         ` Gautier
2007-01-25  9:29           ` Markus E Leypold
2007-01-27 16:59             ` Stephen Leake
2007-01-27 20:40               ` Markus E Leypold
2007-01-27 21:19                 ` Markus E Leypold
2007-01-28  8:44                   ` Ray Blaak
2007-01-29  8:56                 ` Maciej Sobczak
2007-01-29 14:21                   ` Markus E Leypold
2007-01-31  9:23                     ` Maciej Sobczak
2007-01-31 10:24                       ` Markus E Leypold
2007-02-02  8:42                         ` Maciej Sobczak
2007-02-02  9:32                           ` Alex R. Mosteo
2007-02-02 11:04                             ` Maciej Sobczak
2007-02-02 13:57                           ` Markus E Leypold
2007-02-03  9:44                             ` Dmitry A. Kazakov
2007-02-03 14:51                               ` Markus E Leypold
2007-02-04 17:55                                 ` Dmitry A. Kazakov
2007-02-04 20:18                                   ` Markus E Leypold
2007-02-04 21:29                                     ` Dmitry A. Kazakov
2007-02-04 22:33                                       ` Markus E Leypold
2007-02-05  9:20                                         ` Dmitry A. Kazakov
2007-02-05 12:16                                           ` Harald Korneliussen
2007-02-05 14:06                                             ` Dmitry A. Kazakov
2007-02-05 13:53                                           ` Markus E Leypold
2007-02-05  9:59                             ` Maciej Sobczak
2007-02-05 13:43                               ` Markus E Leypold
2007-02-06  9:15                                 ` Maciej Sobczak
2007-02-06 11:45                                   ` Markus E Leypold
2007-02-06 14:16                                     ` Maciej Sobczak
2007-02-06 15:44                                       ` Markus E Leypold
2007-02-06 17:40                                         ` Dmitry A. Kazakov
2007-02-07  8:55                                         ` Maciej Sobczak
2007-02-07 10:10                                           ` Georg Bauhaus
2007-02-07 10:56                                           ` Markus E Leypold
2007-02-07 22:58                                             ` Georg Bauhaus
2007-02-08  9:04                                             ` Maciej Sobczak
2007-02-08 10:01                                               ` Markus E Leypold
2007-02-06 17:47                                       ` Ray Blaak
2007-02-06 18:05                                         ` Dmitry A. Kazakov
2007-02-06 18:28                                           ` Markus E Leypold
2007-02-07  7:54                                           ` Maciej Sobczak
2007-02-07  9:42                                             ` Markus E Leypold
2007-02-08  8:10                                               ` Maciej Sobczak
2007-02-08 18:14                                             ` Dmitry A. Kazakov
2007-02-09  8:17                                               ` Maciej Sobczak
2007-02-09 14:02                                                 ` Dmitry A. Kazakov
2007-02-09 18:08                                                   ` Ray Blaak
2007-02-09 18:43                                                     ` Dmitry A. Kazakov
2007-02-09 18:57                                                       ` Ray Blaak
2007-02-09 18:03                                                 ` Ray Blaak
2007-02-09 18:47                                                   ` Randy Brukardt
2007-02-09 19:02                                                     ` Ray Blaak
2007-02-09 19:35                                                       ` Randy Brukardt
2007-02-09 19:52                                                         ` Ray Blaak
2007-02-12  7:20                                                           ` Harald Korneliussen
2007-02-12 14:12                                                             ` Robert A Duff
2007-02-09 22:11                                                         ` Markus E Leypold
2007-02-09 22:05                                                     ` Markus E Leypold
2007-02-10  1:31                                                       ` Randy Brukardt
2007-02-10  2:18                                                         ` Markus E Leypold
2007-02-05 19:05                               ` Ray Blaak
2007-02-09  8:01                           ` adaworks
2007-02-09  9:07                             ` Jean-Pierre Rosen
2007-02-09 10:36                               ` Maciej Sobczak
2007-02-09 12:50                                 ` Robert A Duff
2007-02-09 14:02                                   ` Dmitry A. Kazakov
2007-02-10 18:21                                     ` adaworks
2007-02-10 18:41                                       ` Markus E Leypold
2007-02-10 20:29                                       ` Dmitry A. Kazakov
2007-02-09 14:12                                   ` Maciej Sobczak
2007-02-09 19:41                                     ` Randy Brukardt
2007-02-12  9:07                                       ` Maciej Sobczak
2007-02-12 20:56                                         ` Randy Brukardt
2007-02-13  9:02                                           ` Maciej Sobczak
2007-02-14 10:12                                           ` Dmitry A. Kazakov
2007-02-09  9:21                             ` Markus E Leypold
2007-01-25 21:42           ` Randy Brukardt
2007-01-28 19:32             ` Gautier
2007-01-30 19:41               ` tmoran
2007-01-25 22:21           ` Jeffrey R. Carter
2007-01-25 11:31   ` Ali Bendriss
2007-01-27  5:12     ` Charles D Hixson
2007-01-27  9:52       ` Markus E Leypold
2007-01-27 22:01         ` Charles D Hixson
2007-01-27 23:24           ` Markus E Leypold
2007-01-28  9:14             ` Dmitry A. Kazakov
2007-01-28 15:06               ` Markus E Leypold
2007-01-29 14:37                 ` Dmitry A. Kazakov
2007-01-29 15:50                   ` Markus E Leypold
2007-01-30 19:58                     ` Robert A Duff
2007-01-30 21:52                       ` Markus E Leypold
2007-01-31 22:49                         ` Robert A Duff
2007-01-31 23:07                           ` (see below)
2007-01-31 23:18                             ` Robert A Duff
2007-01-31 23:36                               ` (see below)
2007-02-01  7:57                           ` Markus E Leypold
2007-01-31 17:49                       ` Ed Falis
2007-01-31 22:53                         ` Robert A Duff
2007-01-31 10:55                     ` Dmitry A. Kazakov
2007-01-31 15:16                       ` Markus E Leypold
2007-02-01 14:22                         ` Dmitry A. Kazakov
2007-02-01 15:18                           ` Markus E Leypold
2007-02-01 16:26                           ` Georg Bauhaus
2007-02-01 17:36                             ` Markus E Leypold
2007-02-01 20:53                               ` Georg Bauhaus
2007-02-01 21:57                                 ` Markus E Leypold
2007-02-01 22:03                                 ` Markus E Leypold
2007-02-01 23:40                                 ` Markus E Leypold
2007-02-03 16:54                                   ` Georg Bauhaus
2007-02-03 18:39                                     ` Dmitry A. Kazakov
2007-02-03 20:06                                     ` Markus E Leypold
2007-02-05  0:06                                       ` Markus E Leypold
2007-02-05 13:58                                         ` Georg Bauhaus
2007-02-05 14:23                                           ` Markus E Leypold
2007-02-02  7:17                                 ` Harald Korneliussen
2007-02-05  0:39                               ` Robert A Duff
2007-02-05  1:00                                 ` Markus E Leypold
2007-02-02  9:20                             ` Dmitry A. Kazakov
2007-02-02 12:34                               ` Markus E Leypold
2007-02-03  9:45                                 ` Dmitry A. Kazakov
2007-02-03 14:16                                   ` Markus E Leypold
2007-02-04 19:33                                     ` Dmitry A. Kazakov
2007-02-04 20:44                                       ` Markus E Leypold
2007-02-04 23:00                                         ` Dmitry A. Kazakov
2007-02-04 23:21                                           ` Markus E Leypold
2007-02-02 14:27                               ` Georg Bauhaus
2007-02-02 16:07                                 ` Dmitry A. Kazakov
2007-02-01 19:31                           ` Ray Blaak
2007-02-01 22:54                             ` Randy Brukardt
2007-01-29 16:23                 ` Georg Bauhaus
2007-01-29 16:56                   ` Markus E Leypold
2007-01-29 23:56       ` Randy Brukardt
2007-01-23 10:02 ` Stephen Leake
2007-01-23 16:49   ` adaworks
2007-01-23 17:40     ` Markus E Leypold
2007-01-24 12:51       ` Peter Hermann
2007-01-24 14:42         ` Markus E Leypold
2007-01-23 20:10   ` Jeffrey R. Carter
2007-01-23 22:37     ` Frank J. Lhota
2007-01-24  7:27       ` Jeffrey R. Carter
2007-01-24  9:50         ` Maciej Sobczak
2007-01-24 20:25           ` Jeffrey R. Carter
2007-01-24 21:34             ` Markus E Leypold
2007-01-25  9:23               ` Markus E Leypold
2007-01-26  7:59               ` Maciej Sobczak
2007-01-26 20:05                 ` Jeffrey R. Carter
2007-01-26 22:43                   ` Markus E Leypold
2007-01-23 21:19   ` Björn Persson
2007-01-23 10:38 ` Alex R. Mosteo
2007-01-23 12:58   ` gautier_niouzes
2007-01-23 21:56   ` Dr. Adrian Wrigley
2007-01-24 13:52     ` Alex R. Mosteo
2007-01-24 19:25     ` tmoran
2007-01-24 19:38     ` artifact.one
2007-01-26  2:50     ` Keith Thompson
2007-01-26  5:29     ` Gautier
2007-01-27  5:22     ` Charles D Hixson
2007-01-23 19:16 ` Tero Koskinen
2007-01-23 21:12   ` Ludovic Brenta
2007-01-24  9:59     ` Maciej Sobczak
2007-01-24 18:22       ` Yves Bailly
2007-01-24 19:18       ` Markus E Leypold
2007-01-25  8:37         ` Maciej Sobczak
2007-01-25  9:40           ` Markus E Leypold
2007-01-26  8:52             ` Ludovic Brenta
2007-01-26 11:40               ` Markus E Leypold
2007-01-27 16:56             ` Stephen Leake
2007-01-27 19:58               ` Markus E Leypold
2007-01-28 17:12                 ` Ed Falis
2007-01-28 18:38                   ` Markus E Leypold
2007-01-25 10:13           ` Harald Korneliussen
2007-01-25 12:54             ` Markus E Leypold
2007-01-26  7:03               ` Harald Korneliussen
2007-01-25 13:08             ` Markus E Leypold
2007-01-25 22:36             ` Jeffrey R. Carter
2007-01-25 23:26               ` Markus E Leypold
2007-01-26  4:23                 ` Jeffrey R. Carter
2007-01-26 11:35                   ` Markus E Leypold
2007-01-26 20:22                     ` Jeffrey R. Carter
2007-01-26 23:04                       ` Markus E Leypold
2007-01-27 19:57                         ` Frank J. Lhota
2007-01-28 20:43                         ` adaworks
2007-01-28 22:57                           ` Markus E Leypold
2007-01-29  1:04                           ` Jeffrey R. Carter
2007-01-28 20:32                   ` adaworks
2007-01-28 21:12                     ` Cesar Rabak
2007-01-28 22:43                       ` Markus E Leypold
2007-01-29 22:40                         ` Cesar Rabak
2007-01-30  9:31                           ` Markus E Leypold
2007-01-30 16:19                           ` adaworks
2007-01-30 21:05                             ` Jeffrey Creem
2007-01-28 22:38                     ` Markus E Leypold
2007-01-29 16:16                       ` adaworks
2007-01-29 16:35                         ` Markus E Leypold
2007-01-29  1:02                     ` Jeffrey R. Carter
2007-01-30  0:21                       ` Randy Brukardt
2007-01-26  7:21                 ` Harald Korneliussen
2007-01-26  7:16               ` Harald Korneliussen
2007-01-27  5:30             ` Charles D Hixson
2007-01-24 20:10   ` Cesar Rabak
2007-01-23 20:02 ` Jeffrey R. Carter
2007-01-24  7:18   ` adaworks
2007-01-24 14:19   ` Alex R. Mosteo
2007-01-23 21:36 ` kevin  cline
2007-01-23 22:18   ` Martin Dowie
2007-01-24  4:14     ` Alexander E. Kopilovich
2007-01-24  7:30       ` Jeffrey R. Carter
2007-01-24 20:15         ` Alexander E. Kopilovich
2007-01-25 22:16           ` Jeffrey R. Carter
2007-01-25 23:32             ` Markus E Leypold
2007-01-26  8:56               ` Ludovic Brenta
2007-01-26 11:49                 ` Markus E Leypold
2007-01-26 22:05             ` Alexander E. Kopilovich
2007-01-24  7:31     ` Jeffrey R. Carter
2007-01-24  7:42     ` kevin  cline
2007-01-24  8:07       ` Ludovic Brenta
2007-01-24 12:12         ` Markus E Leypold
2007-01-24 12:48           ` Ludovic Brenta
2007-01-24 14:49             ` Markus E Leypold
2007-01-24 13:40           ` Pascal Obry
2007-01-24 14:50             ` Markus E Leypold
2007-01-24 17:22               ` Pascal Obry
2007-01-24 17:56                 ` Markus E Leypold
2007-01-24 18:09                   ` Pascal Obry
2007-01-24 19:37                     ` Markus E Leypold
2007-01-24 19:52                       ` Pascal Obry
2007-01-24 21:31                         ` Markus E Leypold
2007-03-19  2:09                           ` adaworks
2007-01-25  7:52                     ` Harald Korneliussen
2007-01-24 16:25         ` Adam Beneschan
2007-01-24 17:03           ` Niklas Holsti
2007-01-25 15:37           ` Bob Spooner
2007-02-06  9:54         ` Dave Thompson
2007-02-06 11:01           ` Ludovic Brenta
2007-02-26  5:47             ` Dave Thompson
2007-01-24 16:14       ` adaworks
2007-01-25  0:22         ` kevin  cline
2007-01-25  6:04           ` adaworks
2007-01-25 10:37             ` Maciej Sobczak
2007-01-25 23:36               ` Markus E Leypold
2007-01-25 10:42           ` Dmitry A. Kazakov
2007-01-25  8:27         ` Harald Korneliussen
2007-01-25  4:50       ` Alexander E. Kopilovich
2007-01-27  5:43       ` Charles D Hixson
2007-01-27  8:38         ` Dmitry A. Kazakov
2007-01-28 12:11           ` Michael Bode
2007-01-28 15:20             ` Markus E Leypold
2007-01-29  9:44               ` Martin Krischik
2007-01-27 13:06         ` Gautier
2007-01-27 16:28           ` Ludovic Brenta
2007-01-28  0:55           ` Charles D Hixson
2007-01-28  1:18             ` Ludovic Brenta
2007-01-28 17:06             ` Jeffrey R. Carter
2007-01-28 21:11             ` adaworks
2007-01-24 19:33   ` Arthur Evans Jr
     [not found]     ` <egYth.15026$w91.10597@newsread1.news.pas.earthlink.net>
2007-01-25 22:34       ` Jeffrey R. Carter
2007-01-25 22:55         ` Robert A Duff
2007-01-26 19:59           ` Jeffrey R. Carter
2007-01-27  3:54         ` Randy Brukardt
2007-01-24  0:12 ` JPWoodruff
2007-01-24 10:32   ` gautier_niouzes
2007-01-25  1:01   ` Alexander E. Kopilovich
2007-01-26  5:01     ` JPWoodruff
2007-03-05  2:19 ` Brian May
replies disabled

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