comp.lang.ada
 help / color / mirror / Atom feed
From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: Ada Successor Language
Date: Fri, 29 Jun 2018 06:25:04 -0700 (PDT)
Date: 2018-06-29T06:25:04-07:00	[thread overview]
Message-ID: <1fbec811-1c54-4d6f-a072-447a0c8c23a2@googlegroups.com> (raw)
In-Reply-To: <ph4mk5$df9$1@gioia.aioe.org>

On Friday, June 29, 2018 at 2:20:40 AM UTC-5, Dmitry A. Kazakov wrote:
> On 2018-06-29 05:11, Paul Rubin wrote:
> > "Dan'l Miller" writes:
> >> bad idea that threatens to bring C++ slicing to Ada
> > 
> > Are you talking about this?
> > 
> >     https://en.wikipedia.org/wiki/Object_slicing
> > 
> > Does Ada somehow escape from it now?
> 
> Sure, there is no way to reconstruct that in Ada.
> 
> > It does sound bad.
> 
> Only due to C++ design fault. Assignment is a classic multiple dispatch 
> operation (a multi-method). C++ per design does no support MD. Here you go.
> 
> With MD it is no more an issue. Let T and S be two types T <: S. The 
> assignment operation of mixed arguments and result
> 
>     ":=" : S x T -> S
> 
> could not be safely inherited by S from T's:
> 
>     ":=" : T x T -> T
> 
> Therefore the compiler would ask the programmer to override it (or 
> redesign). Problem solved.

Dmitry, you make it sound as though multiple dispatch would solve slicing in C++ (which has no dispatch whatsoever).  In the situations where slicing occurs, it is due to the old backwards-compatibility-with-C functionality in C++.  No vtable, pointer-to-vtable, no dispatching required to utilized or even to be present at all.  Slicing occurs at the intersection of:
1) inheritance (a.k.a. record extension in Ada-speak)
2) C semantics;
3) either:
3.1) when, regarding the base-struct, operating on whole structs/classes (whole records in Ada-speak), not on addresses per se: pointers alone, l-value references alone, r-value references alone
or
3.2) when at least one member-function (subprogram in Ada-speak) of the ‘same name’ is present in the base class and derived class that was not virtual (Ada83 subtype ‘inheritance’ in Ada-speak, due to being untagged inheritance).  In C++, base-struct's and derived-struct's destructors—either human authored or compiler generated—have the ‘same name’ for our purposes here, despite having different names of types; focus on the tilde ~ and the AST more than the type-name of the struct.

At the intersection of those 3 then the C++ compiler deduces that it is working in C mode instead of OO mode and abuses the strong type that it thinks that is in play (i.e., the base struct) and accomplishes the requested goal (e.g., assignment, shallow copy, pass-by-value, return-by-value, and so forth) thinking in C-semantics only of the base-struct, not in OO-semantics of bringing along the derived-struct's extension too.

Even when a vtable is present, you can convince a C++ compiler to ignore it by working in C semantics instead.  The hypothetical analogue in Ada would be to somehow convince an Ada compiler to ignore an Ada95-era tagged record by working with Ada83-era subtype inheritance that by its nature is untagged.  At some crude level, Ada has the Ada83 semantics and the Ada95-onward semantics analogous to C++ having the C-era semantics and the OO-era semantics.  Only by a dozen foresightful wisdoms & preclusions & carve-outs in just the right places of the _LRM_ does Ada not have much the same problem.


  reply	other threads:[~2018-06-29 13:25 UTC|newest]

