comp.lang.ada
 help / color / mirror / Atom feed
From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: Teaching C/C++ from Ada perspective?
Date: Thu, 5 Jul 2018 08:30:20 -0700 (PDT)
Date: 2018-07-05T08:30:20-07:00	[thread overview]
Message-ID: <235b3f29-becd-476c-9efd-3c4bf6ebfad5@googlegroups.com> (raw)
In-Reply-To: <8de6b5ba-25ab-4d46-b80c-1544f43a9b05@googlegroups.com>

On Wednesday, July 4, 2018 at 3:13:47 PM UTC-5, Maciej Sobczak wrote:
> > > My claim that Ada and C++ compilers have the same challenges when it comes to handling the
> > > physical project structure holds.
> > 
> > Yet Ada allows having a library of packages
> 
> Yes, but that does not change anything in this regard. One reason is that AARM does not define the
> meaning of this concept. In some sense, the set of source files plays the role of a library. In other words,
> GNAT already implements the standard notion of the library in terms of source files.
> 
> You can implement the same concept in some other way, for example with the use of relational database
> as a backend, but AARM still does not define the functionality of such library or why it would be any
> better. It might as well be as dumb as a plain set of files.
> 
> And ironically, for a large-scale system, I would not trust anything else than a dumb set of files.

Your mileage might vary compared to mine, depending on how you drive.

> > Your 
> > examples are related to GNAT
> 
> Which happens to be The Ada Compiler that potential users are going to use.

Which happens to be the Ada compiler for which you have shown a rather-signficant Achilles heel.  Thank you.  We've been looking for reasons that another Ada compiler is necessary (e.g., with LLVM backend instead, and now with aggressive re-build avoidance to trounce C++ for their mutually-shared intended marketspaces:  software-in-the-very-large).

As currently licensed, GNAT cannot practically have anything isomorphic to R1000's DIANA design, because whatever the DIANA-esque persistent storage might be, Runtime Exception of GPLv3 would deem that DIANA-esque persistent storage as intermedia representation (IR).  By my prior recent analysis here on c.l.a, any persistent emission of IR from a compiler (e.g., GNAT, GCC) that is licensed via GPLv3 with Runtime Exception causes all downstream object files, library-archive files, and executable files to be forcibly licensed as GPLv3 without the Runtime Exception.  That seems to be a major Achilles heel that an Alang (in the spirit of Clang & Flang) in BSD-esque-licensed LLVM-world wouldn't have.  Thank you, Maciej, you have been most useful there.

> > C++ on its part could not have a library.
> 
> Wrong. Everything in the C++ standard is defined in terms of "as if", which means that as long as the
> required visible effects are supported, the underlying implementation can be anything.

https://en.cppreference.com/w/cpp/language/as_if
vis a vis
https://en.cppreference.com/w/cpp/language/ub

The (unacceptable) corollary to C++11's “as-if” rule as stated:
As long as any portion of a program that has even one undefined behavior, the •visible effects• can be anything (on the current target ISA, even if the undefined behavior is quite reliably deterministic & useful on the current target ISA).

This wouldn't be a problem if all C++ compilers were required by the standard to error all undefined behavior, but so many C++ programs in field deployment •dependably rely• on undefined behavior to function “correctly” on a particular target ISA—undefined behavior that the compiler tacitly approved of.

This house-of-cards Swiss cheese is why no R1000-esque development environment can ever exist for C++.  This is the root reason for why the-dumber-the-better files are purported to be adored.  This is the root reason for how any persistent storage more sophisticated than dumbest-of-dumb files can become accumulatedly corrupted.  This is why there is strong shilling against R1000 in this thread:  slight-of-hand obfuscation of this dirty laundry; look at that shiny thing over there instead of C++'s dirty laundry.

On Thursday, July 5, 2018 at 8:15:01 AM UTC-5, Maciej Sobczak wrote:
> Todays' IDEs can figure out and track individual declarations and use that information for editing aids like
> code navigation or automated refactoring. The tech is there (also for C++), but apparently there is no
> motivation to use it at the build stage. … but the fact that no compiler vendor does it today can indicate
> that it is not what people consider a problem worth solving.

Apparently, Maciej, you have never used ClearMake or Vesta, both of which have automated language-agnostic (super-dooper rich*** filesystem-based) ways of perfectly (!) discovering extremely fine-grained dependencies to accomplish aggressive build avoidance (and something even more aggressive:  wink-ins) via proofs by mathematical induction that omnisciently observe the entirety of all compilation units.  Vesta effectively died off with Alpha & Compaq, but ClearCase is still commanding many thousands of dollars per seat in the software-in-the-large companies whose reason to exist is to write millions- or tens-of-millions-of-lines source-code bases.

*** not dumber-than-dumb files

