comp.lang.ada
 help / color / mirror / Atom feed
From: Keith Thompson <Keith.S.Thompson+u@gmail.com>
Subject: Re: Ada syntax questions
Date: Sun, 20 Dec 2020 13:59:25 -0800	[thread overview]
Message-ID: <87pn34b0le.fsf@nosuchdomain.example.com> (raw)
In-Reply-To: i44ekaFta3oU1@mid.individual.net

Niklas Holsti <niklas.holsti@tidorum.invalid> writes:
> On 2020-12-18 0:39, DrPi wrote:
>> Ada claims to have a better syntax than other languages.
>
> I would say the claim is that the Ada syntax was rationally designed
> to have certain properties, which are desired by certain users (us Ada
> programmers) so it is "better" for us, although some aspects are
> subjective for sure.
>
> In addition to what others have said, here are some further comments
> on the examples you gave:
>
>> 1) What about array indexing ?
>> In some other languages, arrays are indexed using square
>> brackets. In Ada, parentheses are used for function calls and for
>> array indexing.

I've never found any of the arguments in favor of using parentheses
for array indexing convincing, and I've never liked the way Ada
does it.  But of course the decision was made in the early 1980s,
and it can't be changed now.

At least part of the reason was that Ada needed to be used on
systems that didn't have '[' and ']' in their character sets.
I don't know to what extent that necessity has been used as an
after the fact rationalization.

Function calls and array indexing can be substituted for one another
in *some* circumstances, but not it all.  But they really are very
different things.  A function call executes user-written code,
and may have side effects; an array indexing expression refers to
an object.  An array indexing expression can appear on the LHS of
an assignment; a function call can't.

If Ada had originally used '[' and ']' for array indexing, I doubt
that anyone would be complaining that it would have been better to
use '(' and ')' (other than some Fortran programmers, I suppose).

Why not use parentheses for record components, Object(Component)
rather than Object.Component?  Doesn't the same argument apply?

> There are proposals to allow [] as well as (), mainly to increase
> familiarity for new Ada users.

Ick.  The only thing more confusing than using () for array indexing
would be allowing either () or [] at the programmer's whim.  (Well,
not the only thing; I'm sure I could come up with something even
worse.)

>> 2) In Ada, a function without arguments is called without any parentheses.
>
> Parameterless functions are rare, and properly so.
>
> Parameterless procedures are much more common. Writing
>
>    Frobnicate_Widget();
>
> is longer than
>
>    Frobnicate_Widget;
>
> and seems to have no advantages over the shorter form.

I wouldn't have expected the designers of Ada to be concerned about
saving two characters.

I see your point about procedure calls.  A statement consisting
of an identifier followed by a semicolon can only be a procedure
call (I think), so there's no ambiguity.  My mild dislike for the
function call syntax is that it needlessly treats the zero-parameter
case as special.

There could also be some potential ambiguities, though I'm not aware
of any actual ambiguous cases in Ada.  In some languages, the name
of a function not followed by parentheses refers to the function
itself (or its address) and does not call it.  I can easily imagine
an attribute for which Func'Attribute could sensibly refer either
to the function Func itself or to the value returned by calling it.

Again, if Ada 83 had required empty parentheses on parameterless
procedure and function calls, I'm skeptical that anyone would now
be arguing that it was a bad decision.

And again, it would be impossible to change it without breaking
existing code.

-- 
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
Working, but not speaking, for Philips Healthcare
void Void(void) { Void(); } /* The recursive call of the void */

  parent reply	other threads:[~2020-12-20 21:59 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-17 22:39 Ada syntax questions DrPi
2020-12-17 23:18 ` Gabriele Galeotti
2020-12-18  8:26 ` Jeffrey R. Carter
2020-12-18  9:18 ` Dmitry A. Kazakov
2020-12-18 16:55 ` Mart van de Wege
2020-12-18 17:38 ` Björn Lundin
2020-12-18 19:35 ` Niklas Holsti
2020-12-20 21:59   ` Keith Thompson
2020-12-22  1:04     ` Randy Brukardt
2020-12-22  8:00       ` Dmitry A. Kazakov
2020-12-23  1:23         ` Randy Brukardt
2020-12-23  8:59           ` Dmitry A. Kazakov
2020-12-24  4:06             ` Randy Brukardt
2020-12-24  9:37               ` Dmitry A. Kazakov
2020-12-22 13:48       ` AdaMagica
2020-12-20 21:59   ` Keith Thompson [this message]
2020-12-21  8:08     ` Dmitry A. Kazakov
2020-12-18 23:09 ` Stephen Leake
2020-12-19 11:50   ` DrPi
2020-12-19 12:40     ` Dmitry A. Kazakov
2020-12-19 17:13       ` Andreas ZEURCHER
2020-12-19 17:49         ` Dmitry A. Kazakov
2020-12-19 18:40           ` Andreas ZEURCHER
2020-12-19 19:37             ` Dmitry A. Kazakov
2020-12-19 22:11               ` Andreas ZEURCHER
2020-12-20  8:47                 ` Dmitry A. Kazakov
2020-12-20 16:53                   ` Andreas ZEURCHER
2020-12-22  0:58                     ` Randy Brukardt
2020-12-22  2:39                       ` Andreas ZEURCHER
2020-12-22 10:05                     ` Stéphane Rivière
2020-12-25  9:34                     ` G.B.
2020-12-19 17:01     ` AdaMagica
2020-12-19 21:51     ` Stephen Leake
2020-12-19 22:20       ` Andreas ZEURCHER
2020-12-20 14:10       ` DrPi
replies disabled

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