comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Implicit dereferences rational question
Date: Wed, 21 May 2014 09:36:10 +0200
Date: 2014-05-21T09:36:10+02:00	[thread overview]
Message-ID: <1kghhevnfzyx4$.1juie06nqyink.dlg@40tude.net> (raw)
In-Reply-To: llgh9h$8at$1@loke.gir.dk

On Tue, 20 May 2014 16:26:08 -0500, Randy Brukardt wrote:

> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message 
> news:1pkkrdwu7lh6y.7cjyncdfw33e.dlg@40tude.net...
>> On Mon, 19 May 2014 16:51:56 -0500, Randy Brukardt wrote:
>>
>>> "Victor Porton" <porton@narod.ru> wrote in message
>>> news:llb1aa$gth$1@speranza.aioe.org...
>>>> Robert A Duff wrote:
>>>>> Victor Porton <porton@narod.ru> writes:
>>>>>
>>>>>> Why implicit dereferences use only access discriminants, not arbitrary
>>>>>> access fields?
>>>>>
>>>>> It helps prevent dangling pointers.
>>>>
>>>> In which way limiting to discriminants may prevent dangling pointers?
>>>
>>> Discriminants have a lengthy set of accessibility rules, which turn out 
>>> to
>>> be exactly what's needed for limiting dangling pointers. In particular, 
>>> it's
>>> almost never the case that one can make a copy of an access discriminant,
>>> while that's easy for a "arbitrary access field".
>>
>> Except that dereference, be it implicit or explicit, does not create
>> pointers. Obviously, it eliminates a pointer, as the name suggests.
> 
> I suppose, but you have to have a pointer or something very similar to a 
> pointer if you want to be able to write to it.

Actually not. Most pointers and pointer-like objects are initialized once
and never change.

But this still has nothing to do with implicit dereference, or more
precisely with delegation of operations through composition with X.all.

> And that's the key feature 
> here: that one can use these as variables as well as constants. It didn't 
> make much sense to invent a new, almost pointer construct just for this 
> purpose when we already had one with the correct semantics.

Of course it does. So many projects and practically all bindings require
smart pointers, handles and other user-defined referential objects in some
or other form.

It is about language design principles. Programmers want to control the
semantics of referential types. Ada tried to enforce a certain semantics on
them in the ugly form of incomprehensible accessibility rules.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


      reply	other threads:[~2014-05-21  7:36 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-18 15:24 Implicit dereferences rational question Victor Porton
2014-05-18 17:08 ` Robert A Duff
2014-05-18 19:22   ` Victor Porton
2014-05-19 21:51     ` Randy Brukardt
2014-05-19 22:44       ` Robert A Duff
2014-05-20  7:29       ` Dmitry A. Kazakov
2014-05-20 21:26         ` Randy Brukardt
2014-05-21  7:36           ` Dmitry A. Kazakov [this message]
replies disabled

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