From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: "functional" programming in Ada
Date: Thu, 8 Mar 2018 09:23:51 +0100
Date: 2018-03-08T09:23:51+01:00 [thread overview]
Message-ID: <p7qrun$461$1@gioia.aioe.org> (raw)
In-Reply-To: p7qb11$hi0$1@franka.jacob-sparre.dk
On 08/03/2018 04:34, Randy Brukardt wrote:
> "Pascal Obry" <pascal@obry.net> wrote in message
> news:1520428274.2488.155.camel@obry.net...
> Le mercredi 07 mars 2018 à 02:52 -0800, Mehdi Saada a écrit :
>>> Why not writing everything in the specs then ? Maybe the original
>>> separation of specs and bodies is a mistake, in the light of recent
>>> tools requirements.
>>
>> The spec is what is exposed to other units.
>>
>> The body is implementation details.
>>
>> The separation is to me one of the most important point in Ada. I think
>> that all languages should have done that. It is an welcomed separation
>> for software engineer.
>
> Right. And note that the specification has always contained elements which
> are determined at runtime (that is, executed). For instance, even in Ada 83
> you could have a subtype like:
>
> subtype Dyn is Natural range 1 .. Some_Function;
>
> and to properly export Dyn, one has to execute code.
Determined at run-time /= determined in a specific way. Even if
evaluation of an expression is static, when that expression is an
implementation, that thing has *nothing* to seek in the specifications.
Specifications must be only specifications regardless when and how
evaluated.
> The various contracts (preconditions, postconditions, predicates, etc.) all
> contain some executable code, and it is necessary for callers to be able to
> understand those contracts. Expression functions help in this, while the
> bulk of the implementation should remain in the body.
These are not contracts if have any executable code, and more
importantly, understanding cannot be achieved by exposing
implementation/code.
P.S. Contracts exist prior the program (programs, actuall) and surely
prior to any execution of (any implementation of any programs under the
contract).
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2018-03-08 8:23 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-06 11:34 "functional" programming in Ada Alejandro R. Mosteo
2018-03-06 13:09 ` Dmitry A. Kazakov
2018-03-06 14:35 ` Alejandro R. Mosteo
2018-03-06 15:08 ` Dmitry A. Kazakov
2018-03-06 16:00 ` Manuel Collado
2018-03-06 16:37 ` Dmitry A. Kazakov
2018-03-06 22:16 ` Manuel Collado
2018-03-07 8:41 ` Dmitry A. Kazakov
2018-03-07 4:46 ` Paul Rubin
2018-03-06 13:29 ` Mehdi Saada
2018-03-06 14:34 ` Alejandro R. Mosteo
2018-03-06 14:36 ` Mehdi Saada
2018-03-06 15:27 ` Alejandro R. Mosteo
2018-03-06 16:26 ` Jeffrey R. Carter
2018-03-06 20:17 ` Randy Brukardt
2018-03-07 14:30 ` Alejandro R. Mosteo
2018-03-06 15:01 ` Dan'l Miller
2018-03-06 15:25 ` Alejandro R. Mosteo
2018-03-07 10:07 ` Maciej Sobczak
2018-03-07 10:52 ` Mehdi Saada
2018-03-07 13:11 ` Pascal Obry
2018-03-07 13:53 ` Dmitry A. Kazakov
2018-03-07 16:13 ` Dan'l Miller
2018-03-12 0:13 ` Robert I. Eachus
2018-03-08 3:34 ` Randy Brukardt
2018-03-08 8:23 ` Dmitry A. Kazakov [this message]
2018-03-08 22:49 ` G. B.
2018-03-09 8:38 ` Dmitry A. Kazakov
2018-03-09 8:40 ` Simon Wright
2018-03-09 13:39 ` Dmitry A. Kazakov
2018-03-07 15:03 ` Alejandro R. Mosteo
2018-03-07 15:16 ` Alejandro R. Mosteo
2018-03-07 20:34 ` Robert A Duff
2018-03-07 22:47 ` Jeffrey R. Carter
2018-03-08 0:26 ` Shark8
2018-03-08 0:45 ` Paul Rubin
2018-03-08 11:07 ` Alejandro R. Mosteo
2018-03-08 18:24 ` G. B.
2018-03-09 14:41 ` Alejandro R. Mosteo
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox