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).
next prev 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