comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: Generic-Package Elaboration Question / Possible GNAT Bug.
Date: Wed, 23 Nov 2011 15:42:25 +0100
Date: 2011-11-23T15:42:26+01:00	[thread overview]
Message-ID: <4ecd0652$0$6582$9b4e6d93@newsspool3.arcor-online.net> (raw)
In-Reply-To: <14p8llstxrtci$.18hb93fkpteuv$.dlg@40tude.net>

On 23.11.11 14:30, Dmitry A. Kazakov wrote:

>>> So it is the debugging driven design you are advocating for. Designing by
>>> fixing bugs. Nice, very nice... exactly the thing I don't want for Ada.
>>
>> Specifications have bugs.
> 
> That is irrelevant to the discussion about designing programs. If you want
> to switch to designing specifications then what do run-time assertions have
> to do with that?

Run-time assertions will tell when there probably is something wrong
with any of: the specification; the program that should implement it;
the compiler; the hardware; ...


>>> One of the key points of good design is NOT to have such descriptions. The
>>> reader of the program, be it human or the compiler should be able to
>>> *understand* what you are describing.
>>
>> What is it that a reader of a package spec should be able to understand?
> 
> The package specification, I suppose.
> 
>> ADTs without invariants?
> 
> Invariant is an implementation detail

No, there is no implementation in a DbC contract. There is, however,
a contractual obligation that each instance of a DbC type establish,
at certain points, an invariant that its programmer has expressed
in terms of publicly visible "features" of the type. (Ideally, these
will be expressions involving idempotent functions).

The actual properties of implementations are not relevant to the DbC
client, only the properties expressed in the contract.


>> Subprograms of unknown effect,
> 
> You confuse interface and implementation.

I call a subprogram because it has an effect. Is this unusual?
In order to choose the right subprogram, I need to know its
effect.  There is very little that a subprogram profile tells
about the body's effect. By comparison, an ADT that specifies
preconditions, postconditions, and DbC-invariants, lets me know
more about what will be the case after the body has executed
successfully, or failed.

>>>> There is no right or wrong in most programs.
>>>
>>> You cannot build safe software on false premises.
>>
>> Almost all programs have a number of things that can go wrong,
> 
> Program code cannot GO wrong, it IS either wrong or not, here and now.

No, we don't know whether an executable program is right or wrong,
for almost all programs. We can detect that a run of a program
has a certain effect.
  From the effects, we tend to conclude that a program
has this or that property.  But in general, this is just as wrong,
we might see false positives, do not notice something that
someone else will later notice, or be wrong about diagnosing
right or wrong. But we have an issue, and look into it.
  If an executable program is not proven correct in all
possible ways, we simply do not know what it is.
We hope to have done our best, that's all.

