comp.lang.ada
 help / color / mirror / Atom feed
From: Dmitry A. Kazakov <mailbox@dmitry-kazakov.de>
Subject: Re: XML DOM Binding for Ada 95 - matter of style
Date: Wed, 06 Aug 2003 11:03:22 +0200
Date: 2003-08-06T11:03:22+02:00	[thread overview]
Message-ID: <egd1jvc6pe888e4ug683tis6a5q5ua12ml@4ax.com> (raw)
In-Reply-To: bgoboh$pae$1@a1-hrz.uni-duisburg.de

On Tue, 5 Aug 2003 13:34:09 +0000 (UTC), Georg Bauhaus
<sb463ba@d2-hrz.uni-duisburg.de> wrote:

>Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
>: Isn't signature just another word for interface? Does not a set of
>: subroutines with compatible signatures constitute an interface for
>: some abstract/real type? One could long for a better way to describe
>: and manage interfaces, but there is no real alternative to them.
>
>You don't need to know about them during the design process,

Really?

>but you can construct "signature instances" like so:
>
>generic
>  type X is private;
>  function count(thing: X) return Natural;
>  procedure stretch(thing: in out X);
>...
>
>and then instantiate "..." with whatever actuals seem fit.
>This doesn't require that the provider of the units from which
>X, count, etc. are taken, has to know beforehand that his/her types,
>functions, or whatever will be used this way.

It is an illusion of freedom. In fact, from the specification above,
it is clear that X is private, i.e. has a default constructor, a copy
constructor, an assignment, count, stretch. So it is pretty much said
about possible X, and it is in fact an *interface*. Then when you
instantiate, the actual type is checked against that interface. Now,
how it differs from interface inheritance, except from techical
details? It does not.

Keep in mind, that present implementations of inheritance are very
limited in many aspects. You cannot create supertypes, disallow
methods, have by-value semantics, have multiple dispatch etc. I do not
argue that things like STL can be implemented without templates. What
I am saying is that it will be possible in the future with advantages
of being:

- safer
- clearer
- far more checkable
- as efficient as macros in static cases
- working in dynamic cases (with some bounded memory/time penalty)

>Actually, you can pass operations of a tagged type as actuals.

Yes, this is a great disadvantage of generics. You have to explicitly
specify everything you need. Compare it with inheritance, you just
specify a base type. This is because Ada's generics try to pretend to
have some contract. C++ does not, it openly says that what you become
is your own business. BTW, C++ is consistent in its approach:

int Something;
   // Maybe it has enough range to keep our values, launch and enjoy!

template <class Element>void Sort ...;
   // Guess, what I have used here this week, "<=" or ">="?

>Can this be done with virtual member functions in C++?

You mean to pass a dispatching operation to a template?

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



  reply	other threads:[~2003-08-06  9:03 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-30 11:32 XML DOM Binding for Ada 95 - matter of style DENNY VRANDECIC
2003-07-30 12:33 ` Martin Dowie
2003-07-30 15:20   ` Denny Vrandecic
2003-07-30 16:33     ` Stephen Leake
2003-07-31 10:57       ` Marin David Condic
2003-07-31 11:27         ` Preben Randhol
2003-07-31 13:10           ` Matthew Heaney
2003-07-31 19:04             ` Simon Wright
2003-08-02 14:40               ` Matthew Heaney
2003-07-31 20:25             ` Randy Brukardt
2003-08-01 11:46           ` Marin David Condic
2003-08-02  3:40             ` Matthew Heaney
2003-08-02 12:08               ` Marin David Condic
2003-08-02 14:46                 ` Matthew Heaney
2003-08-02 21:25                   ` Ed Falis
2003-08-05 19:59                   ` Marin David Condic
2003-08-03 16:42                 ` Matthew Heaney
2003-08-04  8:04                   ` Dmitry A. Kazakov
2003-08-05  8:00                     ` Georg Bauhaus
2003-08-05 11:46                       ` Dmitry A. Kazakov
2003-08-05 13:34                         ` Georg Bauhaus
2003-08-06  9:03                           ` Dmitry A. Kazakov [this message]
2003-08-06 18:15                             ` signature like constructions (was: Re: XML DOM Binding for Ada 95 - matter of style) Georg Bauhaus
2003-08-07 10:12                               ` Dmitry A. Kazakov
2003-08-07 16:22                                 ` signature like constructions Georg Bauhaus
2003-08-08  8:31                                   ` Dmitry A. Kazakov
2003-08-08 10:12                                     ` Robert I. Eachus
2003-08-08 13:29                                       ` Dmitry A. Kazakov
2003-08-08 19:37                                         ` Robert I. Eachus
2003-08-09  0:58                                           ` Alexander Kopilovitch
2003-08-09  7:39                                             ` Robert I. Eachus
2003-08-10  1:30                                               ` Alexander Kopilovitch
2003-08-10  4:11                                                 ` Robert I. Eachus
2003-08-11 10:25                                           ` Dmitry A. Kazakov
2003-08-08 23:44                                         ` Alexander Kopilovitch
2003-08-11  9:54                                           ` Dmitry A. Kazakov
2003-08-11 14:59                                             ` Alexander Kopilovitch
2003-08-12  9:54                                               ` Dmitry A. Kazakov
2003-08-13 22:28                                                 ` Alexander Kopilovitch
2003-08-09  8:32                                       ` Simon Wright
2003-08-09 15:32                                         ` Robert I. Eachus
2003-08-07 12:52                             ` XML DOM Binding for Ada 95 - matter of style Matthew Heaney
2003-08-07 15:03                               ` Dmitry A. Kazakov
2003-08-07 12:28                           ` Matthew Heaney
2003-08-05 20:05                   ` Marin David Condic
2003-07-30 16:34     ` Martin Dowie
2003-07-30 17:54 ` tmoran
replies disabled

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