comp.lang.ada
 help / color / mirror / Atom feed
From: "Robert I. Eachus" <rieachus@attbi.com>
Subject: Re: The 1980 ACM Turing Award Lecture The Emperor's Old Clothes
Date: Mon, 17 Jun 2002 20:06:19 GMT
Date: 2002-06-17T20:06:19+00:00	[thread overview]
Message-ID: <3D0E4184.4070207@attbi.com> (raw)
In-Reply-To: 3D0BEF81.8010704@mail.com

Hyman Rosen wrote:

 
> Really? I find this utterly astonishing. So almost every Ada program is
> littered with error handling code interpenetrating the normal working 
> logic?
> Or do Ada programs ignore eror codes just like old C programs did?


No.  Input output routines may need to do error checking, but that is 
not an exceptional occurrence, and is usually not treated as one.  The 
'Valid attribute in Ada 95 is a great enhancement to the language.  It 
makes validity checking for input much easier to do, and to do in the 
right way.

Most other cases where return values should be checked in C and are not, 
in Ada the checking is done by constraints on parameters well before the 
call.  If your code can cause one of those constraint checks to fail, it 
may be that you need to rethink what you are doing.

This propagation of validity in Ada means that putting constraints on 
values (and running with constraint checks turned on) can be faster in 
Ada than eliminating constraint checks.

As a sort of trivial example:

function Square_Root(X: in Natural) return Natural;

..does not need to do any internal checks, and will never raise an 
exception.  (With the possible exception of Storage_Error...) 
Similarly, a procedure declared:

procedure Foo(S: in out String);  -- will never cause a buffer overrun.

Of course, sometimes you need to use Ada.Strings.Bounded or 
Ada.Strings.Unbounded to get the correct semantic behavior.  But that is 
just an instance of a general Ada rule.  Using strong typing right 
eliminates a lot of errors, whether they are coding errors, compiler 
error messages, or potential exceptions.

I hope this is all preaching to the choir, but I fell this thread 
contains too much self-flagellation as it is, and some balance is needed.

 




  reply	other threads:[~2002-06-17 20:06 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-14  0:49 ada paper critic Immanuel Scholz
2002-06-14  1:28 ` Immanuel Scholz
2002-06-14  1:43   ` Dale Stanbrough
2002-06-14  4:53     ` David Marceau
2002-06-14  6:40       ` Dale Stanbrough
2002-06-14  6:49       ` Hyman Rosen
2002-06-14 12:18       ` Baugereau
2002-06-14 16:30         ` David Marceau
2002-06-14 17:34           ` Baugereau
2002-06-14 19:01             ` Wes Groleau
2002-06-14 19:43               ` Baugereau
2002-06-15  3:02                 ` Vinzent Hoefler
2002-06-15  9:49                   ` Pascal Obry
2002-06-17 15:53                     ` Dan Andreatta
2002-06-17 18:20                       ` Pascal Obry
2002-06-17 20:56                     ` Michael Bode
2002-06-17 21:18                       ` Pascal Obry
2002-06-16 21:52                   ` Ted Dennison
2002-06-14 20:02     ` Immanuel Scholz
2002-06-14  3:14   ` Ted Dennison
2002-06-14  4:35     ` Dale Stanbrough
2002-06-14  8:05       ` David Marceau
2002-06-14 12:31         ` Dale Stanbrough
2002-06-14 15:08         ` Darren New
2002-06-17  0:17           ` Robert A Duff
2002-06-14 19:05         ` Wes Groleau
2002-06-16  3:34           ` Dale Stanbrough
2002-06-16  3:32         ` Dale Stanbrough
2002-06-14  8:25       ` Dmitry A. Kazakov
2002-06-14 12:19         ` Immanuel Scholz
2002-06-14 14:51           ` Dmitry A. Kazakov
2002-06-14 15:09             ` Darren New
2002-06-16 22:49               ` Dmitry A.Kazakov
2002-06-16 15:07                 ` Jim Rogers
2002-06-17  4:06                   ` Darren New
2002-06-17  4:52                     ` Jim Rogers
2002-06-17  9:45                       ` David Marceau
2002-06-17 15:42                       ` Darren New
2002-06-17  3:59                 ` Darren New
2002-06-17 22:19                   ` Dmitry A.Kazakov
2002-06-14 12:58       ` Larry Kilgallen
2002-06-14 22:16         ` Dale Stanbrough
2002-06-15  1:22           ` Larry Kilgallen
2002-06-15  0:51             ` Dale Stanbrough
2002-06-15 11:49               ` Immanuel Scholz
2002-06-15 21:45             ` Robert A Duff
2002-06-14 14:59       ` Ted Dennison
2002-06-16  3:27         ` Dale Stanbrough
2002-06-16 22:18           ` Wes Groleau
2002-06-16 22:38           ` Ted Dennison
2002-06-14 15:00       ` Ted Dennison
2002-06-14 20:13         ` Wes Groleau
2002-06-14 18:52       ` Jeffrey Carter
2002-06-15 22:03         ` Robert A Duff
2002-06-16  1:58           ` Jeffrey Carter
2002-06-16  3:19             ` Dale Stanbrough
2002-06-16 22:20         ` Wes Groleau
2002-06-17  1:57           ` Larry Kilgallen
2002-06-17  2:16           ` Jeffrey Carter
2002-06-14 15:25   ` John R. Strohm
2002-06-15  4:05     ` Lyle McKennot
2002-06-17 13:32       ` Marin David Condic
2002-06-15  4:06     ` The 1980 ACM Turing Award Lecture The Emperor's Old Clothes Lyle McKennot
2002-06-15 13:45       ` Ted Dennison
2002-06-15 13:55         ` Ed Falis
2002-06-15 15:03           ` Pat Rogers
2002-06-15 18:42         ` Jeffrey Carter
2002-06-16 22:25         ` Wes Groleau
2002-06-15 18:01       ` Robert I. Eachus
2002-06-16  1:53         ` Hyman Rosen
2002-06-17 20:06           ` Robert I. Eachus [this message]
2002-06-17 20:54             ` Hyman Rosen
2002-06-18 14:56               ` Stephen Leake
2002-06-18 17:08                 ` Hyman Rosen
2002-06-16  3:15         ` Lyle McKennot
2002-06-16  3:51           ` Pat Rogers
  -- strict thread matches above, loose matches on Subject: below --
2002-06-15  6:13 Gautier direct_replies_not_read
2002-06-15  8:34 ` Lyle McKennot
2002-06-15 17:32   ` Gautier
2002-06-19  7:07 ` Peter Amey
replies disabled

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