comp.lang.ada
 help / color / mirror / Atom feed
From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: Ada Successor Language
Date: Wed, 27 Jun 2018 09:33:48 -0700 (PDT)
Date: 2018-06-27T09:33:48-07:00	[thread overview]
Message-ID: <396e6cfe-8f97-4aa7-9034-67fa089d8609@googlegroups.com> (raw)
In-Reply-To: <pgvdi9$1mgc$1@gioia.aioe.org>

On Wednesday, June 27, 2018 at 2:15:23 AM UTC-5, Dmitry A. Kazakov wrote:
> On 2018-06-27 00:03, Dan'l Miller wrote:
> > On Tuesday, June 26, 2018 at 4:01:22 PM UTC-5, Niklas Holsti wrote:
> 
> >> … I don't
> >> think Dmitry's suggestion for class-wide types rooted in untagged types
> >> would lead to the same problems as slicing in C++.
> > 
> > Then you are an unable to foresee slicing situations as Bjarne Stroustrup was.  Bjarne should not be one's role model as a language designer.
> 
> But you are able to foresee that, right? Then maybe you put up an 
> example of what the problem is?

Rather than talk in C++-speak about importation of one of C++'s notorious flaws, let us instead talk in Ada-speak about an analogous proposed Ada feature.  The Steelman requirement 3-3F strongly resembles portions of your tag-external-to-type idea on which your 'Class for untagged types depends.  Both 3-3F and your tag-external-to-type require the compiler to know precisely which strong type is being utilized in ••every language construct everywhere under all circumstances••.  If the compiler at any time obfuscates that single strong type among a set of multiple related types, then the compiler runs the risk of
1) losing track of precisely which strong type this versus that 3-3F no-storage-allocated-within-record extra fields among various 3-3F-utilizing record-types.
or
2) losing track of precisely which strong type had this versus that tag-external-to-type regarding your various untagged types.

Just like Bjarne and the C++ standards committee's accidental introduction of landmines in C++, no sane person would •intentionally• design the losing-of-track into the language.  Rather, these losings-of-track would occur at the intersection/junction/boundary of 2 or more language features.  Because there are hundreds of language features, the combinatorial explosion of 2 or more language features in each other's context is quite a large number (hence the difficulty of the language designer foreseeing them all on Day One).  The medical world has a term for flaws at the junction of 2 or more tissue features:  conjunctive nevus.  Nearly all of C++'s landmines that must be meticulously vigilantly avoided every waking moment are in fact conjunctive nevuses where 2 or more language features interact badly with each other at their point of contact with each other.  That is what we are looking for here as well in Ada regarding 3-3F's and tags-external-to-type's perfect inability to never ever lose track of the single strong type.

Several language features come to mind immediately that could potentially be such obfuscations of strong typing into a set of 2 or more related types existing concurrently or progressively/incrementally over time:
a) generics
  a.1) especially compilers whose generics factor out a common object code for all/some varieties of arguments passed in
b) in the subprograms after OO tag dispatch via tagged records
c) discriminants
d) universal integer
e) private
f) Ada compilers with the _LRM_-permitted automatic garbage collection
g) constrained subtypes vis a vis each other and vis a vis the type's first subtype
h) array slices vis a vis each other and vis a vis the whole array
i) with … use
j) renames
h) child packages
j) aspects
k) pragmas
l) unchecked_conversion
m) unchecked_access
n) unchecked_deallocation
o) unchecked_union
p) any other language feature that directly allows  /this/ versus /that/ or conspires in /this/ versus /that/

Let us assume for the moment (or always) that Jean Ichbiah and Tucker Taft (and indeed the people at AJPO stating the goals of the Ada9X project) aren't ignorant dolts who didn't do their homework.  Let us assume that both Ichbiah and Taft actually read Steelman requirement 3-3F.  Let us assume that both Ichbiah et. al. and Taft et. al. seriously pondered how to achieve Steelman requirement 3-3F.

