comp.lang.ada
 help / color / mirror / Atom feed
From: James Rogers <jimmaureenrogers@worldnet.att.net>
Subject: Re: Problem trying to implement generics.
Date: Sun, 15 Apr 2001 03:27:59 GMT
Date: 2001-04-15T03:27:59+00:00	[thread overview]
Message-ID: <3AD915C2.321EB048@worldnet.att.net> (raw)
In-Reply-To: 9b9qjc$nk9$1@taliesin.netcom.net.uk

Ayende Rahien wrote:
> 
> "Dmitry A. Kazakov" <dmitry@elros.cbb-automation.de> wrote in message
> news:3AD858A3.3070803@elros.cbb-automation.de...
> > Well, but what I still cannot understand, what is the objection against
> > *procedures* returning a value:
> 
> Because that is the difference between functions & procedures?
> If you wanted it that way, you could do this:
> function Foo(...) return nothing;
> 
> But I agree that it would be nice to be able to ignore function's return
> value.

A procedure may modify parameters, but may not return a value.

The practice in C, C++, and Java of ignoring return values from 
functions or methods may seem very convenient. In fact it is a
fundamental violation of the contract defined for a function. This
is the single greatest reason exceptions were added to C++, and
included from the start in Java. A common C programming paradigm
is to have a function return an indication of success or failure.
That same function may also modify some or all parameter values.
It is also very common in C to ignore the return value of a
function. What is the obvious problem? If the return value
indicates success or failure, and that value is ignored, then the
programmer is ensuring erroneous execution. Whenever the function
fails, the programmer using that function continues to use the
modified parameter values as though the function succeeded. This
usually leads to very difficult debugging sessions because the error
may not become obvious in the program until some later code block.
It also relies upon the sometimes lucky choice of test cases to 
generate the error condition. If your test cases do not generate
the error, then you will release erroneous code to your 
customer, which they will find for you, usually at significant
expense for your company.

In Ada you have a very strong contract concerning procedures and
functions. Functions always return a value. That value has significant
meaning. It cannot be ignored. Procedures are the form of subprogram
to use when no significant value is to be returned.

Jim Rogers
Colorado Springs, Colorado USA



  parent reply	other threads:[~2001-04-15  3:27 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-04-11 15:04 Problem trying to implement generics Ayende Rahien
2001-04-12  1:41 ` tmoran
2001-04-12 13:15   ` Ayende Rahien
2001-04-12 18:15     ` tmoran
2001-04-13 11:18       ` Ayende Rahien
2001-04-13 10:35         ` chris.danx
2001-04-13 11:54           ` Ayende Rahien
2001-04-13 11:49             ` chris.danx
2001-04-13 23:03               ` Ayende Rahien
2001-04-13 23:01                 ` Robert A Duff
2001-04-14  0:05                   ` Brian Rogoff
2001-04-14  1:12                     ` Ayende Rahien
2001-04-14  1:44                       ` Brian Rogoff
2001-04-14 14:03                         ` Dmitry A. Kazakov
2001-04-14 16:30                           ` Ayende Rahien
2001-04-14 16:28                             ` Michael Erdmann
2001-04-15  3:27                             ` James Rogers [this message]
2001-04-15 12:20                               ` Ayende Rahien
2001-04-15 14:09                               ` Dmitry A. Kazakov
2001-04-15 18:22                                 ` tmoran
2001-04-15 13:48                             ` Dmitry A. Kazakov
2001-04-15 20:44                               ` Ayende Rahien
2001-04-16 14:34                                 ` Dmitry A. Kazakov
2001-04-14  1:33                     ` Robert A Duff
2001-04-17  8:50                     ` Jean-Pierre Rosen
2001-04-17 13:20                   ` Tucker Taft
2001-04-17 16:51                     ` Ayende Rahien
2001-04-17 17:16                       ` Larry Hazel
2001-04-17 18:11                         ` Brian Rogoff
2001-04-17 19:10                           ` Marin David Condic
2001-04-17 21:08                             ` Brian Rogoff
2001-04-18 15:16                               ` Chad R. Meiners
2001-04-18 16:33                                 ` Marin David Condic
2001-04-17 21:09                             ` chris.danx
2001-04-17 21:11                             ` chris.danx
2001-04-17 21:17                             ` chris.danx
2001-05-08  5:40                             ` Lao Xiao Hai
2001-05-11  9:43                               ` John English
2001-05-12 19:16                                 ` Lao Xiao Hai
2001-04-17 19:32                           ` Larry Hazel
2001-04-17 21:03                           ` Ayende Rahien
2001-04-18 15:48                             ` Brian Rogoff
2001-04-20 12:34                               ` Georg Bauhaus
2001-04-20 12:42                                 ` Lutz Donnerhacke
2001-04-20 12:45                                 ` Lutz Donnerhacke
2001-04-20 19:48                                 ` Brian Rogoff
2001-04-20 20:36                                   ` David Starner
2001-04-20 23:02                                   ` Robert A Duff
2001-04-23  2:45                                     ` Brian Rogoff
2001-04-24  1:15                                       ` Robert A Duff
2001-04-24  2:00                                         ` Brian Rogoff
2001-04-24 15:12                                           ` Georg Bauhaus
2001-04-24 15:09                                         ` Georg Bauhaus
2001-04-24 18:36                                           ` Marius Amado Alves
2001-04-19 13:08                           ` Larry Kilgallen
     [not found]                           ` <9bi4g4$97m$1@nh.pace.Organization: LJK Software <YlSyXUaQmD+$@eisner.encompasserve.org>
2001-04-19 14:20                             ` Marin David Condic
2001-04-18  5:34                       ` Mike Silva
2001-04-18 16:55                       ` Ray Blaak
2001-04-24 16:00                       ` Tucker Taft
2001-04-12 13:57 ` Andy
2001-04-13  6:34   ` Simon Wright
2001-04-13 11:11   ` Ayende Rahien
2001-04-12 18:06 ` Stephen Leake
replies disabled

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