From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Ada 2012 Constraints (WRT an Ada IR) Date: Mon, 5 Dec 2016 23:26:08 +0100 Organization: Aioe.org NNTP Server Message-ID: References: <92ed75e9-baae-455c-9e34-53348dc6eaef@googlegroups.com> <03847fd7-5699-48de-bb3c-ef5512398f26@googlegroups.com> <3ef819e8-55f7-4ef7-9f37-77e6abc33f98@googlegroups.com> <47366b42-c0a3-41bf-a44a-5241c109d60f@googlegroups.com> NNTP-Posting-Host: s3c6wwRqkurrfTZpuYYZ+w.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:32630 Date: 2016-12-05T23:26:08+01:00 List-Id: On 2016-12-05 23:12, Randy Brukardt wrote: > "Dmitry A. Kazakov" wrote in message > news:o23a8a$11e9$1@gioia.aioe.org... > ... >> Things called in Ada pre- and post-conditions if evaluated during run-time >> are merely subprogram bodies booby-trapped with unanticipated exceptions. >> Bad thing. > > Until you compare to the alternative, which is a subprogram body that gives > the wrong answer without detection. As I said in another message, a visible > bug is much better than an invisible bug. The alternative is a contract to raise exception. So there is no bug anymore, just well-defined behavior. > You're certainly right that a dynamic contract doesn't eliminate any bugs, > it just moves them from being invisible and/or mysterious to > hit-one-over-the-head visible. It's the same reason that constraint checks > are better than ignoring out-of-range array indexes; the same reason that > exceptions are preferable to error codes when making library calls like > opening files. I don't think I could live without those things, and dynamic > contracts are just building on that strength. I don't propose to live without them. I only insist on naming things what they are. When evaluated at run-time they are just implementations and must be named and handled accordingly. This has nothing to do with bugs or contracts. Out of range index is not a bug. Similarly an index in the range is not automatically correct. Both are just program states for which the behavior is contracted to raise exception or access an element. Neither is right or wrong, so long programmer's intentions are not stated. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de