http://www.adahome.com/History/Steelman/steeltas.htm#3-3F

But both Ada83 and Ada95 lack 3-3F.  Are we to infer that twice 2 language-design teams with 2 strong captains at the helm of the ship goofed up and accidentally forgot to include 3-3F?  No, sometime around 1980 give or take a few years and sometime around 1993 give or take a few years someone found really good reasons why 3-3F is a bad idea for Ada, because 3-3F would have __________ negative interactions with the _____________ language feature or because 3-3F would have ________ negative interactions with the ___________ psychology of the programmer as measured by the aforementioned cognitive dimensions of notation.

https://en.wikipedia.org/wiki/Cognitive_dimensions_of_notations

> P.S. The major failure of OO design in C++ is conflating specific and 
> class-wide types, which makes C++ OO weakly-typed, whereas in Ada OO is 
> strongly typed all the way.

Oh how quickly you change your tune.  Just 8 or 7 days ago you claimed the opposite regarding Ada's generics being a “weakly-typed” “50 shades of mess”.  Now Ada generics are the paragon of strong typing able to nobly withstand any interaction with bad-idea other language features.

On Tuesday, June 19, 2018 at 2:58:49 AM UTC-5, Dmitry A. Kazakov wrote:
> On 2018-06-19 00:36, Paul Rubin wrote:
> > "Dmitry A. Kazakov" writes:
> >> P.S. Stepanov arguing for generics (templates) claimed that the reason
> >> why C++ needed this mess was impossibility to write Max using dynamic
> >> polymorphism... I believe it is possible to have a language where
> >> generic Max and Swap could be written without generics.
> > 
> > I've been wanting to look up how Ada generics work.  C++ generics are
> > implemented with templates which leads to a horrible mess, but generics
> > themselves don't have to be a mess, as far as I know.
> 
> There are 50 shades of mess. Ada's generics try to introduce some 
> weakly-typed contracts on the formal generic parameters, where C++ 
> templates go completely untyped, but mess is always mess. You cannot 
> make a decent language out of macro processor.

On Wednesday, June 20, 2018 at 2:33:26 AM UTC-5, Dmitry A. Kazakov wrote:
> On Tuesday, June 19, 2018 at 2:39:30 PM UTC-5, Dmitry A. Kazakov wrote: 
> >> Generics and macros are same thing regardless implementation. The core
> >> idea and all power lies in textual substitution as opposed to the
> >> concept substitutability in a properly typed systems.
> 
> There is no such thing in Ada. Formal generic types, e.g.
> 
>     type Foo (<>) is private;
> 
> match pretty much anything. The actual type is then substituted in all 
> language constructs just like macros do. The only constraint here is the 
> language syntax and a few sematic checks which make the language of 
> generics (not to confuse with the core language) weakly typed, where C++ 
> templates are completely untyped.

> So any comparison to C++ without concrete examples is useless.

No, any critique of an Ada proposal that has not been written up as an official AI or tantamount (same format &  content) to an AI is what is truly useless.  It isn't the responsibility of the other 7 billion people on the planet to •guess• what you mean.  The onus is on you to take the warnings that I have offered as food for thought when •you• write the AI for this 'Class for untagged types (and its external-to-type tag).  After the AI is in my hands, then and only then is the onus on me to critique it, both in Ada-only domain and vicariously by drawing meticulous parallels to C++.  Currently, I have nothing but hand-waving to work with there.

Without such an AI, every time that I nail your bad idea and eviscerate it totally (hitting the nail directly on the head of a fundamental flaw in your bad idea), you can play mind games of fibbing, “oh, silly you, my idea is quite different than that,” then going down dozens of oblique tangents of distraction.  With such an AI, we can see whether your AI plugs every hole in the leaky dike, whether the intersection of language features has planted a buried C++-esque landmine or whether the junction of language features has a conjunctive-nevus flaw.


  reply	other threads:[~2018-06-27 16:33 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
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 [this message]
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