comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
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
Date: 2017-08-06T09:04:33+02:00	[thread overview]
Message-ID: <om6f25$i8l$1@gioia.aioe.org> (raw)
In-Reply-To: e8fcbf71-7432-4410-bae7-34943479bf81@googlegroups.com

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


  reply	other threads:[~2017-08-06  7:04 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-20  0:06 Musing on defining attributes and the ability to define an "abstract type X"-interface Shark8
2017-07-20  7:52 ` Dmitry A. Kazakov
2017-07-20 16:37   ` Shark8
2017-07-20 17:40     ` Dmitry A. Kazakov
2017-07-20 20:12     ` Jacob Sparre Andersen
2017-08-04  3:05       ` Shark8
2017-08-04  6:48         ` Simon Wright
2017-08-04  7:10         ` Dmitry A. Kazakov
2017-08-05  0:17         ` Randy Brukardt
2017-08-05  6:25           ` Dmitry A. Kazakov
2017-08-05 16:51           ` Shark8
2017-08-05 17:18             ` Dmitry A. Kazakov
2017-08-05 21:29               ` Shark8
2017-08-06  7:04                 ` Dmitry A. Kazakov [this message]
2017-08-07 23:06                 ` Randy Brukardt
2017-08-08 17:28                   ` Shark8
2017-08-09  1:12                     ` Randy Brukardt
2017-08-09 18:17                     ` G.B.
2017-08-07 23:12             ` Randy Brukardt
2017-08-08  8:10               ` Dmitry A. Kazakov
2017-08-09  0:44                 ` Randy Brukardt
2017-08-09  6:55                   ` Dmitry A. Kazakov
2017-08-09 23:22                     ` Randy Brukardt
2017-08-10  7:02                       ` Dmitry A. Kazakov
2017-08-11  0:40                         ` Randy Brukardt
replies disabled

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