comp.lang.ada
 help / color / mirror / Atom feed
From: Bob Duff <bobduff@theworld.com>
Subject: Re: function Is_Open (File : File_Type) return Boolean; :Text_io
Date: Wed, 28 Oct 2015 16:36:09 -0400
Date: 2015-10-28T16:36:09-04:00	[thread overview]
Message-ID: <87d1vy3f46.fsf@theworld.com> (raw)
In-Reply-To: 190shqocxd87d$.1d68ghgqgbvfs$.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:

> On Wed, 28 Oct 2015 12:06:33 +0100, Georg Bauhaus wrote:
>> However, another use of predicates is to document assumptions.
>
> Documenting *shall* have *no* run-time effects.

Really?!

In C, we can write:

    int num_gizmos = 0; // num_gizmos is always between 0 and 1024.

In Ada, we can write:

    type Gizmo_Count is range 0 .. 2**10;
    Num_Gizmos: Gizmo_Count := 0;

IMHO, documenting the 0..1024 requirement in executable code is much
better than using a comment:

    - It's more likely to be correct, especially if we have a good test
      suite.  The comment just says what the original programmer thought
      was true.  Maybe they were wrong.  More likely, they were right,
      but subsequent changes elsewhere made the comment wrong.

    - If I'm debugging a specific bug, and the run-time checks on
      Num_Gizmos don't fail, I know the problem isn't caused by an
      out-of-bounds value of that variable.  Even if the
      "range 0..2**10" is wrong, it's not the cause of THIS bug.

    - English comments can be ambiguous -- sometimes "between" means
      inclusive of the end points, sometimes exclusive (although we can
      guess "inclusive" in this case).  On the other hand, I know
      exactly what ".." means.

By the way, what exactly do you mean by "shall"?  A native speaker of
English doesn't usually use that word, except in legal documents and the
like.  You seem to use the word "shall" to express opinions about the
way things ought to be, which seems like an odd usage to me.

- Bob


  reply	other threads:[~2015-10-28 20:36 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-26 10:00 function Is_Open (File : File_Type) return Boolean; :Text_io comicfanzine
2015-10-26 11:27 ` Simon Wright
2015-10-26 13:25   ` comicfanzine
2015-10-26 18:01     ` Simon Wright
2015-10-26 19:03       ` AdaMagica
2015-10-27 11:30         ` Simon Wright
2015-10-26 18:02     ` Jeffrey R. Carter
2015-10-26 13:28   ` comicfanzine
2015-10-26 15:07     ` Jacob Sparre Andersen
2015-10-26 16:37     ` AdaMagica
2015-10-26 20:46     ` J-P. Rosen
2015-10-27  8:42   ` comicfanzine
2015-10-27 11:34     ` Simon Wright
2015-10-28 13:32       ` comicfanzine
2015-10-27  8:51   ` comicfanzine
2015-10-27 17:15     ` Jeffrey R. Carter
2015-10-26 22:48 ` Bob Duff
2015-10-27  8:30   ` Dmitry A. Kazakov
2015-10-27 13:30     ` Bob Duff
2015-10-27 14:00       ` G.B.
2015-10-27 15:26       ` Dmitry A. Kazakov
2015-10-27 16:43         ` G.B.
2015-10-27 20:04           ` Dmitry A. Kazakov
2015-10-28 11:06             ` Georg Bauhaus
2015-10-28 17:58               ` Randy Brukardt
2015-10-28 18:20               ` Dmitry A. Kazakov
2015-10-28 20:36                 ` Bob Duff [this message]
2015-10-28 21:02                   ` Dmitry A. Kazakov
2015-10-29 11:25                     ` AdaMagica
2015-10-29 13:37                       ` Dmitry A. Kazakov
2015-10-29 17:57                         ` AdaMagica
2015-10-29 18:12                           ` AdaMagica
2015-10-29 18:26                           ` Dmitry A. Kazakov
2015-10-30  8:27                           ` Jacob Sparre Andersen
2015-10-30  9:11                             ` J-P. Rosen
2015-10-29 11:47                 ` G.B.
2015-10-29 13:01                   ` J-P. Rosen
2015-10-29 14:00                   ` Dmitry A. Kazakov
2015-10-30  1:06                     ` Georg Bauhaus
2015-10-30  8:39                       ` Dmitry A. Kazakov
2015-10-30 14:32                         ` G.B.
2015-10-30 16:20                           ` Dmitry A. Kazakov
2015-10-30 19:07                             ` G.B.
2015-10-31  9:31                               ` Dmitry A. Kazakov
2015-10-31 11:17                                 ` Georg Bauhaus
2015-10-30 14:40                         ` G.B.
2015-10-30 16:26                           ` Dmitry A. Kazakov
2015-10-28 20:07         ` Bob Duff
2015-10-28 20:59           ` Dmitry A. Kazakov
2015-10-27 14:02     ` G.B.
2015-10-27 15:10       ` Dmitry A. Kazakov
2015-10-27 16:41         ` G.B.
replies disabled

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