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
next prev parent 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