D enters Tiobe top 20
Walter Bright
newshound2 at digitalmars.com
Mon Nov 11 10:39:24 UTC 2019
On 11/10/2019 2:22 AM, Timon Gehr wrote:
> On 10.11.19 00:23, Walter Bright wrote:
>> On 11/9/2019 4:23 AM, Timon Gehr wrote:
>>> You need in and out contracts for modular verification.
>>
>> You can pick up both from looking at the assert's in the prolog and epilog of
>> the function.
>> ...
>
> - Modular verification means it's enough to have DI files for functions you
> call, without a function body.
I know.
> - Some asserts in the prologue of your function might really be asserts and not
> assumes.
The distinction between assert and assume has come up before, and I've argued
that in D they are the same.
> - Similarly, some asserts in the epilogue of your function might not be things
> you actually want to guarantee to the caller.
You could look for this pattern:
T biff(P p)
{
assert(something about p);
T result;
scope (success) assert(something about result);
... function body ...
}
and have the contracts.
>> More importantly, nobody is working on a modular verification system for D,
>> and haven't for 20 years, so the contracts aren't particularly useful.
> Programmers can read contracts too, not just verification systems. They are
> useful documentation and can be used for assigning blame: Is the assertion
> failure the fault of the caller or the callee?
I do understand the point of them. I've been enamored with contracts for 20-30
years. I've done presentations promoting them. I added them to my C++ compiler.
I added them to D.
I just haven't found them particularly useful or helpful when I've tried them.
More information about the Digitalmars-d
mailing list