comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Possible Ada deficiency? (goto)
Date: 15 Jan 2005 12:34:59 -0500
Date: 2005-01-15T12:34:59-05:00	[thread overview]
Message-ID: <wcc1xcmiojg.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: cs2tfn$rsp$1@news.BelWue.DE

Peter Hermann <ica2ph@sinus.csv.ica.uni-stuttgart.de> writes:

> Robert A Duff <bobduff@shell01.theworld.com> wrote:
> > The main thing I'm thinking about is that goto labels are implicitly
> > declared.  The Pascal rule requires an explicit label declaration.
> > That makes the code more readable, because you can see up front
> > that "gotos lurk below", which is a useful thing to know.
> 
> maybe
> 
> > Even if you think the extra syntactic overhead is annoying, it can't be
> > *very* annoying, because people don't write a lot of gotos.
> 
> yes. I was astonished after changing from Fortran to Ada
> when I detected to never need any goto.
> There are rare cases where a goto is useful.
> (I am assuming you do not ban goto at all)

True.

> E.g. automatic translation from Fortran spaghetti into Ada.
> The increase of workload of the translator is neglectable
> (when translator=machine, annoying when man)
> but the resulting code would be cluttered with label declarations,
> which IMHO are of no added value.

Well, if I were writing a Fortran-to-Ada translator, it would be smart
enough to generate nearly-goto-free Ada.  At least, if the Ada code is
intended to be read by humans.

> > Also, this rule makes the language a little bit harder to learn, because
> 
> no
> 
> > goto labels don't behave like most everything else in the language,
> > which *do* have to be explicitly declared.
> > 
> > How many Ada programmers know that the following silly example is
> > illegal:
> > 
> >     procedure P is
> >     begin
> >         for Mumble in 1..10 loop
> 
> missing statement in loop

No.  There's a null statement.

> >             <<Mumble>> -- Illegal!
> >             null;
> >         end loop;
> >     end P;

    procedure P is
        --(1)
    begin
        for Mumble in 1..10 loop
            <<Mumble>> --(2)
            null;
        end loop;
    end P;

Here's why the above is illegal:  There is an implicit declaration of
label Mumble at that place marked "--(1)".  At the place marked "--(2)",
this this declaration is not directly visible, because it is hidden by
the loop parameter Mumble.  Thus, the reference to Mumble at "--(2)"
is illegal.  That's just plain weird.

> > but the following equally silly example is legal:
> > 
> >     procedure P is
> >     begin
> >         <<Mumble>>
> 
> why not allow a practical "start over"?
> Although my personal taste is to avoid goto_s
> I welcome this syntactical feature for the comfort of the programer
> in the sense of "let_it_be".
> 
> >         for Mumble in 1..10 loop
> >             null;
> >         end loop;
> >     end P;
> > 
> > and can explain why?
> > 
> > Compiler writers have to work hard to get those little details exactly
> 
> once done, benefit thousandfold.

Thousand times zero = zero.

> > right, and it's of zero benefit to programmers.

> Returning to my precious and almost never used goto :
> It is carved in stone and I like it the way it is :-)

Yes, it's carved in stone.

> > If my passengers bought tickets from New York to Boston, I don't like to
> > have a rule saying I have to drive the bus via Los Angeles!  ;-)
>                     "I"   (-: not "they" :-)
> 
> anyway: thank you for the good laugh which brightens the day.

:-)

