comp.lang.ada
 help / color / mirror / Atom feed
From: Georg Bauhaus <rm.dash-bauhaus@futureapps.de>
Subject: Re: Should Inline be private in the private part of a package spec?
Date: Tue, 07 Aug 2012 11:33:21 +0200
Date: 2012-08-07T11:33:21+02:00	[thread overview]
Message-ID: <5020e0e1$0$6570$9b4e6d93@newsspool3.arcor-online.net> (raw)
In-Reply-To: <op.wim6mpwcka8ora@aspire.local>

On 07.08.12 01:09, Vasiliy Molostov wrote:
> Georg Bauhaus <rm.dash-bauhaus@futureapps.de> писал(а) в своём письме Tue, 07 Aug 2012 01:52:34 +0400:
>
>
>>> They will affect already compiled modules.
>>
>> That's not relevant to specifying subprograms in public parts
>> of a package spec. A subprogram spec is about how to write
>> correct calls of the public subprogram.
>
> BTW, I have menant the same - modules that have used this inlined subprogram and already compiled.
>
>>> As you might know Ada aimed to minimize recompilations.
>>
>> Quality of implementation issue. I think Bob Duff has also explained
>> a few times that incremental compilation might would be a better
>> choice if minimizing recompilations is a goal.
>
> ? I dont see your replica is related to recompilation and inlining.

Advances in compiler technology, or even varying the
compilation processes, should not find a way into
public parts of public packages made for re-use by others.

package Reusable is

   procedure Op (X : T)
      with Inline => True,
           Optimize => Time,
        GNAT_Eliminate => Possibly,
       Rational_Debug_Hook => Yes,
        SofCheck_Inspectable => X;

That's all relevant information in some hypothetical
specific setup, but it is terribly at odds with re-usable Ada.
These aspect are pragmatic, they are not relevant for re-use,
they are extrinsic to Op's meaning.

Notice the signal to noise ratio in LOC when comparing
the lines that inform about the meaning of Op and the
lines that inform about aspects relating to tools and
translation.

A better place would be Bob Duff's idea of a third
file also collecting the representation information.

> What are you about? Rook gambits are tied?

I can call X if I supply proper arguments to X.
Everything else is not normally relevant in order for
me to know the meaning of my program that calls X.

>> Inline can well be hidden here.
>
> The question was - WHY? And for what benefit?

For the benefit of the reader who is concerned with
what his program does when calling X, irrespective
of anything to do with translation, or quality of
the compiler, or distribution format of libraries.


> No, when I call inlined subprogram I can see that this is inlined and I can not use hardware breakpoint, I can not use address of such subprogram widely in my writings, and I can suppose that internal variables if they are shared across inlined copies can cause a jam with locals, and I can not use it as an interrupt handler. From other properties I can take more assumptions what can be inserted in my code.

These are aspects of optimization and debugging,
not aspect of the meaning of the program.
Why would I want to learn about your debugging preferences
when all I want to know is how to call your subprogram properly?

If I do want to know how to optimize, or how to link
some unfortunate library distribution, the necessary information
could be provided in its proper place, which I think is not
what the subprogram is generally about.

>> Writers' convenience usually is a sign of less than co-operative
>> software design, pardon the expression. The focus is on readers'
>> convenience.
>
> By that reader I mean not only human, but also a compiler, a tool for UML processing, and the rest. I think that your approach is entirely against cooperation. Sabotage.

Writing for the compiler is o.K. if tuning a specific
program. However, when writing public parts of packages
for use by others, your compilers and tools do not count.
Not at all. Not in Ada.

  
>> When modelling, pragmatic hints seem all the more irrelevant.
>> When a UML tool starts to dictate how package specifications
>> should be made, I start to worry a little.
>
> Seem for whom?

Seem irrelevant for the one who models: Note that modelling is
different from programming in that the model abstracts things
away that---by the strict definition of modelling---you do care
about when writing whole programs in a programming language,
but not in a modelling language. Otherwise, the two would be
the same.

I know that some want to write programs using graphical
languages. That's not Ada, then, and Ada's principles cannot
apply, otherwise everyone would be writing Ada, not be
manipulating UML diagrams.

> your words sound like stylist, and not a designer. Me dictate to my UML tool what to be made.
> So you should not be worry even a little, since it is not related to you.

If what you do is not related to anyone but you,
why do you comment on what should be added to
specifications of publicly visible subprograms
in packages written for others?


> I suppose as you pay - you dont write them. Probably your way - is to pay for all
> the program

No, I usually get to use modules written by others.
It is always time consuming and costly if an interface appears
to be influenced by the coding habits, or library specifics,
or compiler specific, or version numbers, or tools used,
things to be associated with the writer only.


> Buy ready to use thing - its much less nervous!

