From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Extending a third party tagged type while adding finalization
Date: Tue, 5 Dec 2017 22:29:41 +0100
Date: 2017-12-05T22:29:41+01:00 [thread overview]
Message-ID: <p07343$1tst$1@gioia.aioe.org> (raw)
In-Reply-To: p071u9$30m$1@franka.jacob-sparre.dk
On 2017-12-05 22:09, Randy Brukardt wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:p04d5g$6jd$1@gioia.aioe.org...
>> On 2017-12-04 21:54, Randy Brukardt wrote:
>>
>>> The sort things that can't afford to be controlled are those that aren't
>>> really ADTs anyway (think coordinates of a windows).
>>
>> What? Window coordinates are a perfect example of ADT. There are lots of
>> quite specific operations defined on coordinates which are beyond normal
>> arithmetic: scaling, rotation, moving, relative to absolute conversions,
>> logical to physical conversions, coordinate systems, scalar and vector
>> products, coordinate translation ... the list is almost infinite.
>
> ADT = "abstract data type". And there is nothing "abstract" about
> coordinates, where you usually want to use an aggregate of X and Y values to
> create them. Just because the type isn't private doesn't mean that you can't
> have operations on them (Janus/Ada internally has essentially no private
> types, but there sure are a lot of operations :-).
I don't know your definition of ADT, but mine is in agreement with
Wikipedia:
"In computer science, an abstract data type (ADT) is a mathematical
model for data types, where a data type is defined by its behavior
(semantics) from the point of view of a user of the data, specifically
in terms of possible values, possible operations on data of this type,
and the behavior of these operations. This contrasts with data
structures, which are concrete representations of data, and are the
point of view of an implementer, not a user."
> The sorts of things that one doesn't want to make controlled also tend to be
> the sorts of things that one doesn't want to make private. Ergo, my advice
> above. As always, YMMV.
Initialization and finalization are properties of ADT only when these
are related to its behavior/semantics. The semantics of coordinates does
not require the implementation to provide any initialization or
finalization beyond default. That does not make it less ADT.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2017-12-05 21:29 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-22 12:43 Extending a third party tagged type while adding finalization Jere
2017-11-22 16:42 ` AdaMagica
2017-11-26 17:33 ` Jere
2017-11-26 18:15 ` Dmitry A. Kazakov
2017-11-26 19:31 ` Jere
2017-11-27 9:46 ` AdaMagica
2017-11-27 12:56 ` Jere
2017-11-27 15:00 ` AdaMagica
2017-11-27 16:38 ` Jere
2017-11-27 18:37 ` AdaMagica
2017-11-27 19:53 ` Jere
2017-11-28 11:48 ` AdaMagica
2017-12-03 2:22 ` Jere
2017-12-03 21:53 ` Robert Eachus
2017-12-04 7:58 ` Dmitry A. Kazakov
2017-12-04 14:59 ` Robert Eachus
2017-12-04 15:39 ` Dmitry A. Kazakov
2017-11-27 18:10 ` Shark8
2017-11-27 19:56 ` Jere
2017-11-28 1:55 ` Randy Brukardt
2017-12-03 2:47 ` Jere
2017-12-03 9:29 ` Dmitry A. Kazakov
2017-12-03 15:10 ` AdaMagica
2017-12-03 16:39 ` Dmitry A. Kazakov
2017-12-03 19:34 ` AdaMagica
2017-12-03 19:41 ` Dmitry A. Kazakov
2017-12-04 12:38 ` AdaMagica
2017-12-04 13:19 ` AdaMagica
2017-12-04 13:55 ` Dmitry A. Kazakov
2017-12-04 15:44 ` AdaMagica
2017-12-04 16:19 ` Dmitry A. Kazakov
2017-12-04 20:54 ` Randy Brukardt
2017-12-04 21:02 ` Dmitry A. Kazakov
2017-12-05 21:09 ` Randy Brukardt
2017-12-05 21:29 ` Dmitry A. Kazakov [this message]
2017-12-07 1:13 ` Randy Brukardt
2017-12-07 8:36 ` Dmitry A. Kazakov
2017-12-07 23:22 ` Randy Brukardt
2017-12-08 9:30 ` Dmitry A. Kazakov
2017-12-09 0:17 ` Randy Brukardt
2017-12-11 9:03 ` Dmitry A. Kazakov
2017-12-11 22:42 ` Randy Brukardt
2017-12-12 16:11 ` AdaMagica
2017-12-12 20:08 ` G. B.
2017-12-12 20:32 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox