comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Re: Why .ads as well as .adb?
Date: Tue, 4 Jun 2019 01:24:11 -0700 (PDT)
Date: 2019-06-04T01:24:11-07:00	[thread overview]
Message-ID: <f37f6f75-62d4-4152-917e-d666d67f6cb7@googlegroups.com> (raw)
In-Reply-To: <qd2krk$pin$1@gioia.aioe.org>

> No. Specification describes a class of implementations. You cannot 
> deduce class from its single member.

So what exactly cannot be deduced? Please provide some challenging example.

> It is not possible as well. The language of specifications (to be 
> useful) must have statements non-existing in the language of 
> implementations.

Why not put those statements in the implementation file? The compiler should be smart enough to distinguish them.

> No. The right statement would be: I cannot write contract in the body.

Why? The text editor should not stop you and the compiler should figure out which is which.

> Contract and an implementation of are in two different languages with 
> two different domains. They cannot be spelt in a single language.

What is a single language? A set of keywords with grammar? I can invent the keywords and grammar to cover both needs. Heck, it was already invented, just write them in a single file.

Your arguments are self-contradictory anyway. What about the package declaration in the some declarative part within the implementation file? I can even declare a helper package in the subprogram scope (in its declarative part), so all arguments about the necessity to keep specs and implementation files separate, on the basis that they must be separate "languages", are pointless anyway. Ada already allows to mix everything together, so why pretending to be so pure? The purity is gone already.

> 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).

> Yes, why? There must be something contagious in #ifdef's, or maybe, it 
> just what C/C++ inherently is?

Or maybe this is just what you want it to be, so that Ada looks better?
The problem is - there is nothing stopping you using the same good programming principles and idioms. Especially with regard to physical code design (we have discussed that already (as most of the other things)).

> > In other words: for multiplatform development, C++ gives me 2 solutions and I can choose the one which is more beneficial in the given context. Ada offers only one. How is this better?
> 
> Choice is a burden.

Yet I know how to benefit from it. And I don't want to resign from it.

-- 
Maciej Sobczak * http://www.inspirel.com


  parent reply	other threads:[~2019-06-04  8:24 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 [this message]
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
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