On Tuesday, July 3, 2018 at 3:54:10 PM UTC-5, Maciej Sobczak wrote:
> > > There is nothing that C++ lacks in this area when compared to Ada.
> > 
> > Oh really!  Read Lakos's book then.
> 
> I did. Thank you for recommendation.
> 
> > All 852 pages of it effectively say:
> [...]
> 
> No, they don't (and since I'm already used to your trolling style, I'm not surprised). The abstract is
> available here:
> 
> https://www.amazon.com/Large-Scale-Software-Design-John-Lakos/dp/0201633620
> 
> and relates to addressing physical challenges of large codebases.
> 
> Considering the fact that the compilation model of Ada and C++ is basically the same (some of this
> might be related to the fact that they use, well, exactly the same compiler), the challenges that are
> addressed by this book exists in both languages and, interestingly, the presented techniques (or most of
> them) are transferable.
> 
> > When a language has a problem that needs 852 pages to explain and straighten out, methinks it
> > actually might have an actual problem (or whole tangled nest of problems) in that vicinity.
> 
> Yes. Another way to look at it is this: C++ is one of the few languages that actually allowed engineers to
> implement systems in the large scale.
> 
> > By comparison, in Ada's entire history spanning 5 decades, no one needed to write an analogous
> > 852-page tome on that topic.
> 
> You have problems with fundamental logic. The fact that such a book does not exist for Ada does not
> mean that it was never needed. It only means that nobody wrote it (as another exercise in logic, try to
> explain why there are essentially no books for algorithms for Ada).

Yeah, right, absence of evidence* is not evidence of absence of such an Ada book, eh?   Perhaps that Ada tome** is just sitting there unpublished on someone's hard drive, lurking undiscovered.  Perhaps, just perhaps.  Who knows, right?  Absence of evidence isn't evidence of absence, right?

* i.e., Ada's lack of a whopping 1.3-kilogram 852-page tome revealing ad infinitum how to walk just the right narrow path to prevent C++-esque physical-design disasters

** regarding Ada's purported(-by-you) 1-to-1 & onto mapping of directly analogous problems that C++'s software-in-the-large physical design has

vis a vis:

On Thursday, July 5, 2018 at 8:15:01 AM UTC-5, Maciej Sobczak wrote:
> > I don't see how it could be accomplished in any reasonable way with 
> > header files and preprocessor.
> 
> Nobody sees how it could be accomplished in the Ada compiler, either. :-)
> 
> Maybe the whole idea is not very reasonable in the first place? I mean - maybe this is over-engineering
> that nobody actually asked for, which explains why we don't have it?
> 
> Todays' IDEs can figure out and track individual declarations and use that information for editing aids like
> code navigation or automated refactoring. The tech is there (also for C++), but apparently there is no
> motivation to use it at the build stage. R1000 might have been an interesting experiment for exploring
> the idea, but the fact that no compiler vendor does it today can indicate that it is not what people
> consider a problem worth solving.

When the •absence of evidence• is in Ada's favor (in the prior quote before “vis a vis”), then the speaker is an ignorant-of-“fundamental-logic” dolt.

