comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Rational for not making cursor tagged in Containers
Date: Fri, 20 Apr 2007 12:39:13 +0200
Date: 2007-04-20T12:39:13+02:00	[thread overview]
Message-ID: <pioojxhb01th.lq5kuqqdsatm.dlg@40tude.net> (raw)
In-Reply-To: 1177066583.5876.30.camel@localhost.localdomain

On Fri, 20 Apr 2007 12:56:23 +0200, Georg Bauhaus wrote:

> On Fri, 2007-04-20 at 09:54 +0200, Dmitry A. Kazakov wrote:
> 
>> In a better language any type could be able implement record interface:
>> 
>>    type Foo is interface record  -- This not an implementation!
>>       Mumble : Integer;
>>    end record;
>> private
>>    type Foo is new Float; -- Implements the record interface
>>    function "Mumble" (X :  Foo) return Integer; -- Getter
>>    procedure "Mumble" (X : in out Foo; Value : Integer); -- Setter
> 
> C# and Eiffel do it this way; I'm almost sure there is a bunch of
> Lisp macros achieving the same. But I think approaching simple records
> like this will be a huge mistake in a language like Ada, for the
> following reason: When a user of your type see the above definition
> 
>    type Foo is interface record ...
> 
> it means that he or she will *have* to look at the implementation
> (or hope for extensive documentation): There is no
> way of knowing whether reading or writing a record component will
> just move some bits, or try to compute the first prime number of
> the 1969 lottery on the way.

And you claim to know it. Always? With all possible pragmas applied,
including Pack, as well as representation clauses like for X'Address use
...? As for me, I don't know it in 90% cases, and in 99% of these, I just
don't care. Ada is known a safe language (tm), which assumes not only safe
primitives but also a safe composition of.

BTW, Ada has private types from the day one.

> And, considering Controlled, forcing *all* types to be derived
> from this base suffers from the same effects for the same reason.

Because multiple-inheritance is *the* answer. You need not to force anybody
to anything if an interface (and an implementation of) can be added later.

There indeed exist very hard interfaces to add later, like the task
interface or the protected interface. But more things you have hard-wired
in the language, more complex it becomes for everybody, you, me, the
compiler vendor and the Pentium.

> Not every programming team consists of real or even wannabe
> language designers. But who else has even got a chance of knowing
> what they are doing to a larger program when implementing the
> concept of record?

Why they are allowed to implement a concept of task, but not one of getter
and setter? Where do you draw the line?

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



  reply	other threads:[~2007-04-20 10:39 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-19 16:05 Rational for not making cursor tagged in Containers Anh Vo
2007-04-19 18:25 ` Robert A Duff
2007-04-19 19:28   ` Anh Vo
2007-04-19 20:45     ` Robert A Duff
2007-04-19 21:43       ` Dmitry A. Kazakov
2007-04-19 23:59         ` Ray Blaak
2007-04-20  7:54           ` Dmitry A. Kazakov
2007-04-20 10:56             ` Georg Bauhaus
2007-04-20 10:39               ` Dmitry A. Kazakov [this message]
2007-04-20 14:42                 ` Georg Bauhaus
2007-04-20 14:45                   ` Georg Bauhaus
2007-04-20 15:13                   ` Dmitry A. Kazakov
2007-04-20 19:37                     ` Georg Bauhaus
2007-04-20 19:32                       ` Dmitry A. Kazakov
2007-04-20 20:59                         ` Robert A Duff
2007-04-20 22:14                           ` Dmitry A. Kazakov
2007-04-23 17:38                             ` Adam Beneschan
2007-04-23 19:18                               ` Dmitry A. Kazakov
2007-04-24  0:15                                 ` Adam Beneschan
2007-04-24 10:43                                   ` Dmitry A. Kazakov
2007-04-24 16:27                                     ` Adam Beneschan
2007-04-24 20:19                                       ` Dmitry A. Kazakov
2007-04-26  0:58                                         ` Adam Beneschan
2007-04-26  7:50                                           ` Dmitry A. Kazakov
2007-04-26  8:09                                             ` Markus E Leypold
2007-04-27  8:46                                               ` Dmitry A. Kazakov
2007-04-27 11:37                                                 ` Markus E Leypold
2007-04-28 17:35                                                   ` Dmitry A. Kazakov
2007-04-29  2:31                                                     ` Randy Brukardt
2007-04-29  8:45                                                       ` Dmitry A. Kazakov
2007-04-27 20:44                                               ` Robert A Duff
2007-04-26  8:33                                             ` Markus E Leypold
2007-04-26 11:09                                               ` Markus E Leypold
2007-04-20 19:55                       ` Randy Brukardt
2007-04-22  9:54                         ` Georg Bauhaus
2007-04-22 11:19                           ` Dmitry A. Kazakov
2007-04-20 20:44                       ` Robert A Duff
2007-04-21  5:38                         ` Randy Brukardt
2007-04-22  1:14                           ` Robert A Duff
2007-04-22  4:08                             ` Randy Brukardt
2007-04-20 20:11                     ` Randy Brukardt
2007-04-20 21:28                       ` Dmitry A. Kazakov
2007-04-21  5:33                         ` Randy Brukardt
2007-04-21  9:39                           ` Dmitry A. Kazakov
2007-04-22  4:28                             ` Randy Brukardt
2007-04-22  8:38                               ` Dmitry A. Kazakov
2007-04-23 23:26                                 ` Randy Brukardt
2007-04-24 10:43                                   ` Dmitry A. Kazakov
2007-04-24  8:58                                 ` Georg Bauhaus
2007-04-24 12:21                                   ` Dmitry A. Kazakov
2007-04-21  4:48                       ` unifying arrays and records (was Re: Rational for not making cursor tagged in Containers) Ray Blaak
2007-04-20 17:05             ` Rational for not making cursor tagged in Containers Ray Blaak
2007-04-20 18:46               ` Dmitry A. Kazakov
2007-04-20 18:52                 ` Ray Blaak
2007-04-20 19:54                   ` Robert A Duff
2007-04-20  1:18         ` Anh Vo
2007-04-20  7:53           ` Dmitry A. Kazakov
2007-04-20  9:26             ` Maciej Sobczak
2007-04-20 10:15               ` Dmitry A. Kazakov
2007-04-20 11:59           ` Jean-Pierre Rosen
2007-04-20 13:23             ` Anh Vo
2007-04-20 16:02               ` Jean-Pierre Rosen
2007-04-21  2:53                 ` Anh Vo
2007-04-20  3:03   ` Randy Brukardt
2007-04-20  2:53 ` Randy Brukardt
2007-04-20 16:08   ` Anh Vo
replies disabled

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