- Bob



  reply	other threads:[~2005-01-15 17:34 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-12-31 18:15 Possible Ada deficiency? danmcleran
2004-12-31 19:12 ` Jeffrey Carter
2005-01-01  1:52   ` danmcleran
2005-01-01  2:37     ` Jeffrey Carter
2005-01-01  2:02   ` danmcleran
2005-01-01 14:11     ` Martin Krischik
2005-01-01 15:27       ` danmcleran
2005-01-02 17:49         ` Martin Krischik
2005-01-01 15:30     ` Stephen Leake
2005-01-01 15:57       ` danmcleran
2005-01-03 23:37         ` Randy Brukardt
2005-01-07 17:26           ` Nick Roberts
2005-01-07 18:26             ` danmcleran
2005-01-07 21:32             ` Randy Brukardt
2005-01-08  3:56               ` Nick Roberts
2005-01-08 18:15                 ` Robert A Duff
2005-01-08 19:11                   ` Jeffrey Carter
2005-01-08 20:03                     ` Robert A Duff
2005-01-09  3:40                       ` Jeffrey Carter
2005-01-09 17:30                         ` Robert A Duff
2005-01-09 19:24                           ` Jeffrey Carter
2005-01-09 21:56                           ` Nick Roberts
2005-01-10 13:47                             ` Dmitry A. Kazakov
2005-01-10 16:46                               ` Duncan Sands
2005-01-10 17:58                                 ` Pascal Obry
2005-01-10 18:45                                   ` Dmitry A. Kazakov
2005-01-10 19:44                                     ` Pascal Obry
2005-01-11 10:05                                       ` Dmitry A. Kazakov
2005-01-11  7:24                                     ` Vinzent 'Gadget' Hoefler
2005-01-11  9:48                                       ` Dmitry A. Kazakov
2005-01-11 13:57                                         ` Vinzent 'Gadget' Hoefler
2005-01-11 21:52                                           ` Robert A Duff
2005-01-12 11:22                                           ` Dmitry A. Kazakov
2005-01-09 17:23                   ` danmcleran
2005-01-09 17:46                     ` Robert A Duff
2005-01-10  3:05                       ` danmcleran
2005-01-09 18:41                   ` Nick Roberts
2005-01-09 19:06                     ` Martin Krischik
2005-01-09 20:10                     ` Robert A Duff
2005-01-09 20:15                     ` Robert A Duff
2005-01-11 14:13                       ` Possible Ada deficiency? (goto) Peter Hermann
2005-01-11 14:54                         ` Nick Roberts
2005-01-11 22:15                         ` Robert A Duff
2005-01-12 10:17                           ` Peter Hermann
2005-01-15 17:34                             ` Robert A Duff [this message]
2005-01-15 17:58                               ` Dmitry A. Kazakov
2005-01-15 19:34                                 ` Robert A Duff
2005-01-10 20:15                   ` Possible Ada deficiency? Randy Brukardt
2005-01-10 21:51                     ` Robert A Duff
2005-01-11 20:23                       ` Randy Brukardt
2005-01-11 21:24                         ` Robert A Duff
2005-01-12 19:57                           ` Randy Brukardt
2005-01-02 15:51       ` Adrian Hoe
2005-01-04 16:06       ` Peter Hermann
2005-01-01 23:36     ` tmoran
2005-01-02  3:38       ` danmcleran
2004-12-31 19:16 ` Martin Dowie
2005-01-01  2:32   ` Jeffrey Carter
2004-12-31 23:23 ` Nick Roberts
2005-01-01  1:56   ` danmcleran
2005-01-01 11:43 ` Dmitry A. Kazakov
2005-01-01 15:46   ` danmcleran
2005-01-01 17:58     ` Larry Kilgallen
2005-01-01 19:43       ` danmcleran
2005-01-02  0:36         ` Ed Falis
2005-01-02  3:36           ` danmcleran
2005-01-02 15:53             ` Ed Falis
2005-01-07 18:31               ` danmcleran
2005-01-07 18:44                 ` Pascal Obry
2005-01-07 19:29                   ` danmcleran
2005-01-07 21:28                     ` Pascal Obry
2005-01-01 23:28   ` danmcleran
2005-01-02 10:26     ` Dmitry A. Kazakov
2005-01-02 15:51       ` danmcleran
2005-01-03 23:48     ` Randy Brukardt
2005-01-01 14:06 ` Martin Krischik
2005-01-01 15:53   ` danmcleran
2005-01-07 21:33 ` Robert A Duff
2005-01-09 17:15   ` danmcleran
2005-01-09 17:38     ` Robert A Duff
2005-01-10  3:16       ` danmcleran
2005-01-09 18:41     ` Martin Dowie
2005-01-10  3:18       ` danmcleran
2005-01-10 20:32         ` Randy Brukardt
2005-01-10 21:42           ` danmcleran
2005-01-10 21:36         ` Robert A Duff
2005-01-10 21:44           ` danmcleran
2005-01-09 19:01     ` Jeffrey Carter
2005-01-10  3:20       ` danmcleran
2005-01-10 22:16         ` Robert A Duff
2005-01-10 22:29           ` danmcleran
2005-01-11 20:12             ` Georg Bauhaus
2005-01-11 20:30               ` danmcleran
2005-01-11 21:44               ` Robert A Duff
2005-01-11  0:06           ` Jeffrey Carter
2005-01-11  0:46             ` Robert A Duff
2005-01-11 20:37           ` danmcleran
2005-01-11 21:08             ` Robert A Duff
2005-01-17  4:40 ` Tucker
2005-01-18 13:46   ` danmcleran
2005-01-18 21:29     ` Nick Roberts
2005-01-24 17:23   ` danmcleran
replies disabled

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