Thread overview: 212+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-02  4:43 Ada Successor Language Shark8
2018-06-02  6:52 ` Luke A. Guest
2018-06-04  2:27   ` Dan'l Miller
2018-06-04 21:06   ` Dan'l Miller
2018-06-05 12:31     ` Lucretia
2018-06-02  8:12 ` Dmitry A. Kazakov
2018-06-02 12:14   ` Mehdi Saada
2018-06-02 12:43     ` Dmitry A. Kazakov
2018-06-03  7:39       ` Safety of user-defined operators (was: Ada Successor Language) G.B.
2018-06-03  7:58         ` Safety of user-defined operators Dmitry A. Kazakov
2018-06-02 12:57     ` Ada Successor Language Luke A. Guest
2018-06-04 21:17       ` Randy Brukardt
2018-06-02 13:48 ` Dan'l Miller
2018-06-03 10:01 ` ric.wai88
2018-06-03 13:04   ` Dan'l Miller
2018-06-03 13:09   ` Shark8
2018-06-03 15:14     ` Lucretia
2018-06-03 15:09   ` Lucretia
2018-06-03 15:14     ` ric.wai88
2018-06-03 15:16       ` Lucretia
2018-06-03 15:22         ` ric.wai88
2018-06-03 15:31           ` Lucretia
2018-06-03 15:41             ` ric.wai88
2018-06-03 15:54     ` Dmitry A. Kazakov
2018-06-03 16:43     ` Jeffrey R. Carter
2018-06-04  5:01       ` Jacob Sparre Andersen
2018-06-04  7:19         ` Simon Wright
2018-06-04  7:44           ` Dmitry A. Kazakov
2018-06-04 13:53             ` Björn Lundin
2018-06-04 16:54             ` G. B.
2018-06-04 19:37               ` Dmitry A. Kazakov
2018-06-04 22:12                 ` G.B.
2018-06-05  7:18                   ` Dmitry A. Kazakov
2018-06-04 13:25           ` Lucretia
2018-06-04 14:08           ` Dan'l Miller
2018-06-04 14:55             ` Lucretia
2018-06-26 13:58         ` jm.tarrasa
2018-06-26 18:44           ` Jacob Sparre Andersen
2018-06-03 18:44     ` Björn Lundin
2018-06-03 19:37     ` Paul Rubin
2018-06-03 23:56       ` Dan'l Miller
2018-06-04  0:24         ` Paul Rubin
2018-06-04  0:41           ` Ben Bacarisse
2018-06-04  2:01         ` ric.wai88
2018-06-05 16:46     ` Alejandro R. Mosteo
2018-06-06 21:02       ` gautier_niouzes
2018-06-08 10:03         ` Alejandro R. Mosteo
2018-06-04  3:19 ` John Smith
2018-06-04 20:56 ` Mehdi Saada
2018-06-04 21:14 ` Paul Rubin
2018-06-05  0:17   ` Shark8
2018-06-05 16:01     ` Dan'l Miller
2018-06-18  3:31     ` Dan'l Miller
2018-06-18  6:58       ` Björn Lundin
2018-06-18 12:33         ` Dan'l Miller
2018-06-18 19:16       ` Niklas Holsti
2018-06-18 19:28         ` Dan'l Miller
2018-06-18 20:22         ` Jeffrey R. Carter
2018-06-18 20:45           ` Niklas Holsti
2018-06-18 21:20             ` Shark8
2018-06-18 21:27               ` ric.wai88
2018-06-18 21:51                 ` Shark8
2018-06-22 11:14                 ` Alejandro R. Mosteo
2018-06-18 22:23               ` Dmitry A. Kazakov
2018-06-18 22:36                 ` Paul Rubin
2018-06-19  0:10                   ` Dan'l Miller
2018-06-19 20:32                     ` Paul Rubin
2018-06-19 20:37                       ` Dan'l Miller
2018-06-20  8:30                     ` Marius Amado-Alves
2018-06-19  7:58                   ` Dmitry A. Kazakov
2018-06-19 19:19                     ` Paul Rubin
2018-06-19 19:30                       ` Dan'l Miller
2018-06-19 19:39                       ` Dmitry A. Kazakov
2018-06-19 20:30                         ` Paul Rubin
2018-06-20  7:13                           ` Simon Wright
2018-06-29 20:11                             ` Randy Brukardt
2018-06-20  7:59                           ` Dmitry A. Kazakov
2018-06-22 11:14                             ` Alejandro R. Mosteo
2018-06-23 19:21                             ` Jacob Sparre Andersen
2018-06-24  8:34                               ` Dmitry A. Kazakov
2018-06-24  9:19                                 ` J-P. Rosen
2018-06-25  7:00                                   ` briot.emmanuel
2018-06-25  8:23                                   ` Marius Amado-Alves
2018-06-29 20:20                                 ` Randy Brukardt
2018-06-25  8:58                               ` Alejandro R. Mosteo
2018-06-25  9:19                                 ` Jeffrey R. Carter
2018-06-25 12:41                                 ` J-P. Rosen
2018-06-25 14:03                                   ` Niklas Holsti
2018-06-25 14:21                                     ` Dmitry A. Kazakov
2018-06-25 14:44                                       ` J-P. Rosen
2018-06-25 15:19                                         ` Dmitry A. Kazakov
2018-06-25 16:21                                           ` Dan'l Miller
2018-06-26  7:44                                             ` Dmitry A. Kazakov
2018-06-26 13:59                                               ` Dan'l Miller
2018-06-26 14:05                                                 ` ric.wai88
2018-06-26 15:38                                                   ` Simon Wright
2018-06-26 16:50                                                     ` Dan'l Miller
2018-06-26 17:25                                                       ` Dmitry A. Kazakov
2018-06-26 18:47                                                         ` Dan'l Miller
2018-06-26 19:29                                                           ` Dmitry A. Kazakov
2018-06-26 20:03                                                             ` Dan'l Miller
2018-06-26 20:59                                                               ` Dmitry A. Kazakov
2018-06-29  3:11                                                               ` Paul Rubin
2018-06-29  3:37                                                                 ` Dan'l Miller
2018-06-29  3:48                                                                   ` Paul Rubin
2018-06-29  7:29                                                                     ` Dmitry A. Kazakov
2018-06-29  7:20                                                                 ` Dmitry A. Kazakov
2018-06-29 13:25                                                                   ` Dan'l Miller [this message]
2018-06-29 17:39                                                                     ` Dmitry A. Kazakov
2018-06-29 19:46                                                                       ` Dan'l Miller
2018-06-29 21:36                                                                         ` Dmitry A. Kazakov
2018-06-29 22:21                                                                           ` Dan'l Miller
2018-06-26 21:15                                                     ` Niklas Holsti
2018-06-27  7:07                                                       ` Dmitry A. Kazakov
2018-06-26 14:17                                                 ` Dmitry A. Kazakov
2018-06-26 14:42                                                   ` Dan'l Miller
2018-06-26 14:47                                                     ` Dmitry A. Kazakov
2018-06-26 21:01                                                 ` Niklas Holsti
2018-06-26 22:03                                                   ` Dan'l Miller
2018-06-27  2:28                                                     ` Dan'l Miller
2018-06-27  2:58                                                       ` Dan'l Miller
2018-06-27  7:15                                                     ` Dmitry A. Kazakov
2018-06-27 16:33                                                       ` Dan'l Miller
2018-06-27 19:11                                                         ` Dmitry A. Kazakov
2018-06-25 18:05                                           ` J-P. Rosen
2018-06-26  7:42                                             ` Dmitry A. Kazakov
2018-06-25 19:32                                         ` Niklas Holsti
2018-06-25 19:16                                       ` Niklas Holsti
2018-06-25 20:13                                         ` Dan'l Miller
2018-06-25 20:52                                           ` Niklas Holsti
2018-06-26  7:57                                             ` Dmitry A. Kazakov
2018-06-26 20:16                                     ` J-P. Rosen
2018-06-26 20:49                                       ` Niklas Holsti
2018-06-26 21:09                                         ` Dmitry A. Kazakov
2018-06-29 20:35                                     ` Randy Brukardt
2018-06-25 14:18                                   ` Alejandro R. Mosteo
2018-06-29 20:47                                     ` Randy Brukardt
2018-06-29 20:23                                 ` Randy Brukardt
2018-07-02  9:37                                   ` Alejandro R. Mosteo
2018-06-29 20:17                             ` Randy Brukardt
2018-06-29 22:11                               ` Dmitry A. Kazakov
2018-06-29 22:36                                 ` Randy Brukardt
2018-06-30  8:34                                   ` Dmitry A. Kazakov
2018-06-19 21:07                         ` Dan'l Miller
2018-06-20  7:33                           ` Dmitry A. Kazakov
2018-06-22 11:13                             ` Alejandro R. Mosteo
2018-06-22 16:02                               ` Dmitry A. Kazakov
2018-06-25  8:20                                 ` Marius Amado-Alves
2018-06-26 17:20                                   ` Shark8
2018-06-26 17:42                                     ` Dmitry A. Kazakov
2018-06-25  8:21                                 ` Paul Rubin
2018-06-25  9:12                                   ` Dmitry A. Kazakov
2018-06-22 15:18                             ` Dan'l Miller
2018-06-22 15:49                               ` Dmitry A. Kazakov
2018-06-19  2:45                 ` Shark8
2018-06-19  7:50                   ` Dmitry A. Kazakov
2018-06-19 15:35                 ` Shark8
2018-06-19  7:35               ` G. B.
2018-06-19 11:36                 ` Dan'l Miller
2018-06-19 15:37                 ` Shark8
2018-06-19 17:07                   ` G. B.
2018-06-29 20:05               ` Randy Brukardt
2018-06-29 23:18                 ` Shark8
2018-07-03 21:39                   ` Randy Brukardt
2018-06-19  0:20         ` Lucretia
2018-06-19 11:51           ` Dan'l Miller
2018-06-19 13:54             ` Dan'l Miller
2018-06-06  9:13   ` Niklas Holsti
2018-06-08 16:28     ` Dan'l Miller
2018-06-08 16:56       ` Mehdi Saada
2018-06-08 17:33       ` Shark8
2018-06-12  1:51         ` Dan'l Miller
2018-06-12 15:23           ` Luke A. Guest
2018-06-12 15:44             ` Dan'l Miller
2018-06-12 17:59               ` Luke A. Guest
2018-06-13 16:03                 ` Dan'l Miller
2018-06-13 16:20                   ` Luke A. Guest
2018-06-13 18:04               ` G. B.
2018-06-13  5:53             ` Shark8
2018-06-13  6:57               ` Simon Wright
2018-06-13 18:58                 ` Shark8
2018-06-13 19:19                   ` Dmitry A. Kazakov
2018-06-14  3:19                     ` Lucretia
2018-06-14  7:26                       ` Dmitry A. Kazakov
2018-06-14 11:25                         ` Lucretia
2018-06-14 12:22                           ` Dmitry A. Kazakov
2018-06-15  3:35                             ` Lucretia
2018-06-15  7:20                               ` Dmitry A. Kazakov
2018-06-15 16:03                                 ` Lucretia
2018-06-15 20:50                                   ` Dennis Lee Bieber
2018-06-15 11:38                     ` jm.tarrasa
2018-06-15 12:06                       ` Dmitry A. Kazakov
2018-06-15 15:42                         ` J-P. Rosen
2018-06-15 17:30                           ` Simon Wright
2018-06-15 17:55                           ` jm.tarrasa
2018-06-15 19:58                             ` Shark8
2018-06-16  7:04                               ` Simon Wright
2018-06-16  9:14                               ` jm.tarrasa
2018-06-16 10:22                                 ` Simon Wright
2018-06-16 10:50                                   ` Jeffrey R. Carter
2018-06-16 11:32                                 ` Dmitry A. Kazakov
2018-06-13 21:15                   ` Paul Rubin
2018-06-14  3:20                     ` Lucretia
2018-06-14  3:27                     ` Shark8
2018-06-14  5:17                       ` Paul Rubin
2018-06-14 21:00                   ` Randy Brukardt
2018-06-15  3:41                     ` Lucretia
2018-06-15  7:08                       ` Dmitry A. Kazakov
2018-06-15  7:15                     ` Simon Wright
2018-06-14  8:51                 ` Marius Amado-Alves
2018-06-08 20:38 ` Mehdi Saada
2018-06-13  5:46   ` Shark8
replies disabled

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