From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Silly and stupid post-condition or not ?
Date: Mon, 6 Feb 2012 20:05:04 -0600
Date: 2012-02-06T20:05:04-06:00 [thread overview]
Message-ID: <jgq0so$7o1$1@munin.nbi.dk> (raw)
In-Reply-To: MPG.299868e7ebbd43b1989683@news.zen.co.uk
"Phil Thornley" <phil.jpthornley@gmail.com> wrote in message
news:MPG.299868e7ebbd43b1989683@news.zen.co.uk...
> In article <jgl70g$l9i$1@munin.nbi.dk>, randy@rrsoftware.com says...
...
> The original SPARK Rationale says:
I don't much care why SPARK is the way it is -- it's obvious that it makes
sense for a certain set of customers, and that's great.
I want a tool that would be useful for typical Ada programs, and these are
going to have dispatching and access types and exceptions and tasks ...
There is no way that SPARK is ever going to be that tool, it would destroy
its purpose.
But I don't necessarily want complete proofs, and as I noted last week, I
don't think that there is much value to complete proofs as a goal, because
if you have a language that can describe the specifications well enough that
you can prove the result, you no longer need the Ada code that's being
proved (just execute the specification). We need "enough" proof, but not too
much.
I'm much more interested in proving that a subprogram meets its
postconditions (including exception postconditions) given its parameter
types and preconditions.
SPARK insists that you go back to the bad old days of using essentially
untyped arrays for data storage rather than typed pointers, using error
codes and piles of exceptional logic rather than exceptions, and the like --
all of the reasons that I moved to Ada in the first place. It eliminates
virtually everything that makes Ada better than "just another programming
language", which is not a step forward for my uses. (Obviously, other
people's experiences and needs will vary.)
Yes, aliasing analysis is hard. That's the point -- if the typing of the
underlying system is correct, it rarely could matter to a proof, and it
would be fairly easy to point out the rare exceptions.
Yes, you could write a case statement instead of using dispatching. Your
program maintenance costs will skyrocket (having to rewrite all of those
cases and reprove everything every time a new object type is added). Unless
your program never changes after it's constructed, which is not remotely the
case for anything I work on.
> (Personally I wouldn't want to write a compiler at all .....)
Well, there's the problem. :-) Real programmers always want to write a
compiler (and already have written several). [Not necessarily for a language
the size of Ada, though. That requires a form of insanity. ;-)]
Randy.
next prev parent reply other threads:[~2012-02-07 2:05 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-30 23:11 Silly and stupid post‑condition or not ? Yannick Duchêne (Hibou57)
2012-01-31 6:47 ` J-P. Rosen
2012-01-31 18:48 ` Jeffrey Carter
2012-01-31 22:02 ` Yannick Duchêne (Hibou57)
2012-01-31 8:54 ` Dmitry A. Kazakov
2012-01-31 9:35 ` Georg Bauhaus
2012-01-31 10:22 ` Dmitry A. Kazakov
2012-01-31 12:33 ` Georg Bauhaus
2012-01-31 13:52 ` Dmitry A. Kazakov
2012-01-31 15:34 ` Georg Bauhaus
2012-01-31 16:24 ` Dmitry A. Kazakov
2012-01-31 19:44 ` Georg Bauhaus
2012-02-01 8:41 ` Dmitry A. Kazakov
2012-02-01 10:37 ` stefan-lucks
2012-02-01 10:51 ` Yannick Duchêne (Hibou57)
2012-02-01 13:49 ` Yannick Duchêne (Hibou57)
2012-02-01 13:49 ` Dmitry A. Kazakov
2012-02-01 16:37 ` stefan-lucks
2012-02-02 1:50 ` Silly and stupid post�?'condition " Randy Brukardt
2012-02-02 1:56 ` Silly and stupid postâ?'condition or not ? Yannick Duchêne (Hibou57)
2012-02-03 2:45 ` Silly and stupid post�?'condition or not ? Randy Brukardt
2012-02-02 8:25 ` Silly and stupid post‑condition " Dmitry A. Kazakov
2012-02-02 9:01 ` stefan-lucks
2012-02-02 9:18 ` stefan-lucks
2012-02-02 10:04 ` Dmitry A. Kazakov
2012-01-31 22:08 ` Yannick Duchêne (Hibou57)
2012-01-31 17:28 ` Dmitry A. Kazakov
2012-01-31 22:12 ` Yannick Duchêne (Hibou57)
2012-02-01 8:49 ` Dmitry A. Kazakov
2012-02-01 8:36 ` Stephen Leake
2012-02-01 16:30 ` Silly and stupid post-condition " Adam Beneschan
2012-02-02 9:40 ` Stephen Leake
2012-02-02 13:20 ` Georg Bauhaus
2012-02-02 13:35 ` Yannick Duchêne (Hibou57)
2012-02-03 3:13 ` Randy Brukardt
2012-02-03 3:33 ` Yannick Duchêne (Hibou57)
2012-02-03 8:12 ` Simon Wright
2012-02-07 2:29 ` BrianG
2012-02-07 10:43 ` Simon Wright
2012-02-08 2:25 ` BrianG
2012-02-07 21:15 ` Robert A Duff
2012-02-03 9:11 ` Dmitry A. Kazakov
2012-02-04 3:27 ` Randy Brukardt
2012-02-04 10:15 ` Dmitry A. Kazakov
2012-02-03 12:25 ` Phil Thornley
2012-02-04 9:30 ` Phil Thornley
2012-02-04 12:02 ` Phil Thornley
2012-02-05 6:18 ` Randy Brukardt
2012-02-05 10:23 ` Phil Thornley
2012-02-05 10:55 ` Yannick Duchêne (Hibou57)
2012-02-05 15:03 ` Robert A Duff
2012-02-05 18:04 ` Phil Thornley
2012-02-05 21:27 ` Robert A Duff
2012-02-05 23:09 ` Phil Thornley
2012-02-07 2:05 ` Randy Brukardt [this message]
2012-02-07 9:38 ` Dmitry A. Kazakov
2012-02-05 11:31 ` Yannick Duchêne (Hibou57)
2012-02-05 14:50 ` Robert A Duff
2012-02-07 2:11 ` Randy Brukardt
2012-02-07 2:34 ` BrianG
2012-02-07 4:38 ` Yannick Duchêne (Hibou57)
2012-02-09 3:10 ` Randy Brukardt
2012-02-04 23:07 ` Stephen Leake
2012-02-05 2:49 ` Yannick Duchêne (Hibou57)
2012-02-05 6:29 ` Randy Brukardt
2012-02-05 11:40 ` Yannick Duchêne (Hibou57)
2012-02-07 1:36 ` Randy Brukardt
2012-02-05 15:16 ` Robert A Duff
2012-02-06 4:56 ` Yannick Duchêne (Hibou57)
2012-02-06 14:39 ` Robert A Duff
2012-02-06 16:12 ` Yannick Duchêne (Hibou57)
2012-02-07 1:46 ` Randy Brukardt
2012-02-07 17:24 ` Robert A Duff
2012-02-03 6:26 ` J-P. Rosen
2012-02-03 9:12 ` Dmitry A. Kazakov
2012-02-03 9:48 ` Yannick Duchêne (Hibou57)
2012-02-03 11:09 ` Dmitry A. Kazakov
2012-02-03 11:40 ` Yannick Duchêne (Hibou57)
2012-02-03 13:18 ` Dmitry A. Kazakov
2012-02-03 14:14 ` Yannick Duchêne (Hibou57)
2012-02-03 14:45 ` Dmitry A. Kazakov
2012-02-04 3:16 ` Randy Brukardt
2012-02-04 6:27 ` Yannick Duchêne (Hibou57)
2012-02-04 10:47 ` 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