comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: was Ada 83 in fact object oriented ?
Date: Fri, 25 Sep 2015 17:27:30 +0200
Date: 2015-09-25T17:27:30+02:00	[thread overview]
Message-ID: <13jhsj0z4v8x6.9ht8sobkxy9a$.dlg@40tude.net> (raw)
In-Reply-To: mu3ffk$s1c$1@dont-email.me

On Fri, 25 Sep 2015 14:44:24 +0200, J-P. Rosen wrote:

> Le 25/09/2015 14:17, Dmitry A. Kazakov a écrit :

>> I'd say classification is a way of creating reusable and safer code.
>> Reusability and safety comes from compiler-assisted code adjustments and
>> sematic checks, which are not 100%, but still 100% more than with
>> traditional cut'n'paste approach. Generics too, are all about classes and
>> serve same purpose of reuse. Though generic classes are inferior because
>> may have no objects.
>> 
>> Classes are better engineering because they encourage the programmer to do
>> up-front design of types, semantics of their operations and the properties
>> shared by all instances, which eliminates a lot of ad hocery, at least in
>> theory.
> I see nothing in what you say that implies classification (although I
> agree it relates to object orientation).

Classification is implied because sets of types are involved. Class is a
set of types, or a category in mathematics.
 
>> Without classes reuse is limited to subprograms operating single type. You
>> can reuse "+" for different Integer values, but not for other additive
>> objects.
>> 
> Definitely not. You reuse all your components a lot!

"+" is a component? How could you reuse it without breaking types?

The point is that it is a different level of reuse. A subprogram defined on
the type T can be reused for the set of values of T. A primitive operation
of T can be reused for all values of all types from T'Class.

> This view comes
> from the idea that to develop new software, you modify existing
> components. Inheritance makes it easy to develop new modules where you
> change only the parts that are different from the original ones.

Yes.

> With composition, you have ready-to-use software components. You make a
> new objects by assembling them in a different way.

Are components here packages? subprograms? You cannot reuse them for
something different they were designed. Composition changes or adds
nothing.

> To make a comparison: imagine you need a 105KOhms resistor. With
> inheritance, you take an existing 100KOhms resistor, and make a little
> scratch in it to adjust the resistance. With composition, you take a
> 100Kohms resistor, a 5Kohms resistor, put them serial. Both approaches
> are different kinds of reuse.

But composition does not work this way. If you put two integers into a
record you don't get another numeric type. For making resistors working the
way you described you need a class Resistor, instances of, an operation
that connects two resistors and produces a new resistor. Composition is
exclusively about creating built-in container types. I see no user code
reuse at all. The compiler reuses its code, that's clear.

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


  reply	other threads:[~2015-09-25 15:27 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-24 22:23 was Ada 83 in fact object oriented ? halfmaddad
2015-09-24 23:47 ` Jeffrey R. Carter
2015-09-25  2:30   ` halfmaddad
2015-09-25  8:11   ` Dmitry A. Kazakov
2015-09-25  8:30     ` J-P. Rosen
2015-09-25  8:47       ` Dmitry A. Kazakov
2015-09-25  8:03 ` Dmitry A. Kazakov
2015-09-25  8:14 ` J-P. Rosen
2015-09-25  8:43   ` Dmitry A. Kazakov
2015-09-25 11:04     ` J-P. Rosen
2015-09-25 12:17       ` Dmitry A. Kazakov
2015-09-25 12:44         ` J-P. Rosen
2015-09-25 15:27           ` Dmitry A. Kazakov [this message]
2015-09-25 12:44   ` halfmaddad
2015-09-25 16:24   ` Pascal Obry
2015-09-25 20:32   ` Jeffrey R. Carter
2015-10-05 12:27     ` vincent.diemunsch
2015-10-01 13:46 ` Paul Colin de Gloucester
2015-10-05 12:12   ` Vincent
2015-10-05 18:28     ` Jeffrey R. Carter
replies disabled

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