comp.lang.ada
 help / color / mirror / Atom feed
From: stefan-lucks@see-the.signature
Subject: Re: and then... (a curiosity)
Date: Fri, 5 Sep 2008 09:25:17 +0200
Date: 2008-09-05T09:25:17+02:00	[thread overview]
Message-ID: <Pine.LNX.4.64.0809050904150.27752@medsec1.medien.uni-weimar.de> (raw)
In-Reply-To: <48c0406c$0$1599$dbd4f001@news.euronet.nl>

On Thu, 4 Sep 2008,  wrote:

> > Very strange that the Ada compiler is able to compile stuff if you write
> > "and then" instead of "and". Following your point, the designers of Ada
> > did overestimate the smartness of compilers. ;-)
> 
> My objections are targeted at the thing that you propose (elsewhere called
> 1+2). That beast would either allow bugs to hide, or would require whole
> program analysis and perhaps mind-reading capabilties.

Firstly, I have been very clear that I didn't "propose" that. 

Secondly, it is easy to implement. Replace "if A and B then ... else ... 
end if" by:

declare 
  T_A := A;
begin
  if T_A then 
    return B; -- may raise an exception
  end if;
exception
  when others =>
    if B -- may raise an exception
    then 
      raise; -- propagate the exception raised by A 
    else
      return False;
    end if;
end;

Hey, do you need mind-reading capabilities for that? I would consider 
this an exercise for Students -- and a really easy one.;-)

Now, a really ugly issue is that both the evaluation of A and the 
evaluation of B might raise an exeption, and we cannot re-raise both 
exceptions. If not for other reasons, that suffices not to propagate that. 
Well, one could raise a Program_Error in that case, but that is ugly 
anyway. But note that even in Ada-as-it-is, it is not defined which of 
both exceptions is raised!

> > is that the language "and" actually attempts to mimic the mathematical
> > "and".
> 
> Yes, I agree and that is very unfortunate. But while we are at it. The
> 'designers' of logic made the same mistake: they have chosen an
> interpretation that difference from the word "and" in English. 

OK, here we disagree. They wanted the "and", because they wanted to mimic 
the mathematical and -- as much as the designers of most other languages. 
As much as integer addition mimics the addition over the integers ... 

> Quite possible. Perhaps a logic with:
> 
>    false and undefined  <=> undefined and false <=> false
> 
> If that is the definition, then that would be possible. But this is not the
> nave definition from Boolean algebra. This definition must be learned, but
> then you could equally well learn both well-defined definitions as from Ada.
> 
> But you may still prefer above definition from a three-valued logic. I
> agree, the logic is well-defined and mathemtically elegant. However, it is
> an engineering disaster. We write millions of lines of code and we must deal
> with violations, exceptions, and validations errors. 

The better it would be to focus on actual violations. Instead of hunting 
an exception raised in fragments such as "if X/=0 and Y/X<Z".


-- 
------ Stefan Lucks   --  Bauhaus-University Weimar  --   Germany  ------
               Stefan dot Lucks at uni minus weimar dot de
------  I  love  the  taste  of  Cryptanalysis  in  the  morning!  ------




  reply	other threads:[~2008-09-05  7:25 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-29 21:06 and then... (a curiosity) mockturtle
2008-08-29 21:47 ` Samuel Tardieu
2008-08-30 21:28   ` Maciej Sobczak
2008-08-31  8:28     ` Georg Bauhaus
2008-08-31 23:21       ` Ray Blaak
2008-09-01  8:05     ` Martin Krischik
2008-09-01 17:56       ` Ray Blaak
2008-09-02  6:53         ` Martin Krischik
2008-09-02 14:56           ` Adam Beneschan
2008-09-02 16:28             ` Ray Blaak
2008-09-02 16:26           ` Ray Blaak
2008-09-02 20:50             ` Robert A Duff
2008-09-03 12:35               ` Brian Drummond
2008-09-03 15:56                 ` Robert A Duff
2008-09-04 22:09                   ` Brian Drummond
2008-09-03 21:01               ` Vinzent Hoefler
2008-09-02 14:50     ` Adam Beneschan
2008-08-29 22:28 ` Adam Beneschan
2008-08-30  1:06   ` Jeffrey R. Carter
2008-08-30 11:21   ` Dmitry A. Kazakov
2008-08-30 15:35     ` Peter C. Chapin
2008-09-02 15:06       ` Adam Beneschan
2008-09-02  3:41 ` Steve
2008-09-02  7:48   ` stefan-lucks
2008-09-02  8:57     ` Martin Krischik
2008-09-02 10:50       ` stefan-lucks
2008-09-02 10:33         ` Ludovic Brenta
2008-09-02 13:32           ` stefan-lucks
2008-09-02 12:53             ` Ludovic Brenta
2008-09-02 17:32               ` Georg Bauhaus
2008-09-03 13:14               ` stefan-lucks
2008-09-03 12:44                 ` Dmitry A. Kazakov
2008-09-02 13:39             ` stefan-lucks
2008-09-02 13:40             ` stefan-lucks
2008-09-02 16:48             ` Dmitry A. Kazakov
2008-09-02 17:00             ` Keith Thompson
2008-09-02 19:15               ` Simon Wright
2008-09-02 20:37               ` Robert A Duff
2008-09-02 20:58                 ` Jeffrey R. Carter
2008-09-02 21:08                   ` Robert A Duff
2008-09-03 12:24                     ` Pascal Obry
2008-09-02 22:34                   ` Santiago Urueña
2008-09-03  5:56                     ` Robert A Duff
2008-09-03  6:55                       ` Santiago Urueña
2008-09-03 14:14                       ` Adam Beneschan
2008-09-03  0:11                 ` Randy Brukardt
2008-09-02 17:20             ` Georg Bauhaus
2008-09-04  1:05         ` Stephen Leake
2008-09-04  6:45           ` stefan-lucks
2008-09-04  7:35             ` Dmitry A. Kazakov
2008-09-04 12:04               ` stefan-lucks
2008-09-04 13:00                 ` Dmitry A. Kazakov
2008-09-04 19:05                   ` stefan-lucks
2008-09-04 20:28                     ` Dmitry A. Kazakov
2008-09-05  6:57                       ` stefan-lucks
2008-09-05  6:34                         ` Ray Blaak
2008-09-05 14:14                     ` Robert A Duff
2008-09-05 15:04                       ` Dmitry A. Kazakov
2008-09-07 16:45                         ` stefan-lucks
2008-09-05 15:14                       ` Hyman Rosen
2008-09-05 15:59                         ` Adam Beneschan
2008-09-05 16:10                           ` Hyman Rosen
2008-09-07 16:36                       ` stefan-lucks
2008-09-07 16:08                         ` Gautier
2008-09-04  7:39             ` Karel Th�nissen
2008-09-04 12:12               ` stefan-lucks
2008-09-04 15:13                 ` Georg Bauhaus
2008-09-04 15:16                 ` Karel Th�nissen
2008-09-04 15:42                   ` Dmitry A. Kazakov
2008-09-04 19:27                   ` stefan-lucks
2008-09-04 19:43                     ` stefan-lucks
2008-09-04 19:40                       ` Georg Bauhaus
2008-09-05  7:00                         ` stefan-lucks
2008-09-05  6:35                           ` Ray Blaak
2008-09-04 20:06                       ` Karel Th�nissen
2008-09-05  7:44                         ` stefan-lucks
2008-09-05  6:41                           ` Vinzent Hoefler
2008-09-04 20:09                     ` Karel Th�nissen
2008-09-05  7:25                       ` stefan-lucks [this message]
2008-09-05  6:37                         ` Ray Blaak
2008-09-05  8:20                           ` stefan-lucks
2008-09-05 13:57                         ` Robert A Duff
2008-09-04 16:33                 ` Dmitry A. Kazakov
2008-09-04 19:31                   ` stefan-lucks
2008-09-04 19:59                     ` Karel Th�nissen
2008-09-05  7:27                       ` stefan-lucks
2008-09-05  8:38                         ` Ludovic Brenta
2008-09-04 20:17                     ` Dmitry A. Kazakov
2008-09-05 13:26                 ` Robert A Duff
2008-09-05 13:49                   ` Robert A Duff
2008-09-03  1:24     ` Stephen Leake
2008-09-03  3:31       ` tmoran
2008-09-03 13:22       ` stefan-lucks
replies disabled

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