comp.lang.ada
 help / color / mirror / Atom feed
From: csampson@inetworld.net (Charles H. Sampson)
Subject: Re: Efficiency of code generated by Ada compilers
Date: Thu, 12 Aug 2010 00:48:39 -0700
Date: 2010-08-12T00:48:39-07:00	[thread overview]
Message-ID: <1jn35js.5fepcoxaz04uN%csampson@inetworld.net> (raw)
In-Reply-To: wccvd7hnubg.fsf@shell01.TheWorld.com

Robert A Duff <bobduff@shell01.TheWorld.com> wrote:

> csampson@inetworld.net (Charles H. Sampson) writes:
> 
> > <tmoran@acm.org> wrote:
> 
> >>    Bearing := (Bearing + Turn_Angle) mod 360;
> >
> >      I'd be interested in hearing reactions to something I did. ...
> 
> >      I then overloaded "+" and "-" for (Bearing, Turn_Angle) arguments
> > and Bearing return value.  In those functions is where the mod 360
> > occurred.  (Actually, mod 360.0, as it were.)
> >
> >      There were two advantages to doing that.  The more important was
> > that previously both of the kinds of values were being represented as
> > subtypes of Long_Precision and programmers would occasionally
> > interchange them and cause big debugging problems.  The second was
> > removing the "mod" from sight, which allowed the programmers to simply
> > think of taking a bearing, turning an angle, and getting the resulting
> > bearing, without worrying about all the niceties that might be going on
> > inside "+".
> 
> Sounds to me like a good way to do things.  It would still be a good
> idea if you called it "Turn_Left" or something like that, instead
> of "+".  But I don't object to "+".

     This was for the U. S. Navy, and "positive is right" is pretty much
universal.  For programmers, that is, not for sailors.  They think port
and starbord.

> I object to having built-in support for angle arithmetic in the
> language, though.

     I don't follow.  What is angle arithmetic?  Whatever it is, it
sounds too specific for a general purpose language.

> Did you eliminate meaningless ops like "*"?  You could do that
> by making the types private, but then you lose useful things
> like literal notation.  Or you could declare "*" to be
> abstract, which is an annoyance, but might be worth it.

     I would have liked to eliminate meaningless ops.  As you noted,
making the types private results in the loss of literals.  I wasn't
ready to go that far.

     What I really want is a way to hide existing visible operations,
particularly the ones from Standard.  I've asked about it before and
there doesn't seem to be too much enthusiasm, not enough to warrant the
time to get the niggling details correct.  The problem is, you can't
write something like

          if Current_Bearing + 0.5 > 180.0

because it's ambiguous.  (Is "+" from Standard or is it the special "+"
for bearings and turn angles?)  So you end up having to qualify literals
when there's only one reasonable "+" in the minds of the programmers.
Of course, you won't have that problem if your style is to always use
typed constants, but I wasn't ready to go that far either.

                        Charlie