When the •absence of evidence• is in C++'s favor (in this quote after “vis a vis”), then it is the paragon of universal-generalization from which vast one-size-fits-all wisdom shall be harvested & weaponized (to kill off any virtues of R1000 and to kill off teaching C++ in an Ada-esque way).

  parent reply	other threads:[~2018-07-05 15:30 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-30 18:04 Teaching C/C++ from Ada perspective? kouaoua16
2018-06-30 18:15 ` Luke A. Guest
2018-06-30 19:27   ` Dan'l Miller
2018-06-30 19:07 ` Dan'l Miller
2018-07-01 16:12 ` kouaoua16
2018-07-01 17:08   ` Luke A. Guest
2018-07-01 19:19     ` Dan'l Miller
2018-07-02  6:12       ` Maciej Sobczak
2018-07-01 20:52 ` Maciej Sobczak
2018-07-01 21:35   ` Dan'l Miller
2018-07-02  5:56     ` Maciej Sobczak
2018-07-02  9:58       ` Marius Amado-Alves
2018-07-02 11:03         ` Maciej Sobczak
2018-07-02 13:52           ` Marius Amado-Alves
2018-07-04 12:10             ` Dan'l Miller
2018-07-02 20:14         ` Paul Rubin
2018-07-03  9:48           ` Marius Amado-Alves
2018-07-04  2:52             ` Paul Rubin
2018-07-02 18:52       ` Dan'l Miller
2018-07-03  8:00         ` Maciej Sobczak
2018-07-03 12:40           ` Dan'l Miller
2018-07-03 20:54             ` Maciej Sobczak
2018-07-04  3:10               ` Dan'l Miller
2018-07-04  7:59                 ` Maciej Sobczak
2018-07-04  8:37                   ` Marius Amado-Alves
2018-07-04 12:22                     ` Maciej Sobczak
2018-07-04 14:13                       ` Simon Wright
2018-07-04 14:56                         ` Maciej Sobczak
2018-07-04 15:52                           ` Dmitry A. Kazakov
2018-07-04 16:24                             ` Alejandro R. Mosteo
2018-07-04 20:00                               ` Jeffrey R. Carter
2018-07-05 18:35                                 ` Randy Brukardt
2018-07-05 19:39                                   ` Jeffrey R. Carter
2018-07-06 18:45                                     ` Randy Brukardt
2018-07-04 20:13                             ` Maciej Sobczak
2018-07-04 21:09                               ` Dmitry A. Kazakov
2018-07-05  5:49                                 ` Maciej Sobczak
2018-07-05  7:37                                   ` Dmitry A. Kazakov
2018-07-05 13:14                                     ` Maciej Sobczak
2018-07-05 15:18                                       ` Dmitry A. Kazakov
2018-07-05 19:16                                       ` Randy Brukardt
2018-07-07 15:09                                         ` Lucretia
2018-07-05 19:12                                     ` Randy Brukardt
2018-07-05 20:10                                       ` Maciej Sobczak
2018-07-06 19:01                                         ` Randy Brukardt
2018-07-06 19:35                                           ` Dmitry A. Kazakov
2018-07-05  7:43                                   ` Alejandro R. Mosteo
2018-07-05 18:53                                   ` Randy Brukardt
2018-07-05 19:06                                     ` Dan'l Miller
2018-07-06 18:47                                       ` Randy Brukardt
2018-07-05 20:12                                     ` Maciej Sobczak
2018-07-06 18:51                                       ` Randy Brukardt
2018-07-06 19:43                                         ` Dmitry A. Kazakov
2018-07-06 20:18                                           ` Dan'l Miller
2018-07-07  8:39                                             ` Dmitry A. Kazakov
2018-07-07 11:53                                           ` Björn Lundin
2018-07-06 20:22                                         ` Maciej Sobczak
2018-07-06 23:26                                           ` Paul Rubin
2018-07-07  6:17                                             ` J-P. Rosen
2018-07-07  6:37                                               ` Micronian Coder
2018-07-07  8:48                                                 ` Privacy and child packages (Was: Teaching C/C++ from Ada perspective?) Jacob Sparre Andersen
2018-07-07 20:19                                               ` Teaching C/C++ from Ada perspective? Maciej Sobczak
2018-07-08 15:25                                           ` Simon Wright
2018-07-08 20:00                                             ` Maciej Sobczak
2018-07-09  9:04                                               ` Alejandro R. Mosteo
2018-07-05 15:30                               ` Dan'l Miller [this message]
2018-07-05 20:38                                 ` Maciej Sobczak
2018-07-05 21:05                                   ` Dan'l Miller
2018-07-05 18:47                               ` Randy Brukardt
2018-07-04 16:01                           ` Simon Wright
2018-07-04 17:12                           ` G. B.
2018-07-04 20:18                             ` Maciej Sobczak
2018-07-04 21:03                               ` G.B.
2018-07-04 17:21                           ` Dan'l Miller
2018-07-04 20:36                             ` Maciej Sobczak
2018-07-04 22:44                               ` Dan'l Miller
2018-07-05  2:01                                 ` Luke A. Guest
2018-07-05  5:03                                   ` Dan'l Miller
2018-07-05  5:58                                 ` Maciej Sobczak
2018-07-05 19:25                                   ` Randy Brukardt
2018-07-05 19:22                                 ` Randy Brukardt
2018-07-05 18:31                       ` Randy Brukardt
2018-07-06  3:32           ` Dan'l Miller
2018-07-06 12:05             ` Dan'l Miller
2018-07-06 20:42             ` Maciej Sobczak
2018-07-06 21:32               ` Dan'l Miller
2018-07-07 20:43                 ` Maciej Sobczak
2018-07-08 17:36                   ` Dan'l Miller
2018-07-08 18:39                     ` Bill Findlay
2018-07-08 19:28                       ` Dan'l Miller
2018-07-09 12:34                         ` Bill Findlay
2018-07-09 15:19                           ` Dan'l Miller
2018-07-09 19:34                             ` Bill Findlay
2018-07-09 22:03                               ` Dan'l Miller
2018-07-09 22:35                                 ` Bill Findlay
2018-07-10  1:56                                   ` Lucretia
2018-07-10 23:14                         ` Randy Brukardt
2018-07-11 14:05                           ` Dan'l Miller
2018-07-11 20:20                             ` Randy Brukardt
2018-07-08 20:43                     ` Maciej Sobczak
2018-07-08 23:17                       ` Dan'l Miller
2018-07-09  6:13                         ` Maciej Sobczak
2018-07-09 16:35                           ` Dan'l Miller
2018-07-10 23:20                       ` Randy Brukardt
2018-07-10 23:51                         ` Britt
2018-07-02 17:10   ` kouaoua16
2018-07-02 17:28     ` Dennis Lee Bieber
2018-07-02 18:22     ` Maciej Sobczak
2018-07-02 20:27     ` G.B.
2018-07-02  0:11 ` Paul Rubin
2018-07-02 14:26 ` kouaoua16
2018-07-02 19:57 ` G.B.
2018-07-02 20:17   ` Dan'l Miller
2018-07-03  9:56 ` Brian Drummond
2018-07-04 12:18 ` Olivier Henley
2018-07-04 14:17   ` kouaoua16
2018-07-12  5:38 ` robin.vowels
replies disabled

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