comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Imitation is the sincerest form of flattery
Date: Sat, 22 Mar 2003 10:04:58 +0100
Date: 2003-03-22T10:04:58+01:00	[thread overview]
Message-ID: <b5h8se$2a6gme$1@ID-77047.news.dfncis.de> (raw)
In-Reply-To: b5fuv4$dao$1@a1-hrz.uni-duisburg.de

Georg Bauhaus wrote:

> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
> :>package P is
> :>
> :>   type Unbounded_String (<>) is private;
> :>
> :>private
> :>
> :>   type Unbounded_String is
> :>     array (Positive range <>) of Character;
> :>
> :>end P;
> : 
> : This would be a private type implemented by an array, but not an array
> : implemented by some other type.
> 
> Where will this leed coders and readers? If I understand correctly,
> what you want is an option to have objects with array access (attributes
> etc.) that need not be arrays, privately. The same for other "ADTs"
> that are provided by the language. That is, an option to override the
> compilers regular job?

When it is necessary. For example:

   type Handle is private access Object;
private :
   type Handle is record ...; -- A fat smart pointer implementation

With full ADT supported, the compiler might become even more lightweighted, 
because many things could be then moved to libraries. At least when one 
sees the invasion of gemetrically exploding Wide**N x {Unbounded | Bounded 
| Fixed} Strings...

> I'd prefer considering a rule that said, 'No arrays at all, please,
> in specs!' :-)

Well, the number of predefined interfaces (ADT) can be reduced. However, an 
array thing is a very fundamental concept which has its place. Array in 
specification should only mean that you can index, get slice, have 
aggregates, get bounds. String is definitely an array.

> In Eiffel, the basic types can be extended, and you can have
> a sparse matrix derived from an ARRAY2, if you want to provide
> your own implementation details, I think.

Yes, this is IMO a good approach, as opposed to C++'s riddle game: I wrote 
something, go figure out where it might fit.

However "extension" is a wrong word. Implementation of an interface is not 
an "extension". The language may have a sort of universal array type. The 
predefined array types and user-defined ones have to be derived from it and 
then cloned (by "type X is new Y;"):

   type My_Array is array ...;

a short cut for

   type <anonymous> is new Universal_Array with ...;
   type My_Array is new <anonymous>;

> If, for a moment, you do not insist on arrays being suitable ADTs
> for public access in specs, you can do that in Ada too, of course.
> (With tagged types or with formal generics describing the "array like"
> interface, which is not possible in Eiffel other than using FUNCTION
> types(?), afaics.)

If arrays are not suitable for specifications, then why the language has 
them? It is not a very good idea to have two different languages for 
specifications and implementation. At least because this separation is by 
no means absolute.

-- 
Regards,
Dmitry A. Kazakov
www.dmitry-kazakov.de



  reply	other threads:[~2003-03-22  9:04 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-03-14 17:22 Imitation is the sincerest form of flattery Robert C. Leif
2003-03-14 17:57 ` Warren W. Gay VE3WWG
2003-03-14 18:16 ` chris.danx
2003-03-14 18:17 ` Hyman Rosen
2003-03-15 14:18   ` Georg Bauhaus
2003-03-16  1:06     ` Hyman Rosen
2003-03-18 10:37       ` Georg Bauhaus
2003-03-18 15:34         ` Dmitry A. Kazakov
2003-03-19 11:12           ` Georg Bauhaus
2003-03-20  8:42             ` Dmitry A. Kazakov
2003-03-20 14:27               ` Frank J. Lhota
2003-03-21  8:44                 ` Dmitry A. Kazakov
2003-03-21 17:16                   ` Pascal Obry
2003-03-22  9:05                     ` Dmitry A. Kazakov
2003-03-22 14:11                       ` Pascal Obry
2003-03-22 23:12                         ` AG
2003-03-23  9:01                           ` Dmitry A. Kazakov
2003-03-23  8:51                         ` Dmitry A. Kazakov
2003-03-24 16:52                           ` Hyman Rosen
2003-03-24 18:10                             ` Dmitry A. Kazakov
2003-03-24 18:33                               ` Hyman Rosen
2003-03-25  5:04                                 ` Amir Yantimirov
2003-03-25 19:55                                 ` Dmitry A. Kazakov
2003-03-25 20:22                                   ` Hyman Rosen
2003-03-26 13:02                                     ` Dmitry A. Kazakov
2003-03-26 15:06                                       ` Hyman Rosen
2003-03-26 16:21                                         ` Dmitry A. Kazakov
2003-03-26 17:00                                           ` Hyman Rosen
2003-03-26 18:21                                             ` Bill Findlay
2003-03-26 18:40                                               ` Hyman Rosen
2003-03-22 10:01                   ` Amir Yantimirov
2003-03-23  8:41                     ` Dmitry A. Kazakov
2003-03-24  4:53                       ` Amir Yantimirov
2003-03-24 18:10                         ` Dmitry A. Kazakov
2003-03-25  5:48                           ` Amir Yantimirov
2003-03-25 15:53                             ` Frank J. Lhota
2003-03-25 16:44                               ` Robert A Duff
2003-03-25 18:24                                 ` Frank J. Lhota
2003-03-25 20:06                                   ` Dmitry A. Kazakov
2003-03-27 19:45                                     ` Frank J. Lhota
2003-03-27 21:25                                       ` Pascal Obry
2003-03-28 13:34                                       ` Dmitry A. Kazakov
2003-04-01 14:38                                         ` Frank J. Lhota
2003-04-02  7:37                                           ` Dmitry A. Kazakov
2003-03-26  7:48                                 ` Amir Yantimirov
2003-03-26 13:35                                   ` Dmitry A. Kazakov
2003-03-26  7:32                               ` Amir Yantimirov
2003-03-20 23:28               ` Matthew Heaney
2003-03-21  8:49                 ` Dmitry A. Kazakov
2003-03-21 21:07                   ` Georg Bauhaus
2003-03-22  9:04                     ` Dmitry A. Kazakov [this message]
2003-03-22 10:05                       ` AG
2003-03-22 15:25                         ` Georg Bauhaus
2003-03-22 19:27                           ` AG
2003-03-22 21:45                             ` Vinzent Hoefler
2003-03-22 22:28                               ` AG
2003-03-23 23:47                     ` Robert A Duff
2003-03-28 16:34                       ` Georg Bauhaus
2003-03-18 15:58         ` Hyman Rosen
2003-03-19 11:05           ` Georg Bauhaus
2003-03-23 11:31       ` Florian Weimer
2003-03-23 23:39         ` Hyman Rosen
2003-03-15 12:52 ` Florian Weimer
replies disabled

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