-- 
All the world's a stage, and most 
of us are desperately unrehearsed.  Sean O'Casey



  reply	other threads:[~2010-08-12  7:48 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-06 20:21 Efficiency of code generated by Ada compilers Elias Salomão Helou Neto
2010-08-06 20:24 ` (see below)
2010-08-06 23:14 ` Shark8
2010-08-07  7:53 ` Dmitry A. Kazakov
2010-08-10 13:52   ` Elias Salomão Helou Neto
2010-08-10 14:24     ` Shark8
2010-08-10 14:28     ` Shark8
2010-08-10 15:01     ` Robert A Duff
2010-08-10 15:14       ` Yannick Duchêne (Hibou57)
2010-08-10 18:32         ` Robert A Duff
2010-08-10 15:10     ` Georg Bauhaus
2010-08-10 15:32     ` Dmitry A. Kazakov
2010-08-10 22:26     ` Randy Brukardt
2010-08-20  7:22       ` Yannick Duchêne (Hibou57)
2010-08-08 14:03 ` Gene
2010-08-08 15:49   ` Robert A Duff
2010-08-08 17:13     ` Charles H. Sampson
2010-08-08 18:11       ` Dmitry A. Kazakov
2010-08-08 20:51       ` Robert A Duff
2010-08-08 22:10         ` (see below)
2010-08-08 22:22           ` Robert A Duff
2010-08-09  4:46         ` Yannick Duchêne (Hibou57)
2010-08-09  5:52         ` J-P. Rosen
2010-08-09 13:28           ` Robert A Duff
2010-08-09 18:42             ` Jeffrey Carter
2010-08-09 19:05               ` Robert A Duff
2010-08-10 10:00                 ` Jacob Sparre Andersen
2010-08-10 12:39                   ` Robert A Duff
2010-08-09 19:33             ` Yannick Duchêne (Hibou57)
2010-08-09 21:42               ` Robert A Duff
2010-08-10 12:26         ` Phil Clayton
2010-08-10 12:57           ` Yannick Duchêne (Hibou57)
2010-08-10 14:03             ` Elias Salomão Helou Neto
2010-08-10 14:27               ` Yannick Duchêne (Hibou57)
2010-08-10 22:50                 ` anon
2010-08-10 23:28                   ` Yannick Duchêne (Hibou57)
2010-08-10 23:38                     ` Yannick Duchêne (Hibou57)
2010-08-11  7:06                       ` Niklas Holsti
2010-08-11 11:58                         ` anon
2010-08-11 12:37                           ` Georg Bauhaus
2010-08-11 13:13                         ` Robert A Duff
2010-08-11 23:49                           ` Randy Brukardt
2010-08-10 14:31               ` Shark8
2010-08-11  7:14               ` Charles H. Sampson
2010-08-11  6:42         ` Charles H. Sampson
2010-08-08 22:35     ` tmoran
2010-08-09 13:53       ` Robert A Duff
2010-08-09 17:59         ` tmoran
2010-08-09 19:36           ` Yannick Duchêne (Hibou57)
2010-08-09 21:38             ` Robert A Duff
2010-08-11  7:42       ` Charles H. Sampson
2010-08-11 13:38         ` Robert A Duff
2010-08-12  7:48           ` Charles H. Sampson [this message]
2010-08-12  8:08             ` Ludovic Brenta
2010-08-12 17:10               ` Charles H. Sampson
2010-08-12 18:06                 ` Jeffrey Carter
2010-08-11 18:49         ` Simon Wright
2010-08-12  7:54           ` Charles H. Sampson
2010-08-12  8:36             ` Dmitry A. Kazakov
2010-08-12 11:04             ` Brian Drummond
2010-08-12 19:23             ` Simon Wright
2010-08-12 20:21               ` (see below)
2010-08-13 15:08                 ` Elias Salomão Helou Neto
2010-08-13 15:10                   ` Elias Salomão Helou Neto
2010-08-13 18:01                     ` Georg Bauhaus
2010-08-13 19:52                       ` Robert A Duff
2010-08-14  9:44                         ` Georg Bauhaus
2010-08-13 20:22                     ` Robert A Duff
2010-08-14  1:34                       ` Randy Brukardt
2010-08-14  7:18                         ` anon
2010-08-13 21:57                     ` Jeffrey Carter
2010-08-13 22:37                       ` Yannick Duchêne (Hibou57)
2010-08-13 22:43                         ` Yannick Duchêne (Hibou57)
2010-08-13 23:29                         ` tmoran
2010-08-14  0:02                           ` Yannick Duchêne (Hibou57)
2010-08-14  0:16                             ` (see below)
2010-08-14 10:47                             ` Brian Drummond
2010-08-14 13:58                               ` Yannick Duchêne (Hibou57)
2010-08-15  0:23                                 ` Brian Drummond
2010-08-14 14:51                               ` (see below)
2010-08-15  0:58                                 ` Brian Drummond
2010-08-15  1:58                                   ` (see below)
2010-08-15 10:31                                     ` Brian Drummond
2010-08-13 15:37                   ` Dmitry A. Kazakov
2010-08-16 13:29                     ` Elias Salomão Helou Neto
2010-08-16 14:09                       ` Dmitry A. Kazakov
2010-08-18 14:00                         ` Elias Salomão Helou Neto
2010-08-18 16:38                           ` Dmitry A. Kazakov
2010-08-19 18:52                             ` Elias Salomão Helou Neto
2010-08-19 19:48                               ` Dmitry A. Kazakov
2010-08-13 16:58                   ` (see below)
2010-08-14 16:13                   ` Charles H. Sampson
2010-08-16 13:45                     ` Elias Salomão Helou Neto
2010-08-15 12:32 ` Florian Weimer
replies disabled

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