comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Task interface and entries with aliased parameters
Date: Wed, 21 Oct 2015 22:19:54 +0200
Date: 2015-10-21T22:19:54+02:00	[thread overview]
Message-ID: <jnaq5h1cdtqz.1nkb01lsqjcvz.dlg@40tude.net> (raw)
In-Reply-To: d3895094-825e-4263-8f9b-cc0d1a06f015@googlegroups.com

On Wed, 21 Oct 2015 12:45:58 -0700 (PDT), Hadrien Grasland wrote:

>> He possibly meant Java interfaces as opposed to existing Ada 95 abstract
>> types. Ada 95 abstract type did everything Java interface do and more.
>> 
>> Interface as a separate type is indeed worthless. Interface as properties
>> of a type, a package, a subroutine is more than useful. It is impossible to
>> program anything without the concept of the interface.
>> 
>> If Ada were a better language you would be able to strip the implementation
>> from any type:
>> 
>> Interface = Type - Implementation
> 
> I like the idea of interfaces as separate types because it solves all the
> problems of multiple inheritance,

There is no problem with MI, whatsoever. MI problems is an urban legend.

> and provides a very nice way to specify
> a shared interface to multiple objects and have the compiler enforce that
> shared interface as the objects are refactored, rewritten, etc.

Dangerous and useless. The [public] interface is everything declared
publicly. If something publicly declared does not belong to the interface,
the language is poorly designed and broken.

> Regarding the last point, would you mean having a type attribute like
> Type'Interface, that defines an interface composed of all of the type's
> primitive operations ?

There is no need in such attribute. The type already denotes its interface. 

What you need is a construct to inherit from a type dropping the
implementation or some parts of. Presently in Ada you always inherit both
the interface and the implementation. The later can be slightly altered by
overriding operations and/or extending the representation. This is a very
limited model unsuitable for scalar and by-value types.

> But if so, is it really reasonable to define an interface from an
> implementation?

You simply could not do that. Implementation is not interface, per
definition of. If a language does not support clear syntactic separation of
interface and implementation, it is a bad language. Ada does support it,
with some exceptions, though. So, you should always be able to see what is
interface and what is an implementation of.

> Shouldn't the interface be considered as a separate
> entity that is shared by multiple types?

For each interface there exists single type it belongs to. You cannot have
a type interface without the type. Ada's declaration of an interface is
just a type declaration.

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

  reply	other threads:[~2015-10-21 20:19 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-21  8:54 Task interface and entries with aliased parameters Hadrien Grasland
2015-10-21 15:52 ` AdaMagica
2015-10-21 17:01 ` Jeffrey R. Carter
2015-10-21 18:06   ` Hadrien Grasland
2015-10-21 19:21   ` Dmitry A. Kazakov
2015-10-21 19:45     ` Hadrien Grasland
2015-10-21 20:19       ` Dmitry A. Kazakov [this message]
2015-10-21 19:46     ` Jeffrey R. Carter
2015-10-21 19:59       ` Dmitry A. Kazakov
2015-10-28 17:48     ` Randy Brukardt
2015-10-28 19:34       ` Bob Duff
2015-10-28 22:23         ` Randy Brukardt
2015-10-28 19:47       ` Paul Rubin
2015-10-28 22:24         ` Randy Brukardt
2015-10-28 21:13       ` Dmitry A. Kazakov
2015-10-30 19:48       ` Eryndlia Mavourneen
replies disabled

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