From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Task interface and entries with aliased parameters Date: Wed, 21 Oct 2015 22:19:54 +0200 Organization: cbb software GmbH Message-ID: References: <98fcf225-fdec-401c-80b3-321e2ac65f6b@googlegroups.com> <1e09jksdqcfyv.8f80k06gl5ye$.dlg@40tude.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: j6IQVb9uobzjXrpQLDU2rQ.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:28028 Date: 2015-10-21T22:19:54+02:00 List-Id: 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