From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Hiding the value of Constants
Date: Tue, 7 Jul 2009 21:53:48 +0200
Date: 2009-07-07T21:53:47+02:00 [thread overview]
Message-ID: <1qye1tloa3y6i$.1x63ituluw0g4$.dlg@40tude.net> (raw)
In-Reply-To: de5c089b-f113-4404-8c6a-fee5bca8291c@m7g2000prd.googlegroups.com
On Tue, 7 Jul 2009 12:05:40 -0700 (PDT), Adam Beneschan wrote:
> On Jul 7, 11:48�am, "Dmitry A. Kazakov" <mail...@dmitry-kazakov.de>
> wrote:
>> On Tue, 7 Jul 2009 08:51:35 -0700 (PDT), Adam Beneschan wrote:
>>> I believe the reason enumeration literals are actually functions is so
>>> that you can use the same enumeration literal in more than one
>>> enumeration type and not have to worry about name conflicts.
>>
>> It is a strange explanation to me. There is no obvious reason why rules
>> about overloading named objects should be different for functions. The
>> effect is same, so the syntactic form should be same.
>>
>>> The
>>> overloading rules will allow the compiler to figure out which one is
>>> meant. �There are additional bonuses, such as being able to use an
>>> enumeration literal as the actual for a generic instantiation that
>>> expects a function. �How useful that is in practice, I don't know.
>>
>> It is indeed useful, because sometimes it is impossible to declare a ting
>> as an initialized constant. In such cases making it a function gives the
>> desired effect.
>>
>> [...]
>>
>>> If you mean that you'd like
>>> constants to be treated like static functions, so that you can
>>> overload them:
>>
>>> � � Max : constant Integer := 15;
>>> � � Max : constant Float := 15.0;
>>
>>> that's an intriguing idea.
>>
>> I think the idea is rather straightforward. But also
>>
>> � �X : Integer;
>> � �X : Float;
>
> I'm just guessing here, but I think a big potential problem would be
> if objects of the same name were declared in different scopes. If a
> nested subroutine has a local variable
>
> X : Integer;
>
> and the body says
>
> X := False;
>
> the compiler will complain. But if the outer subroutine has its own
> local variable X of type Boolean, the compiler wouldn't catch this.
>
> I realize that subprogram overloading can sometimes lead to the same
> kinds of situations where the compiler doesn't catch an error because
> you used the wrong parameter type, for example; and since subprograms
> can be declared implicitly, when a type is derived e.g., it might be
> hard to track down problems like that. I suppose that the question
> is, what's the risk/benefit ratio in each case. It could be that the
> benefits of having overloaded subprograms available outweighs the
> problems (confusion and failure to catch some errors at compile time)
> of making subprograms in an outer scope visible, while in the case of
> variables the problems outweigh the potential benefits (especially if
> nobody would really *want* to declare two variables with the same name
> and have them both visible). Yes, that makes things inconsistent,
> which I know isn't going to please people who like to look at the
> world through theoretical eyes. Oh, well.
Yes, but. I remember how it was programmed in FORTRAN - very few
subprograms, a lot of variables declared in. The programming style has
dramatically changed since then. Ada 2005 is a very different language. How
many variables are visible in a scope of a normal Ada program? 3-5, maybe
10 counting formal parameters. How many subprograms? Hundreds? Thousands?
Is the issue of hiding variables really actual?
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2009-07-07 19:53 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-07 8:48 Hiding the value of Constants Rick
2009-07-07 8:54 ` xavier grave
2009-07-07 8:58 ` AdaMagica
2009-07-07 9:41 ` Georg Bauhaus
2009-07-07 10:41 ` Hibou57 (Yannick Duchêne)
2009-07-07 15:51 ` Adam Beneschan
2009-07-07 16:26 ` Hibou57 (Yannick Duchêne)
2009-07-07 18:48 ` Dmitry A. Kazakov
2009-07-07 19:05 ` Adam Beneschan
2009-07-07 19:53 ` Dmitry A. Kazakov [this message]
2009-07-07 20:28 ` Adam Beneschan
2009-07-07 20:57 ` Dmitry A. Kazakov
2009-07-08 10:25 ` Georg Bauhaus
2009-07-08 12:20 ` Dmitry A. Kazakov
2009-07-09 23:04 ` anon
2009-07-10 6:37 ` AdaMagica
2009-07-11 19:06 ` anon
2009-07-11 19:26 ` Georg Bauhaus
2009-07-11 21:53 ` anon
2009-07-11 22:03 ` Albrecht Käfer
2009-07-11 22:15 ` Ed Falis
2009-07-15 9:30 ` anon
2009-07-11 23:31 ` Egil
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox