comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Ada vs Eiffel - Ada programmer approach
Date: Thu, 4 Jun 2009 11:19:12 +0200
Date: 2009-06-04T11:19:12+02:00	[thread overview]
Message-ID: <tcuavct1yd5u.1kh0wwd4dties$.dlg@40tude.net> (raw)
In-Reply-To: d39a5851-9e39-410f-9ec6-34787abcba3b@r37g2000yqd.googlegroups.com

On Thu, 4 Jun 2009 02:02:01 -0700 (PDT), Ludovic Brenta wrote:

> Yannick Duch�ne wrote on comp.lang.ada:
>> On 26 mai, 20:21, "Jeffrey R. Carter"
>>
>> <spam.jrcarter....@nospam.acm.org> wrote:
>>> I agree. I never create tagged types, except to obtain finalization. I think the
>>> widespread acceptance of programming by extension, even by People Who Should
>>> Know Better, represents the triumph of those who emphasize ease of writing over
>>> ease of reading.
>>
>> So how do you do extentions ?
>> Did you never need this ?
> 
> The question is not really "how do you do extension", but "why do you
> do extension".

In order to reuse the interface and some implementations of these
operations.

> In my experience, composition is usually a more correct
> choice.

It is not a choice because composition inherits to the record type
interface and provides an implementation of the interface (e.g. member
access, assignment of the record etc). In a more general case composition
inherits to the container interface.

So the question is why do you inherit to the container rather than to
number, task, file, employee etc?

> There are, of course, some cases where extension is good but
> my inheritance hierarchies are usually very shallow.

Extension /= inheritance. It is a case of inheritance.

There is nothing that could replace inheritance, because there is no way to
"invent" a new type out of nothing. Whatever type algebra operation you
take, it always uses some building blocks (the arguments) from which you
inherit the interface of the result. There is nothing really useful beyond
inheritance. Even if you use the minimal possible type-algebraic operation
in Ada:

   type T (<>) is limited private;

you still inherit a lot of things. For example attributes, like X'Address.

> For example, if you want some record type T to become controlled, you
> don't have to make extend Ada.Finalization.Controlled; you don't even
> have to make T tagged.

All types are "controlled" in Ada, in the sense that they are properly
finalized upon destruction.

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



  reply	other threads:[~2009-06-04  9:19 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-24  8:39 Ada vs Eiffel - Ada programmer approach Tomek Walkuski
2009-05-24 11:49 ` anon
2009-05-24 12:26   ` Georg Bauhaus
2009-05-24 12:17 ` Georg Bauhaus
2009-05-24 16:31 ` Pascal Obry
2009-05-25 16:32   ` Rugxulo
2009-05-26 13:37   ` Ludovic Brenta
2009-05-26 14:51     ` Dmitry A. Kazakov
2009-05-26 17:26       ` Georg Bauhaus
2009-05-26 17:39         ` Dmitry A. Kazakov
2009-05-26 17:59           ` Georg Bauhaus
2009-05-26 19:52             ` Dmitry A. Kazakov
2009-05-26 20:14               ` Pascal Obry
2009-05-26 20:25                 ` Pascal Obry
2009-05-26 21:28                 ` Dmitry A. Kazakov
2009-05-26 18:23       ` Jeffrey R. Carter
2009-05-26 15:07     ` Tim Rowe
2009-05-26 16:37       ` Georg Bauhaus
2009-05-28  8:37         ` Nicholas Paul Collin Gloucester
2009-06-01 16:22         ` Tim Rowe
2009-06-04  7:35       ` Hibou57 (Yannick Duchêne)
2009-06-04  9:46         ` Martin
2009-06-04 12:16           ` Hibou57 (Yannick Duchêne)
2009-06-04  9:56         ` Jean-Pierre Rosen
2009-06-16  6:58         ` ardjussi
2009-06-16 17:22           ` Jeffrey R. Carter
2009-05-26 18:21     ` Jeffrey R. Carter
2009-05-26 18:35       ` Dmitry A. Kazakov
2009-06-04  7:39       ` Hibou57 (Yannick Duchêne)
2009-06-04  9:02         ` Ludovic Brenta
2009-06-04  9:19           ` Dmitry A. Kazakov [this message]
2009-06-04 12:14             ` Hibou57 (Yannick Duchêne)
2009-06-04 14:14               ` Dmitry A. Kazakov
2009-06-04 16:45         ` Jeffrey R. Carter
2009-06-04  7:30     ` Hibou57 (Yannick Duchêne)
2009-06-04  7:55       ` Ludovic Brenta
2009-06-04  8:45         ` Georg Bauhaus
2009-06-04  9:03           ` Ludovic Brenta
2009-06-04 13:25         ` Robert A Duff
2009-06-04 13:39           ` Martin
2009-06-04 13:08             ` stefan-lucks
2009-06-08 12:41           ` Samuel Tardieu
2009-06-08 19:37             ` Robert A Duff
2009-06-08 22:52               ` Randy Brukardt
2009-06-09  7:39                 ` Dmitry A. Kazakov
2009-06-10  6:55               ` Hibou57 (Yannick Duchêne)
2009-06-10  6:58               ` Hibou57 (Yannick Duchêne)
2009-06-10 11:10                 ` Georg Bauhaus
2009-06-04  7:04   ` Hibou57 (Yannick Duchêne)
2009-06-04  6:04 ` Hibou57 (Yannick Duchêne)
2009-06-06 14:27   ` Marco
2009-06-06 15:37     ` Tomek Wałkuski
replies disabled

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