comp.lang.ada
 help / color / mirror / Atom feed
From: Shark8 <onewingedshark@gmail.com>
Subject: Re: Generic-Package Elaboration Question / Possible GNAT Bug.
Date: Thu, 24 Nov 2011 14:48:46 -0800 (PST)
Date: 2011-11-24T14:48:46-08:00	[thread overview]
Message-ID: <011f483a-e0d7-4475-89e6-506802e88b9b@i6g2000vbe.googlegroups.com> (raw)
In-Reply-To: sv6jslo32ppg$.ji4kulr9k5z2$.dlg@40tude.net

On Nov 24, 4:10 am, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
wrote:
> On Wed, 23 Nov 2011 19:07:55 -0800 (PST), Shark8 wrote:
> > On Nov 22, 10:23 am, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> > wrote:
> >> I don't care about trade marks and definitions given by reference
> >> manuals...
>
> > Why not; definitions are essential to understanding each other.
> > If someone saying 'hammer' means 'shotgun' then what does "I need a
> > hammer." mean?
>
> That is the reason. TM and RM are inclined to name hammer shotgun.
>
> DbC (TM) considerably deviates from design by contract (common sense),

Unfortunately "common sense" is not intuitively obvious to everyone;
furthermore, "common sense" is hampered by the fact that natural-
language tends to contain connotations not within the actual
definitions of the words. It is because of this that there must be a
set of definitions wherewich to have a common ground. (i.e. relying on
'common sense' you tend to argue about the definition-content rather
than the problem itself.)


> as
> Georg has explained willingly or not. For example disregarding separation
> of interface and implementation is not how things are designed by contract.

I actually fail to see exactly where the interface/implementation
separation is an issue in Ada 2012.
Consider this:
The ARM allows a compiler to treat PROCEDURE P( EXTERNAL_PARAM : IN
OUT SOME_TYPE ) IS [SUBPROGRAM_TEXT] END P; as the following:

PROCEDURE P( EXTERNAL_PARAM : IN OUT SOME_TYPE ) IS
INTERNAL_PARAM : SOME_TYPE:= EXTERNAL_PARAM;
[SUBPROGRAM_TEXT] (renaming EXTERNAL_PARAM to INTERNAL_PARAM)
EXTERNAL_PARAM := INTERNAL_PARAM;
END P;

Now, with the pre- and post-conditions we may expand this PROCEDURE
P( EXTERNAL_PARAM : IN OUT SOME_TYPE ) WITH PRE => PRECONDITION, POST
=> POSTCONDITION IS ... conceptually to:


PROCEDURE P( EXTERNAL_PARAM : IN OUT SOME_TYPE ) IS
IF NOT PRECONDITION RAISE CONSTRAINT_ERROR;
INTERNAL_PARAM : SOME_TYPE:= EXTERNAL_PARAM;
[SUBPROGRAM_TEXT] (renaming EXTERNAL_PARAM to INTERNAL_PARAM)
IF NOT POSTCONDITION RAISE CONSTRAINT_ERROR;
EXTERNAL_PARAM := INTERNAL_PARAM;
END P;

In other words, it seems to me to be the natural progression of Ada
2005's Null Exclusion.
Procedure Delete( Param : Not Null Access Link_List_Node ) is
 begin
   [Deletion operation] -- Hey, we can get rid of checking for Param =
Null here!
 end Delete;

By moving the null-exclusion logic "to the parameter" we can get rid
of all the cases where, previously, we had to handle Null. Likewise,
the pre- and post- conditions allow us to do the same on a more
generalized level. Just like, in simple terms, we can disregard
worrying about division-by-zero errors in the following code:

If Input_2 = 0 Then
 -- If Input_2 is Zero here we have a BIG PROBLEM.
 Return Input_1 / Input_2;  -- Return the division, if it is
possible...
Else
  Return Input_1'Base'Last; -- Otherwise, return the maximum value.
End If;



  parent reply	other threads:[~2011-11-24 22:48 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
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 [this message]
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