From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Press Release - Ada 2012 Language Standard Approved by ISO
Date: Fri, 21 Dec 2012 19:40:57 -0600
Date: 2012-12-21T19:40:57-06:00 [thread overview]
Message-ID: <kb333b$tcg$1@munin.nbi.dk> (raw)
In-Reply-To: 14oqoq06zhlu2.tcasif3hdyhw.dlg@40tude.net
"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:14oqoq06zhlu2.tcasif3hdyhw.dlg@40tude.net...
...
> In essence 1 and 2 are about knowing something statically, during
> compilation. Not necessarily the constraint itself, which may be dynamic,
> yet allowing to prove something statically, e.g. that array index is
> always
> within the bounds.
Well, I obviously disagree about that. Constraints, in my view are all about
*introducing* checks. Predicates just provide an extension of that.
> I don't see how predicates might be helpful for either 1 or 2.
I don't see how range constraints would be helpful for either 1 or 2.
> subtype Even is Positive with Dynamic_Predicate => Even mod 2 = 0;
> subtype Each_Second_Character is String (Even);
>
> won't work. What I see is a yet another way to pack implementations into
> declarations as Georg promptly suggested, a slippery slope...
You believe checks are part of the implementation, while I believe that they
are something separate. There is is no real hope of agreement on that, so I
fear there isn't much point in discussing it. But I'll try for a moment...
Checks, in my view, are things that should never fail in a correct program.
Thus, they should not be considered part of the implementation; they're
something separate. Indeed, the only reason that they are made dynamically
is because checking them statically is beyond the current state of the art.
(I would hope that by the time the next version of Ada rolls around, that
will no longer be true.)
Your argument about them being part of the implementation comes from the
fact that Ada confuses the role of exceptions and handlers that come from
checks vs. those that are part of the semantics (like End_Error). IMHO, it's
wrong to be handling exceptions raised by checks; these represent bugs and
must be eliminated from the program, not handled. (Handling them just covers
up bugs.) For Ada 2012, you can differentiate exceptions somewhat by what is
present in constract aspects (preconditions, predicates, etc.) - which
always represent checks, but of course that's not quite complete. And there
is a similar problem for handlers: there are "last chance" handlers (which
capture all exceptions outbound), these aren't clearly separated from those
handlers which are semantic in nature. Last chance handlers are necessary
for all exits, of course, but they have nothing to do with the failed check
(the check remains failed at the end of such a handler) . (GNAT does this
better with their "at end" handler, but of course that's not Ada.) These are
language flaws, not fundamental to the model.
In an ideal world, all of these "checks" will get made statically. Hopefully
that's coming. In mean time, it's important to get programmers used to the
idea of writing checks this way, so that future tools can make the checks
statically (there is no hope of making checks statically if they are just
written in natural language comments).
Randy.
next prev parent reply other threads:[~2012-12-22 1:40 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-18 7:45 Press Release - Ada 2012 Language Standard Approved by ISO Dirk Craeynest
2012-12-18 16:57 ` Robert A Duff
2012-12-18 21:12 ` Bill Findlay
2012-12-18 21:36 ` Jeffrey Carter
2012-12-18 21:57 ` Bill Findlay
2012-12-19 8:33 ` Dmitry A. Kazakov
2012-12-19 9:00 ` Georg Bauhaus
2012-12-19 9:19 ` Dmitry A. Kazakov
2012-12-19 9:21 ` Georg Bauhaus
2012-12-19 9:38 ` Dmitry A. Kazakov
2012-12-19 12:23 ` Georg Bauhaus
2012-12-19 14:34 ` Bill Findlay
2012-12-20 1:52 ` Randy Brukardt
2012-12-21 9:01 ` Dmitry A. Kazakov
2012-12-21 10:13 ` Georg Bauhaus
2012-12-21 10:34 ` Georg Bauhaus
2012-12-21 13:38 ` Dmitry A. Kazakov
2012-12-22 1:40 ` Randy Brukardt [this message]
2012-12-22 9:02 ` Dmitry A. Kazakov
2012-12-22 22:38 ` Georg Bauhaus
2012-12-23 8:08 ` Dmitry A. Kazakov
2012-12-23 23:38 ` Shark8
2012-12-24 2:44 ` sbelmont700
2012-12-24 5:29 ` Shark8
2012-12-25 21:51 ` Florian Weimer
2012-12-27 1:00 ` sbelmont700
2012-12-27 1:47 ` Randy Brukardt
2012-12-27 14:29 ` sbelmont700
2012-12-27 15:30 ` Dmitry A. Kazakov
2012-12-27 18:48 ` Jeffrey Carter
2012-12-27 21:54 ` Randy Brukardt
2012-12-27 22:09 ` J-P. Rosen
2013-01-11 11:41 ` Yannick Duchêne (Hibou57)
2013-01-11 11:35 ` Yannick Duchêne (Hibou57)
2013-01-11 16:13 ` Jacob Sparre Andersen
2013-01-12 2:06 ` Randy Brukardt
2013-01-11 11:33 ` Yannick Duchêne (Hibou57)
2013-01-11 14:15 ` Dmitry A. Kazakov
2013-01-11 16:19 ` File_Exists (Was: Press Release - Ada 2012 Language Standard Approved by ISO) Jacob Sparre Andersen
2013-01-11 19:36 ` Yannick Duchêne (Hibou57)
2013-01-14 5:09 ` File_Exists Jacob Sparre Andersen
2013-01-12 7:55 ` File_Exists (Was: Press Release - Ada 2012 Language Standard Approved by ISO) Georg Bauhaus
2012-12-27 20:12 ` compilers, was Re: Press Release - Ada 2012 Language Standard Approved by ISO tmoran
2012-12-27 20:54 ` Shark8
2012-12-27 22:00 ` Randy Brukardt
2012-12-27 10:05 ` Dmitry A. Kazakov
2013-01-11 11:28 ` Yannick Duchêne (Hibou57)
2013-01-11 14:21 ` Dmitry A. Kazakov
2013-01-11 14:23 ` Yannick Duchêne (Hibou57)
2012-12-24 6:44 ` Yannick Duchêne (Hibou57)
2012-12-24 9:02 ` Dmitry A. Kazakov
2012-12-24 11:13 ` Yannick Duchêne (Hibou57)
2012-12-24 15:49 ` Exception contracts for Ada? Was: " Peter C. Chapin
2012-12-24 16:34 ` Dmitry A. Kazakov
2012-12-24 19:45 ` Exception contracts for Ada? Peter C. Chapin
2012-12-25 11:09 ` Dmitry A. Kazakov
2012-12-27 2:38 ` Randy Brukardt
2012-12-27 2:16 ` Exception contracts for Ada? Was: Re: Press Release - Ada 2012 Language Standard Approved by ISO Randy Brukardt
2012-12-27 15:03 ` Peter C. Chapin
2012-12-27 1:17 ` Randy Brukardt
2013-01-11 17:10 ` Marius Amado-Alves
2012-12-20 21:55 ` Anh Vo
2012-12-21 1:04 ` Bill Findlay
2012-12-18 23:24 ` Randy Brukardt
2012-12-19 8:35 ` Georg Bauhaus
2012-12-19 9:03 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox