comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Why .ads as well as .adb?
Date: Tue, 4 Jun 2019 17:28:55 -0500
Date: 2019-06-04T17:28:55-05:00	[thread overview]
Message-ID: <qd6rb8$hl7$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: f37f6f75-62d4-4152-917e-d666d67f6cb7@googlegroups.com

"Maciej Sobczak" <see.my.homepage@gmail.com> wrote in message 
news:f37f6f75-62d4-4152-917e-d666d67f6cb7@googlegroups.com...
...
>> The gain is definition of the scope. C++ equivalent, which I would force
>> in each C++ programming guideline, would be:
>>
>>     {
>>        ... // Some code
>>        {
>>           int X;
>>           X = 1;
>>           ..
>>        }
>>        .. // Some code
>>     }
>
>This is useful if there is a reason to not have X in the second "Some code" 
>part.
>Especially if X is handling some resource. Otherwise there is no gain.
>Still (in both variants), C++ is more readable (the proportion of useful 
>code to
>the whole is higher).

There's a lot more to readability than just the "proportion of useful code". 
Indeed, it is rather important that delimiters be clear and not get lost in 
the code. That's the main fault of C family syntax, critical closings get 
lost (as it is a single skinny character, barely noticiable in most fonts); 
it's hard to tell the difference between that and a blank line in the above. 
(Remember that "some code" is likely to be a fairly large block with more {} 
of it's own.) And C-family code with } on separate lines is a rarity -- most 
of it is all smushed together (more like we'd write parens in Ada).

Ada strikes the critical balance between readability and consiseness. And it 
pretty much is the only language where the language designers truly cared 
about readability (not just in the syntax, but also in how the semantics 
impacts readability), and designed the syntax with readability in mind. Most 
language designers only pay a small amount of attention to readability and 
just design the syntax as a vessel for their semantics. And the results show 
it.

Indeed, the reason to choose Ada is the synergy between the syntax and 
semantics. An conglomeration would not work as well: Ada syntax and C++ 
semantics, or C++ syntax and Ada semantics would both be substantially less 
readable than Ada is.

Ada's syntax is not perfect, of course, but it is as close as has been 
designed to date (at least of the many languages I know about). Particularly 
the original Ada 83 part (I don't think we've always managed to add new 
features in the best possible way).

                                           Randy.




  parent reply	other threads:[~2019-06-04 22:28 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-02  0:48 Why .ads as well as .adb? John Perry
2019-06-02  5:42 ` J-P. Rosen
2019-06-02  6:39 ` Dmitry A. Kazakov
2019-06-03  7:35   ` Maciej Sobczak
2019-06-03  7:57     ` J-P. Rosen
2019-06-03 19:49       ` Keith Thompson
2019-06-04  8:03       ` Maciej Sobczak
2019-06-03  8:13     ` Dmitry A. Kazakov
2019-06-03 19:51       ` Keith Thompson
2019-06-03 20:18         ` Dmitry A. Kazakov
2019-06-04  8:24       ` Maciej Sobczak
2019-06-04  9:33         ` Dmitry A. Kazakov
2019-06-05  9:04           ` Maciej Sobczak
2019-06-05 12:48             ` Dmitry A. Kazakov
2019-06-05 17:12               ` G. B.
2019-06-05 18:50                 ` Optikos
2019-06-05 22:57                   ` Randy Brukardt
2019-06-04 22:28         ` Randy Brukardt [this message]
2019-06-05  8:28           ` Maciej Sobczak
2019-06-05  9:20             ` J-P. Rosen
2019-06-05  9:28               ` Paul Rubin
2019-06-05 10:11                 ` Niklas Holsti
2019-06-05 12:58                   ` Maciej Sobczak
2019-06-05 14:28                     ` Niklas Holsti
2019-06-06  7:34                       ` Maciej Sobczak
2019-06-06 19:51                         ` Keith Thompson
2019-06-06 20:27                           ` J-P. Rosen
2019-06-06 21:12                         ` Randy Brukardt
2019-06-06 21:17                         ` Randy Brukardt
2019-06-06 22:08                           ` Dennis Lee Bieber
2019-06-07  7:59                           ` Maciej Sobczak
2019-06-07 10:42                             ` alby.gamper
2019-06-07 16:59                               ` Dennis Lee Bieber
2019-06-07 14:10                             ` Brad Moore
2019-06-07 23:37                               ` Paul Rubin
2019-06-08  1:16                                 ` Brad Moore
2019-06-08  7:34                                   ` Simon Wright
2019-06-08 17:44                                 ` G.B.
2019-06-08 21:41                                 ` Keith Thompson
2019-06-09  0:40                                   ` Paul Rubin
2019-06-09 18:56                                     ` Keith Thompson
2019-06-09 20:35                                       ` John Perry
2019-06-09 21:15                                         ` Niklas Holsti
2019-06-09 22:37                                           ` John Perry
2019-06-10  9:01                                             ` Simon Wright
2019-06-10 13:15                                               ` Simon Wright
2019-06-10  9:22                                             ` Niklas Holsti
2019-06-09 21:37                                         ` Simon Wright
2019-06-09 22:40                                           ` John Perry
2019-06-10  9:07                                             ` Simon Wright
2019-06-09 21:46                                         ` Niklas Holsti
2019-06-10 17:11                                         ` Dennis Lee Bieber
2019-06-08  4:57                             ` Randy Brukardt
2019-06-08 23:57                               ` Optikos
2019-06-09  0:43                                 ` Paul Rubin
2019-06-10  8:17                               ` Maciej Sobczak
2019-06-10 19:10                                 ` G.B.
2019-06-10 22:07                                 ` Randy Brukardt
2019-06-11  0:32                                   ` Optikos
2019-06-11 15:39                                     ` Brad Moore
2019-06-11 16:14                                       ` John Perry
2019-06-11 16:46                                         ` Shark8
2019-06-11 19:29                                           ` John Perry
2019-06-14  6:12                                             ` Brad Moore
2019-06-14 21:51                                               ` John Perry
2019-06-14 16:29                                             ` djakoogler
2019-06-11 18:19                                         ` joakimds
2019-06-11 15:49                                   ` Jeffrey R. Carter
2019-06-07  7:36                       ` Niklas Holsti
2019-06-05 22:41                     ` Randy Brukardt
2019-06-06  3:34             ` Keith Thompson
2019-06-06  7:29               ` Maciej Sobczak
2019-06-06 15:30                 ` John Perry
2019-06-06 15:41                 ` Brad Moore
2019-06-06 19:42                 ` Keith Thompson
2019-06-06 16:37               ` Dennis Lee Bieber
2019-06-02  9:59 ` joakimds
2019-06-02 20:14 ` G.B.
2019-06-03 13:37 ` John Perry
2019-06-03 14:50   ` Niklas Holsti
2019-06-03 19:23     ` John Perry
2019-06-03 21:04       ` Niklas Holsti
2019-06-03 18:51   ` Lucretia
2019-06-03 19:32     ` John Perry
2019-06-03 17:00 ` Jeffrey R. Carter
2019-06-03 18:59   ` Lucretia
2019-06-03 19:29   ` John Perry
2019-06-03 20:00     ` Jeffrey R. Carter
replies disabled

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