"Doctor, something hurts!" seems less useful than
"Doctor, whenever I lift my left arm above the height
of my shoulders, I could scream!".





  reply	other threads:[~2011-11-23 14:42 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-19 21:14 Generic-Package Elaboration Question / Possible GNAT Bug Shark8
2011-11-19 22:12 ` Robert A Duff
2011-11-19 23:36   ` Shark8
2011-11-20  9:55     ` Dmitry A. Kazakov
2011-11-21  7:25       ` AdaMagica
2011-11-21  8:43         ` Dmitry A. Kazakov
2011-11-21 10:25           ` AdaMagica
2011-11-21 13:08           ` Robert A Duff
2011-11-21 13:50             ` Dmitry A. Kazakov
2011-11-21 19:41               ` Robert A Duff
2011-11-22  8:21                 ` Dmitry A. Kazakov
2011-11-21 20:40               ` J-P. Rosen
2011-11-22  8:29                 ` Dmitry A. Kazakov
2011-11-22 10:25                   ` Georg Bauhaus
2011-11-22 14:32                     ` Dmitry A. Kazakov
2011-11-22 15:02                       ` Georg Bauhaus
2011-11-22 16:23                         ` Dmitry A. Kazakov
2011-11-22 17:46                           ` Georg Bauhaus
2011-11-22 19:15                             ` Dmitry A. Kazakov
2011-11-22 21:03                               ` Randy Brukardt
2011-11-22 21:26                                 ` Dmitry A. Kazakov
2011-11-23  0:07                                   ` Georg Bauhaus
2011-11-23  8:44                                     ` Dmitry A. Kazakov
2011-11-23  9:32                                       ` Simon Wright
2011-11-23  9:56                                         ` Dmitry A. Kazakov
2011-11-23 11:03                                           ` Georg Bauhaus
2011-11-23 11:13                                             ` Dmitry A. Kazakov
2011-11-23 11:25                                               ` Georg Bauhaus
2011-11-23 13:14                                                 ` Dmitry A. Kazakov
2011-11-23 13:59                                                   ` Georg Bauhaus
2011-11-23 14:43                                                     ` Dmitry A. Kazakov
2011-11-23 16:10                                                       ` Georg Bauhaus
2011-11-23 19:51                                                         ` Dmitry A. Kazakov
2011-11-24  0:59                                                           ` Georg Bauhaus
2011-11-24  9:14                                                             ` Dmitry A. Kazakov
2011-11-23 15:12                                           ` Simon Wright
2011-11-23 19:53                                             ` Dmitry A. Kazakov
2011-11-24  8:07                                               ` Simon Wright
2011-11-24  9:27                                                 ` Dmitry A. Kazakov
2011-11-24 10:49                                                   ` Georg Bauhaus
2011-11-24 13:14                                                     ` Dmitry A. Kazakov
2011-11-24 14:31                                                       ` Georg Bauhaus
2011-11-24 16:32                                                         ` Dmitry A. Kazakov
2011-11-24 11:15                                                 ` Brian Drummond
2011-11-24 18:12                                                   ` Simon Wright
2011-11-24 23:52                                                     ` Brian Drummond
2011-11-23 10:35                                         ` Brian Drummond
2011-11-23  9:54                                       ` Georg Bauhaus
2011-11-23 10:30                                         ` Dmitry A. Kazakov
2011-11-23  4:08                                 ` Yannick Duchêne (Hibou57)
2011-11-23  4:11                                 ` Yannick Duchêne (Hibou57)
2011-11-22 23:52                               ` Georg Bauhaus
2011-11-23  9:04                                 ` Dmitry A. Kazakov
2011-11-23 11:15                                   ` Georg Bauhaus
2011-11-23 13:30                                     ` Dmitry A. Kazakov
2011-11-23 14:42                                       ` Georg Bauhaus [this message]
2011-11-23 19:48                                         ` Dmitry A. Kazakov
2011-11-24  1:36                                           ` Georg Bauhaus
2011-11-24 10:52                                             ` Dmitry A. Kazakov
2011-11-24 11:30                                               ` Georg Bauhaus
2011-11-24 12:52                                                 ` Dmitry A. Kazakov
2011-11-24 14:45                                                   ` Georg Bauhaus
2011-11-25  9:54                                                     ` Dmitry A. Kazakov
2011-11-24  7:46                                           ` stefan-lucks
2011-11-24  3:07                           ` Shark8
2011-11-24  6:07                             ` Yannick Duchêne (Hibou57)
2011-11-24 10:10                             ` Dmitry A. Kazakov
2011-11-24 11:15                               ` Georg Bauhaus
2011-11-24 22:48                               ` Shark8
2011-11-25  9:25                                 ` Yannick Duchêne (Hibou57)
2011-11-26 21:59                                   ` Shark8
2011-11-25  9:47                                 ` Dmitry A. Kazakov
2011-11-25 10:15                                   ` Georg Bauhaus
2011-11-25 10:51                                     ` Yannick Duchêne (Hibou57)
2011-11-25 15:45                                   ` Georg Bauhaus
2011-11-25 16:05                                     ` Yannick Duchêne (Hibou57)
2011-11-25 16:19                                     ` Yannick Duchêne (Hibou57)
2011-11-23  3:49                         ` Yannick Duchêne (Hibou57)
2011-11-23  8:50                           ` Georg Bauhaus
2011-11-23  9:45                             ` Yannick Duchêne (Hibou57)
2011-11-23 10:55                               ` Georg Bauhaus
2011-11-23  3:20             ` Yannick Duchêne (Hibou57)
2011-11-23 15:05               ` Robert A Duff
2011-11-21 17:00 ` Adam Beneschan
2011-11-23  3:13 ` Yannick Duchêne (Hibou57)
2011-11-24  3:47   ` Shark8
replies disabled

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