comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <see.reply.to@maps.futureapps.de>
Subject: What is a Contract? (was: Suffix _T for types found good)
Date: Wed, 20 Aug 2008 09:42:17 +0200
Date: 2008-08-20T09:42:17+02:00	[thread overview]
Message-ID: <48abcad9$0$11749$9b4e6d93@newsspool1.arcor-online.net> (raw)
In-Reply-To: <uvdxwwqs2.fsf@STRIPCAPStelus.net>

Ray Blaak wrote:

> A type is a contract specifying behaviour and storage.

In the context of Ada types, this use of the word "contract" is
potentially eroding the very notion of contract.  A type is not
specific enough to be the same as a proper full contract:


Behavior includes time.  Most types don't say anything about time.
Behavior includes order.  Most types don't say anything about order
of operations.  The client party can choose any order of primitive
operations they wish. They can expect the operations to have finished
whenever these are done.  No contractual specifics.

Contracts say, "Provided earlier behavior X... ",
"Provided property P of A ... ". Most Ada types do not and cannot
currently have a contractual part of this sort.  There are no
premises right now, other than subtype constraints (recursively).

The client party to a type-contract is typically *not* granted access
to any piece of storage.  Client parties only see the
public view of a type. You could say that privacy is part of the
contract. Sure. This is what I mean by eroding the notion of "contract".

(It is typically not necessary to set up a contract between two parties
when all that it specifies is,
 "Client will not tear castle's walls down."
That's understood.)

A contract for object of a type typically *exludes* aspects of
storage. (Other than saying, this operation requires O(2*n) words
of computer storage. Said in comments...)

A contract is specific about expectations. "This function returns
a String" is unspecific at the level of "contract".  The client's
expectation in the sense of contract is, "What kind of String will
I get back?"


I think it might be advantageous to let "contract" mean the
essentials that make contract *different* from plain old
Ada type.


-- 
Georg Bauhaus
Y A Time Drain  http://www.9toX.d



  parent reply	other threads:[~2008-08-20  7:42 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-06 14:58 Suffix _T for types found good amado.alves
2008-08-06 16:34 ` Peter C. Chapin
2008-08-06 17:23   ` amado.alves
2008-08-06 21:57     ` Peter C. Chapin
2008-08-06 22:14       ` amado.alves
2008-08-12 14:00     ` Simon Wright
2008-08-07  1:23   ` Steve
2008-08-07 15:10     ` Colin Paul Gloster
2008-08-07 17:04       ` Ray Blaak
2008-08-07 17:19         ` amado.alves
2008-08-07 18:44           ` amado.alves
2008-08-07 19:37             ` Jeffrey R. Carter
2008-08-08 13:46               ` Steve
2008-08-08 16:40                 ` Ray Blaak
2008-08-08 20:27                 ` Jeffrey R. Carter
2008-08-19 18:05         ` Martin
2008-08-19 23:04           ` Ray Blaak
2008-08-20  0:13             ` Gary Scott
2008-08-20  7:42             ` Georg Bauhaus [this message]
2008-08-20 16:19               ` What is a Contract? (was: Suffix _T for types found good) Ray Blaak
2008-08-20  8:52             ` Suffix _T for types found good Martin
2008-08-20  2:01           ` Steve
2008-08-20 11:59             ` Stephen Leake
2008-08-20 14:25               ` Adam Beneschan
2008-08-20 15:38                 ` Dmitry A. Kazakov
2008-08-20 20:37                   ` Adam Beneschan
2008-08-21  1:46                     ` Peter C. Chapin
2008-08-21  9:47                       ` Stephen Leake
2008-08-21  9:49                       ` Dmitry A. Kazakov
2008-08-21  9:44                     ` Dmitry A. Kazakov
2008-08-22  4:12                     ` Randy Brukardt
2008-08-22  4:12                     ` Randy Brukardt
2008-08-20 15:46               ` Gary Scott
2008-08-21  9:48                 ` Stephen Leake
2008-08-21 13:53               ` amado.alves
2008-08-21 15:30                 ` Gary Scott
2008-08-20 11:53           ` Stephen Leake
2008-08-20 12:12             ` Martin
2008-08-20 19:37             ` Simon Wright
2008-08-21  9:44               ` Stephen Leake
2008-08-07  3:05   ` Randy Brukardt
2008-08-07  6:56     ` Jean-Pierre Rosen
2008-08-06 17:18 ` Niklas Holsti
2008-08-06 17:57   ` amado.alves
2008-08-06 18:43     ` Niklas Holsti
2008-08-06 19:36       ` amado.alves
2008-08-06 19:11 ` Jeffrey R. Carter
2008-08-06 19:16   ` amado.alves
2008-08-06 19:47     ` Jeffrey R. Carter
2008-08-06 20:06     ` Pascal Obry
2008-08-06 22:07       ` amado.alves
2008-08-06 23:11         ` Jeffrey R. Carter
2008-08-06 23:25           ` amado.alves
2008-08-07  7:16         ` Georg Bauhaus
2008-08-07  8:51           ` amado.alves
2008-08-07 10:10             ` Georg Bauhaus
2008-08-07 11:32               ` Georg Bauhaus
2008-08-07 12:37               ` amado.alves
2008-08-07 16:51             ` Ray Blaak
2008-08-07 17:01           ` Ray Blaak
2008-08-07 19:27             ` Adam Beneschan
2008-08-07 22:15               ` Ray Blaak
2008-08-07 22:17             ` Ray Blaak
2008-08-07 19:25           ` Jeffrey R. Carter
2008-08-07 12:12 ` Maciej Sobczak
2008-08-07 12:30   ` amado.alves
2008-08-07 12:51   ` Dmitry A. Kazakov
2008-08-07 15:37     ` amado.alves
replies disabled

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