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=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!news.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: Musing on defining attributes and the ability to define an "abstract type X"-interface. Date: Sun, 6 Aug 2017 09:04:33 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <9617c73b-e23e-405b-8544-4d17e7e3ad61@googlegroups.com> <28512bf1-0c2c-400f-a24f-cc7e0eb8a02d@googlegroups.com> <87h8y67trd.fsf@jacob-sparre.dk> <36a1a83d-f3d7-4e3c-827d-addeadc28ccc@googlegroups.com> NNTP-Posting-Host: MajGvm9MbNtGBKE7r8NgYA.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 X-Notice: Filtered by postfilter v. 0.8.2 Content-Language: en-US Xref: news.eternal-september.org comp.lang.ada:47623 Date: 2017-08-06T09:04:33+02:00 List-Id: On 2017-08-05 23:29, Shark8 wrote: > On Saturday, August 5, 2017 at 11:18:44 AM UTC-6, Dmitry A. Kazakov wrote: >> On 2017-08-05 18:51, Shark8 wrote: >> >>> This is about having an "abstract type", it's about getting at the >>> underlying interface (general-sense, not OOP-sense) >> First, it is the same sense. Second, Ada has abstract types (ADT is Ada 85). > > Why do you assert this? To make terms straight. Abstract type is abstracting values. What you (and I) want is abstract classes. > It's demonstrably not the case that it's OOP because, as you point > out, Ada 83 had the concepts w/o being an OOP language. Ada 83 was object-based. OOP is programming in terms of sets of types + having instances from all set (=> dynamic polymorphism). ADT is a user-defined singular type. OOP > ADT > As to the second point, ADT is Abstract Data Type -- we're obviously > *NOT* talking about data here so it doesn't apply... and even if it did, > you *still* would have to illustrate how and ADT provides the sort of > access/uniformity of interface being talked about. I didn't say abstract type would. >> The point is having hierarchies of types = classes. >> >> - Ada 85 had built-in classes. >> - Ada 95 added classes of tagged types with representations built by - >> record extension. >> - Ada 2005 added classes of siblings sharing null representation (Ada >> interfaces). > > And this proposal is about adding the ability to extend to the whole > language without having to depend on (or be restricted to) tagged types. You need tags in order to have class-wide instances and operations. Built-in classes, e.g. like in Ada 83 did not allowed this. Polymorphism induced by these classes was static and thus restricted to generics. You don't need to always have a tag inside a type-specific object, that is true. >> There is a whole world beyond these. > > Even within the Ada language there's more here. It reached its limits and falls apart due to lack of abstractness/generality/universality. I am not arguing with you. Surely Ada type system must be completely reworked in a way that the current type system would be expressed in terms of the new system. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de