Wishful thinking. More than once I have been stopped
by aspects / pragmas that have nothing to do with the arguments
to use when calling a subprogram. For example,

pragma Linker_Options

written by a "cool, pragmatic writer" gets very much in
the way of using packages, all the more when you cannot change
its string argument, or even just comment the dreadful thing!
Pragmas/aspects like these should not be used in re-usable
software!

Ideally, Inline should be easily controllable outside
the source text proper. Again, maybe in a third file that also
has the representation information.

Then, both the supplier and the client of a package could
control aspects like inline that are not intrinsic to
a subprogram. The third file could be switched, everyone
is happy and subprogram specification are not littered
with aspects of specific translations.

> If you know what are you doing (and every contractor's requirement express such knowledge) - why not?

Because everyone-knows-everything and everyone-is-using-the-same-setup
is very un-Ada. It makes software less re-usable.


> This is too serious action to add a brick without approval. Have you tried it on railroads?

I write software, I don't mess with railroads.

Since pragma Inline does not---allusions to anecdotal evidence
not withstanding---change the meaning of a subprogram, adding it
does not change the meaning of the program that calls the subprogram.
Specifying inline is thus not different from switching to higher
optimization, or from upgrading the compiler.
Which is being done carefully (Q&A), but is being done.

>>> A good way is to use Inline as a configuration pragma,
>>
>> Since Inline applies to program units, that won't work.
>
> I have pointed out to pragma Eliminate.

Pragma Eliminate is GNAT specific.  How does this add to the
meaning of subprograms in terms of Ada? What is the best place of a
compiler specific pragma if the goal should be to write for readers who
want to understand how to call a subprogram? I say, the best place is
outside the source code proper.


> The question is still open: Why You have insist that convention is an optimisation?

As mentioned in another post, I have likened the convention
of an import to optimization in the following way:
It is simply not relevant to know the import status of
a subprogram in order to call it, just like it is not relevant
to know its optimization in order to call it.
The meaning does not change, pragmatic aspects will.

Hence, the place where others want to learn how to call a
subprogram is not the place for aspects that apply in very
specific circumstances only. They never affect the text
of the call statement.




  reply	other threads:[~2012-08-07  9:33 UTC|newest]

Thread overview: 183+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-03 13:30 Should Inline be private in the private part of a package spec? Georg Bauhaus
2012-08-03 14:34 ` Martin Krischik
2012-08-03 15:51 ` Adam Beneschan
2012-08-03 18:07   ` Robert A Duff
2012-08-06  3:09     ` Randy Brukardt
2012-08-06 14:33       ` Robert A Duff
2012-08-06 15:50         ` Vasiliy Molostov
2012-08-06 17:58           ` Georg Bauhaus
2012-08-06 21:01             ` Vasiliy Molostov
2012-08-06 21:52               ` Georg Bauhaus
2012-08-06 22:10                 ` Georg Bauhaus
2012-08-06 23:12                   ` Vasiliy Molostov
2012-08-07  8:29                     ` Georg Bauhaus
2012-08-09 21:44                       ` Randy Brukardt
2012-08-08  1:48                   ` Shark8
2012-08-08  7:38                     ` Simon Wright
2012-08-08  8:10                     ` Georg Bauhaus
2012-08-09 21:39                   ` Randy Brukardt
2012-08-10  1:49                     ` Britt
2012-08-10  3:10                       ` Shark8
2012-08-10  6:00                         ` Vasiliy Molostov
2012-08-10 16:34                           ` Shark8
2012-08-10 22:37                             ` Vasiliy Molostov
2012-08-11  3:44                               ` Shark8
2012-08-11  4:42                                 ` Vasiliy Molostov
2012-08-13 11:53                                 ` Jacob Sparre Andersen
2012-08-10  7:37                         ` Dmitry A. Kazakov
2012-08-10 16:45                           ` Shark8
2012-08-10 17:03                             ` Dmitry A. Kazakov
2012-08-10 21:35                               ` Shark8
2012-08-10 22:10                                 ` Dmitry A. Kazakov
2012-08-11  3:27                                   ` Shark8
2012-08-11  5:25                                     ` Dmitry A. Kazakov
2012-08-11  4:48                             ` Vasiliy Molostov
2012-08-11  5:12                               ` Shark8
2012-08-10 17:06                         ` Simon Wright
2012-08-11  0:46                       ` Randy Brukardt
2012-08-11  1:57                         ` Vasiliy Molostov
2012-08-13 22:16                           ` Randy Brukardt
2012-08-14  2:52                             ` Vasiliy Molostov
2012-08-14 14:44                               ` Shark8
2012-08-14 15:09                                 ` Dmitry A. Kazakov
2012-08-14 22:04                                   ` Randy Brukardt
2012-08-15  7:51                                     ` Dmitry A. Kazakov
2012-08-15 11:08                                       ` Georg Bauhaus
2012-08-15 11:55                                         ` Dmitry A. Kazakov
2012-08-15 15:49                                           ` Georg Bauhaus
2012-08-15 16:24                                             ` Dmitry A. Kazakov
2012-08-15 16:53                                               ` Georg Bauhaus
2012-08-15 18:53                                                 ` Dmitry A. Kazakov
2012-08-15 20:39                                                   ` Georg Bauhaus
2012-08-21 22:46                                                     ` Randy Brukardt
2012-08-22 12:49                                                       ` Georg Bauhaus
2012-08-22 13:10                                                         ` Vasiliy Molostov
2012-08-22 21:55                                                         ` Randy Brukardt
2012-08-23  7:56                                                           ` Georg Bauhaus
2012-08-23  9:00                                                             ` Georg Bauhaus
2012-08-24  4:22                                                             ` Randy Brukardt
2012-08-24 10:17                                                               ` Georg Bauhaus
2012-08-24 15:07                                                                 ` Vasiliy Molostov
2012-08-24 22:09                                                                 ` Randy Brukardt
2012-08-15 21:29                                                   ` Georg Bauhaus
2012-08-16  7:30                                                     ` Dmitry A. Kazakov
2012-08-16 11:18                                                       ` Georg Bauhaus
2012-08-16 12:13                                                         ` Vasiliy Molostov
2012-08-16 12:56                                                         ` Dmitry A. Kazakov
2012-08-16 18:31                                                           ` Georg Bauhaus
2012-08-16 19:58                                                             ` Dmitry A. Kazakov
2012-08-16 22:00                                                               ` Vasiliy Molostov
2012-08-17 18:41                                                               ` Georg Bauhaus
2012-08-18  6:24                                                                 ` Dmitry A. Kazakov
2012-08-18  8:05                                                                   ` Vasiliy Molostov
2012-08-18 21:02                                                                     ` Shark8
2012-08-18 21:52                                                                       ` Simon Wright
2012-08-19  1:34                                                                         ` Shark8
2012-08-19 13:03                                                                           ` Simon Wright
2012-08-18 23:33                                                                       ` Vasiliy Molostov
2012-08-20 13:51                                                                   ` Georg Bauhaus
2012-08-20 14:15                                                                     ` Dmitry A. Kazakov
2012-08-20 16:22                                                                       ` Georg Bauhaus
2012-08-20 18:42                                                                         ` Vasiliy Molostov
2012-08-20 19:28                                                                         ` Dmitry A. Kazakov
2012-08-20 20:27                                                                           ` Vasiliy Molostov
2012-08-21 11:49                                                                           ` Georg Bauhaus
2012-08-21 13:12                                                                             ` Dmitry A. Kazakov
2012-08-21 14:17                                                                               ` Georg Bauhaus
2012-08-21 15:06                                                                                 ` Dmitry A. Kazakov
2012-08-21 15:29                                                                                   ` Pascal Obry
2012-08-21 19:12                                                                                     ` Dmitry A. Kazakov
2012-08-21 16:18                                                                                   ` Georg Bauhaus
2012-08-21 19:18                                                                                     ` Dmitry A. Kazakov
2012-08-21 21:35                                                                                       ` Pascal Obry
2012-08-21 23:11                                                                                         ` Randy Brukardt
2012-08-21 23:37                                                                                           ` Vasiliy Molostov
2012-08-22 21:40                                                                                             ` Randy Brukardt
2012-08-21 23:54                                                                                         ` Shark8
2012-08-22  6:14                                                                                           ` Pascal Obry
2012-08-23  2:29                                                                                             ` Shark8
2012-08-22  7:32                                                                                         ` Dmitry A. Kazakov
2012-08-22 13:12                                                                                           ` Georg Bauhaus
2012-08-22 14:30                                                                                             ` Dmitry A. Kazakov
2012-08-22 16:48                                                                                               ` Georg Bauhaus
2012-08-22 17:44                                                                                                 ` Dmitry A. Kazakov
2012-08-22 19:59                                                                                                   ` Georg Bauhaus
2012-08-22 20:08                                                                                                     ` Dmitry A. Kazakov
2012-08-22 20:29                                                                                                       ` Georg Bauhaus
2012-08-23  7:06                                                                                                         ` Dmitry A. Kazakov
2012-08-23  8:08                                                                                                           ` Georg Bauhaus
2012-08-23  8:38                                                                                                             ` Dmitry A. Kazakov
2012-08-23  9:58                                                                                                               ` Georg Bauhaus
2012-08-23 10:27                                                                                                                 ` Dmitry A. Kazakov
2012-08-23 11:30                                                                                                                   ` Georg Bauhaus
2012-08-23 12:28                                                                                                                     ` Dmitry A. Kazakov
2012-08-23  0:12                                                                                                       ` Vasiliy Molostov
2012-08-24  4:40                                                                                                         ` Randy Brukardt
2012-08-24  7:37                                                                                                           ` Vasiliy Molostov
2012-08-24 10:03                                                                                                           ` Georg Bauhaus
2012-08-24 22:06                                                                                                             ` Randy Brukardt
2012-08-22 21:18                                                                                                   ` Georg Bauhaus
2012-08-23  7:23                                                                                                     ` Dmitry A. Kazakov
2012-08-23  8:56                                                                                                       ` Georg Bauhaus
2012-08-23 10:13                                                                                                         ` Dmitry A. Kazakov
2012-08-23 11:33                                                                                                           ` Georg Bauhaus
2012-08-23 12:45                                                                                                             ` Dmitry A. Kazakov
2012-08-23 13:31                                                                                                               ` Vasiliy Molostov
2012-08-23 17:42                                                                                                                 ` Georg Bauhaus
2012-08-23 17:41                                                                                                               ` Georg Bauhaus
2012-08-23 11:35                                                                                                           ` Georg Bauhaus
2012-08-23 11:39                                                                                                           ` Georg Bauhaus
2012-08-23 12:33                                                                                                             ` Dmitry A. Kazakov
2012-08-23 17:33                                                                                                               ` Georg Bauhaus
2012-08-24  4:48                                                                                                             ` Randy Brukardt
2012-08-24  9:56                                                                                                               ` Georg Bauhaus
2012-08-21 16:25                                                                                   ` Georg Bauhaus
2012-08-21 22:40                                             ` Randy Brukardt
2012-08-14 15:11                                 ` Georg Bauhaus
2012-08-14 20:30                                   ` Shark8
2012-08-15 11:47                                     ` Georg Bauhaus
2012-08-15 17:18                                       ` Shark8
2012-08-14 15:19                                 ` Vasiliy Molostov
2012-08-14 20:41                                   ` Shark8
2012-08-14 23:59                                     ` Vasiliy Molostov
2012-08-15  0:50                                       ` Shark8
2012-08-15  3:02                                         ` Vasiliy Molostov
2012-08-14 22:16                               ` Randy Brukardt
2012-08-14 23:55                                 ` Vasiliy Molostov
2012-08-15  6:35                                   ` Simon Wright
2012-08-21 22:31                                   ` Randy Brukardt
2012-08-22  0:15                                     ` Vasiliy Molostov
2012-08-22 22:08                                       ` Randy Brukardt
2012-08-23  0:00                                         ` Vasiliy Molostov
2012-08-23  7:02                                         ` Niklas Holsti
2012-08-24  4:37                                           ` Randy Brukardt
2012-08-13 12:03                         ` Project files (Was: Should Inline be private in the private part of a package spec?) Jacob Sparre Andersen
2012-08-13 22:12                           ` Randy Brukardt
2012-08-10  8:12                     ` Should Inline be private in the private part of a package spec? Georg Bauhaus
2012-08-06 23:09                 ` Vasiliy Molostov
2012-08-07  9:33                   ` Georg Bauhaus [this message]
2012-08-07 13:09                     ` Vasiliy Molostov
2012-08-07 13:41                       ` Georg Bauhaus
2012-08-07 14:06                         ` Vasiliy Molostov
2012-08-09 22:32                         ` Randy Brukardt
2012-08-07 13:45                     ` Vasiliy Molostov
2012-08-07 13:55                       ` Georg Bauhaus
2012-08-07 14:12                         ` Vasiliy Molostov
2012-08-09 21:56                     ` Randy Brukardt
2012-08-07  0:25                 ` Vasiliy Molostov
2012-08-07 10:01                 ` Simon Wright
2012-08-07 13:21                   ` Vasiliy Molostov
2012-08-07 17:28                     ` Simon Wright
2012-08-07 19:26                       ` Vasiliy Molostov
2012-08-07 13:34                   ` Vasiliy Molostov
2012-08-07 17:31                     ` Simon Wright
2012-08-07 13:48                   ` Georg Bauhaus
2012-08-07 17:47                     ` Simon Wright
2012-08-09 22:34                   ` Randy Brukardt
2012-08-10 14:26                     ` Simon Wright
2012-08-09 21:33                 ` Randy Brukardt
2012-08-09 22:18         ` Randy Brukardt
2012-08-09 22:29           ` Shark8
2012-08-10  0:12             ` Randy Brukardt
2012-08-12 21:35           ` Robert A Duff
2012-08-03 16:15 ` Dmitry A. Kazakov
replies disabled

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