From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: Teaching C/C++ from Ada perspective?
Date: Fri, 6 Jul 2018 13:18:52 -0700 (PDT)
Date: 2018-07-06T13:18:52-07:00 [thread overview]
Message-ID: <f4cbf72a-50ee-4fc1-8268-40c25b7b811d@googlegroups.com> (raw)
In-Reply-To: <phogom$14ps$1@gioia.aioe.org>
On Friday, July 6, 2018 at 2:43:21 PM UTC-5, Dmitry A. Kazakov wrote:
> On 2018-07-06 20:51, Randy Brukardt wrote:
> > "Maciej Sobczak" <see.my.homepage@gmail.com> wrote in message
> > news:670baa25-a987-45a0-991f-ec3aa2878233@googlegroups.com...
> >>> In any case, semantic coupling is many times more important than
> >>> compile-time coupling, since it causes actual maintenance problems.
> >>> Perhaps
> >>> focusing on that would make the differences more apparent???
> >>
> >> So let's do focus on that. Is there some short example that you would like
> >> to present to demonstrate this point?
> >
> > Not off-hand; I shouldn't have wasted the time on this discussion in the
> > first place.
> >
> > But I'll say that examples involving empty packages and useless withs don't
> > really prove anything regardless of the language involved - they're not very
> > realistic. I'd suggest looking at examples of privacy (which Ada is very
> > strict about) and comparing to other languages (which I don't know well
> > enough to do myself).
>
> I would add that much depends on optimization. If the compiler looks
> into a body in order to perform certain types of optimization then no
> matter how excellent Ada's separation of interface and implementation
> is, it must recompile clients if the body was changed.
>
> But Ada will still beat others here, because for quick runs you can turn
> the optimization off being sure that when you turn it on, then due to
> the separation the optimized code will still work.
Do you use this rule with GNAT or nonGNAT compilers? Given GNAT's GIGI/GIMPLE/RTL optimizing backend, might GNAT not respect private-package boundaries when optimizing?
> It is a really a plague in C++: the debug version works and the release
> crashes. Never happened in Ada to me.
I agree 100%. This happens precisely because of C++'s “as-if” rule*, permitting the optimizer to interact deleteriously with one or more undefined behaviors (UBs).
* The name is a misnomer. A better name would be the ‘carte-blanche’ rule, because the optimizer is handed a blank check to fill out untrustworthily whenever one or more UBs occur in a program.
https://stackoverflow.com/questions/15718262/what-exactly-is-the-as-if-rule
It is “as if”** an enemy of C++ snuck into the standards committee and planted the worst possible contortion of the past momentum of C++ culture into the letter of the standard to break vast quantities of real-world programs when the optimizer is turned on. If they really want this carte-blanche rule in C++-with-optimization, then then C++ absolutely must error all UBs when compiled with optimization. But they didn't require such.
** Perhaps that is the real reason that it is called the “as if” rule instead of the ‘carte blanche’ rule.
This is the reason that multiple C++ shops with which I have been employed have all picked only one optimization level and performed all development & debugging & everything at only that one optimization level; builds with the optimizer turned off or to any different level were strictly prohibited.
next prev parent reply other threads:[~2018-07-06 20:18 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 [this message]
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
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