From: Niklas Holsti <niklas.holsti@tidorum.invalid>
Subject: Re: Ada Annoyances
Date: Mon, 26 Jun 2017 23:20:01 +0300
Date: 2017-06-26T23:20:01+03:00 [thread overview]
Message-ID: <erd8jiFhsroU1@mid.individual.net> (raw)
In-Reply-To: <oiphqk$osf$1@franka.jacob-sparre.dk>
On 17-06-26 02:43 , Randy Brukardt wrote:
> "Niklas Holsti" <niklas.holsti@tidorum.invalid> wrote in message
> news:4921bd4e-3827-a7ac-7f2d-d60edbc514a3@tidorum.invalid...
>> On 17-06-23 20:49 , Randy Brukardt wrote:
>>> <raph.amiard@gmail.com> wrote in message
>>> news:be1619b4-2220-4287-8e67-1af32377d3f7@googlegroups.com...
>>> ...
>>>> Ada forcing tagged types on you to use certain features *is* a
>>>> problem, if only because certain Ada users are forbidden to
>>>> use tagged types altogether and thus are prevented to use a
>>>> lot of useful features.
>>>
>>> Stupid language usage rules are not the problem of the language design,
>>> they're a management problem.
>>
>> Sometimes usage rules are imposed by environment constraints, in
>> particular limited resources in smallish embedded systems, combined with
>> reliability requirements which mean that running out of resources at run
>> time must be avoided.
>>
>>> I can understand banning T'Class (thus banning
>>> dynamic dispatching) and banning controlled types (thus banning hidden
>>> calls
>>> that can be harder to analyze), but not banning tagged types themselves.
> ...
>
>> b) the non-static size of class-wide objects (of type T'Class), which
>> means that the compiler and/or the programmer must use dynamic allocation
>> (usually heap or secondary stack) for such objects.
> ...
>> Point (b) is more difficult and I know of no work-around that can be
>> applied at analysis time.
>
> Simply banning the use of T'Class has that effect.
At design and compilation time, yes, with consequent restrictions on the
design. But it is not a work-around that allows static analysis of
programs which do use T'Class.
> It's rather drastic, but
> it eliminates all of the dynamic features. Note that this was considered
> important enough that the standard (in Annex H) restriction No_Dispatch has
> this effect.
>
> You still get the other advantages of tagged types (extension, proper
> inheritance for private, equality, prefixed notation, etc.), and there is
> almost no runtime penalty (or analysis problem).
For the application I most have in mind (a SW component currently using
discriminated records to simulate tagged types) there would be no point
in using tagged types with the No_Dispatch restriction. The loss of
class-wide programming and class-wide data structures would remove
almost all benefits.
My hope is that a Maximum_Size aspect would let one manipulate
class-wide objects in the same "definite" way as is possible for variant
records with a default discriminant value. However, it would require
that the tag of an object could be changed by assignment; this is
perhaps too radical a change in the tagged object semantics.
--
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
. @ .
next prev parent reply other threads:[~2017-06-26 20:20 UTC|newest]
Thread overview: 116+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-21 1:12 Ada Annoyances pythoner6
2017-06-21 10:13 ` Lucretia
2017-06-23 15:27 ` raph.amiard
2017-06-23 17:49 ` Randy Brukardt
2017-06-23 19:21 ` Niklas Holsti
2017-06-24 4:02 ` Shark8
2017-06-24 19:55 ` Simon Wright
2017-06-24 20:56 ` Niklas Holsti
2017-06-25 23:43 ` Randy Brukardt
2017-06-26 20:20 ` Niklas Holsti [this message]
2017-06-26 21:47 ` Randy Brukardt
2017-06-26 22:23 ` Dmitry A. Kazakov
2017-06-29 19:00 ` Niklas Holsti
2017-06-29 21:29 ` Robert A Duff
2017-06-30 0:50 ` Randy Brukardt
2017-07-03 20:39 ` Robert A Duff
2017-07-04 19:52 ` Niklas Holsti
2017-07-04 19:32 ` Niklas Holsti
2017-06-30 0:47 ` Randy Brukardt
2017-06-30 18:45 ` Niklas Holsti
2017-06-30 20:06 ` Robert A Duff
2017-06-29 21:12 ` Robert A Duff
2017-07-04 19:30 ` Niklas Holsti
2017-07-05 20:03 ` Robert A Duff
2017-06-23 19:22 ` Niklas Holsti
2017-06-30 15:02 ` Norman Worth
2017-06-30 23:49 ` pythoner6
2017-07-03 0:04 ` Randy Brukardt
2017-07-03 17:47 ` Jere
2017-07-03 19:43 ` Dmitry A. Kazakov
2017-07-04 2:18 ` Randy Brukardt
2017-12-17 13:47 ` Prefixed notation for non tagged types Jere
2017-12-17 15:06 ` Simon Wright
2017-12-17 15:33 ` Dmitry A. Kazakov
2017-12-18 22:31 ` Randy Brukardt
2017-12-19 0:40 ` Jere
2017-12-19 23:04 ` Randy Brukardt
2017-12-20 12:33 ` Robert Eachus
2017-06-21 11:58 ` Ada Annoyances joakimds
2017-06-21 12:29 ` Pascal Obry
2017-06-21 14:52 ` pythoner6
2017-06-21 16:11 ` J-P. Rosen
2017-06-21 16:12 ` Dmitry A. Kazakov
2017-06-21 22:45 ` pythoner6
2017-06-22 7:29 ` Dmitry A. Kazakov
2017-06-22 10:29 ` pythoner6
2017-06-22 11:04 ` Egil H H
2017-06-22 13:30 ` Dmitry A. Kazakov
2017-06-22 19:22 ` Niklas Holsti
2017-06-22 21:52 ` Dmitry A. Kazakov
2017-06-23 9:33 ` AdaMagica
2017-06-23 10:25 ` Simon Wright
2017-06-23 1:00 ` pythoner6
2017-06-23 15:23 ` raph.amiard
2017-06-23 16:10 ` Dmitry A. Kazakov
2017-06-23 17:41 ` Randy Brukardt
2017-06-23 18:56 ` Maciej Sobczak
2017-06-23 22:18 ` pythoner6
2017-06-24 8:05 ` Dmitry A. Kazakov
2017-06-24 8:35 ` Maciej Sobczak
2017-06-24 9:07 ` Dmitry A. Kazakov
2017-06-24 20:50 ` Maciej Sobczak
2017-06-24 21:06 ` Dmitry A. Kazakov
2017-06-25 11:33 ` Maciej Sobczak
2017-06-25 14:32 ` Dmitry A. Kazakov
2017-06-25 20:50 ` Maciej Sobczak
2017-06-26 7:58 ` Dmitry A. Kazakov
2017-06-26 13:24 ` Maciej Sobczak
2017-06-26 16:38 ` Dmitry A. Kazakov
2017-06-26 20:42 ` Maciej Sobczak
2017-06-24 8:34 ` Maciej Sobczak
2017-06-24 13:06 ` pythoner6
2017-06-24 15:40 ` Dmitry A. Kazakov
2017-06-26 0:06 ` Randy Brukardt
2017-06-26 20:35 ` Maciej Sobczak
2017-06-26 21:40 ` Randy Brukardt
2017-06-27 7:23 ` Maciej Sobczak
2017-06-27 20:38 ` Randy Brukardt
2017-06-28 8:21 ` Dmitry A. Kazakov
2017-06-28 20:50 ` Randy Brukardt
2017-06-28 23:18 ` Nasser M. Abbasi
2017-06-29 7:27 ` Dmitry A. Kazakov
2017-06-29 16:24 ` Jeffrey R. Carter
2017-06-29 16:51 ` Nasser M. Abbasi
2017-07-04 23:40 ` Luke A. Guest
2017-07-05 5:29 ` J-P. Rosen
2017-07-05 13:49 ` Dennis Lee Bieber
2017-07-05 17:49 ` Jeffrey R. Carter
2017-06-29 21:46 ` darkestkhan
2017-06-29 7:15 ` Dmitry A. Kazakov
2017-06-30 0:42 ` Randy Brukardt
2017-06-30 7:36 ` Dmitry A. Kazakov
2017-06-28 13:07 ` Maciej Sobczak
2017-06-27 7:26 ` Dmitry A. Kazakov
2017-06-27 20:41 ` Randy Brukardt
2017-06-28 7:57 ` Dmitry A. Kazakov
2017-06-27 15:19 ` AdaMagica
2017-06-27 16:32 ` Dmitry A. Kazakov
2017-06-28 13:15 ` Maciej Sobczak
2017-06-28 14:05 ` AdaMagica
2017-06-29 21:17 ` Robert A Duff
2017-06-30 7:44 ` Dmitry A. Kazakov
2017-06-30 7:49 ` J-P. Rosen
2017-06-30 8:28 ` Dmitry A. Kazakov
2017-06-30 10:14 ` J-P. Rosen
2017-06-30 10:30 ` Dmitry A. Kazakov
2017-06-28 20:53 ` Randy Brukardt
2017-12-17 16:24 ` Mehdi Saada
2017-12-17 17:27 ` Dmitry A. Kazakov
2017-12-18 23:09 ` Randy Brukardt
2017-12-19 9:25 ` Dmitry A. Kazakov
2017-06-21 20:40 ` G.B.
2017-06-21 22:25 ` pythoner6
2017-06-26 11:01 ` Vincent
2017-06-26 11:15 ` Alejandro R. Mosteo
2017-06-26 16:35 ` Pascal Obry
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox