comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Lower bounds of Strings
Date: Tue, 12 Jan 2021 02:12:33 -0600	[thread overview]
Message-ID: <rtjlli$l28$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: 26cac901-b901-4c4f-aba9-eab6cbd2a525n@googlegroups.com

"Shark8" <onewingedshark@gmail.com> wrote in message 
news:26cac901-b901-4c4f-aba9-eab6cbd2a525n@googlegroups.com...
On Friday, January 8, 2021 at 7:31:40 PM UTC-7, Randy Brukardt wrote:
...
> >Can you give some examples here?
> All of the super-null nonsense occurs because of slices, which slows down
> any code that uses them.
What do you mean "super-null" nonsense?

Any range that is null is treated as the same by Ada. Any null range where 
the bounds are more than 1 apart is known as a "super-null" range. For 
instance, one typically writes:

       N : String(1..0)

to define a null string object. But you can write *any* null range here:

      N2 : String(314 .. 25);

And it takes code to figure this out at runtime if either bound is nonstatic 
(which is usually the case with slices). And you still have to store the 
bounds (you can still ask for the bounds of N2, and one better get 314 and 
25, but the length is still zero). And N = N2, so compares are complicated 
(one has to check the length, but that's more expensive to figure out than 
just a subtract). You end up generating a lot of code to deal with a rather 
unlikely case.

One of the reasons for suggesting using the bounded vector as a model is all 
of this sort of stuff vanishes, as the lower bound never changes in the 
vector packages. Only the upper bound moves, which is what is needed the 
vast majority of the time.

Both the early Pascal compilers we used in the very early days of Janus/Ada, 
and Janus/Ada itself, used a form of bounded strings rather than the more 
complex Ada model. (The CS 701 language that we originally were tasked to 
implement used bounded strings, and we kept it on our early commercial 
compilers so we could concentrate on other functionality like packages and 
private types.) That was a lot easier to use than the Ada model, it was a 
huge adjustment to switch to the Ada form and it bloated the code as well.

                                   Randy.


  reply	other threads:[~2021-01-12  8:12 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-05 11:04 Lower bounds of Strings Stephen Davies
2021-01-05 11:57 ` Dmitry A. Kazakov
2021-01-05 12:32   ` Jeffrey R. Carter
2021-01-05 13:40     ` Dmitry A. Kazakov
2021-01-05 14:31       ` Stephen Davies
2021-01-05 17:24         ` Stephen Davies
2021-01-05 18:28           ` Jeffrey R. Carter
2021-01-05 21:02             ` Stephen Davies
2021-01-07 10:38               ` Stephen Davies
2021-01-07 21:39                 ` Randy Brukardt
2021-01-07 22:38                   ` Stephen Davies
2021-01-05 12:24 ` Luke A. Guest
2021-01-05 12:49 ` Simon Wright
2021-01-05 12:51 ` Jeffrey R. Carter
2021-01-06  3:08 ` Randy Brukardt
2021-01-06  9:13   ` Dmitry A. Kazakov
2021-01-07  0:17     ` Randy Brukardt
2021-01-07  9:57       ` Dmitry A. Kazakov
2021-01-07 22:03         ` Randy Brukardt
2021-01-08  9:04           ` Dmitry A. Kazakov
2021-01-08 17:23           ` Shark8
2021-01-08 20:19             ` Dmitry A. Kazakov
2021-01-09  2:18               ` Randy Brukardt
2021-01-09 10:53                 ` Dmitry A. Kazakov
2021-01-12  8:19                   ` Randy Brukardt
2021-01-12  9:37                     ` Dmitry A. Kazakov
2021-01-09  2:31             ` Randy Brukardt
2021-01-09 14:52               ` Why UTF-8 (was Re: Lower bounds of Strings) Jeffrey R. Carter
2021-01-09 18:08                 ` Dmitry A. Kazakov
2021-01-12  7:58                   ` Randy Brukardt
2021-01-11 21:35               ` Lower bounds of Strings Shark8
2021-01-12  8:12                 ` Randy Brukardt [this message]
2021-01-12 20:51                   ` Shark8
2021-01-12 22:56                     ` Randy Brukardt
2021-01-13 12:00                       ` Dmitry A. Kazakov
2021-01-13 13:27                         ` AdaMagica
2021-01-13 13:53                           ` Dmitry A. Kazakov
2021-01-13 14:08                   ` Jeffrey R. Carter
2021-01-14 11:38 ` AdaMagica
2021-01-14 12:27   ` Dmitry A. Kazakov
2021-01-14 13:31   ` AdaMagica
2021-01-14 14:02   ` Jeffrey R. Carter
2021-01-14 14:34     ` Dmitry A. Kazakov
2021-01-14 15:28       ` Shark8
2021-01-14 15:41         ` Dmitry A. Kazakov
2021-01-19 21:02           ` G.B.
2021-01-19 22:27             ` Dmitry A. Kazakov
2021-01-20 20:10               ` G.B.
2021-01-20 20:25                 ` Dmitry A. Kazakov
2021-01-15 10:24   ` Stephen Davies
2021-01-15 11:41     ` J-P. Rosen
2021-01-15 17:35       ` Stephen Davies
2021-01-15 19:36         ` Egil H H
2021-01-16 12:57           ` Stephen Davies
2021-01-17 14:10         ` Stephen Davies
2021-01-19  5:48           ` Randy Brukardt
2021-01-19  6:13         ` Gautier write-only address
2021-01-15 11:48     ` Jeffrey R. Carter
2021-01-15 13:34       ` Dmitry A. Kazakov
2021-01-15 13:56       ` Stephen Davies
2021-01-15 15:12         ` Jeffrey R. Carter
2021-01-15 17:22           ` Stephen Davies
2021-01-15 21:10             ` Jeffrey R. Carter
2021-01-15 14:00       ` Stephen Davies
2021-01-16  9:30     ` G.B.
2021-01-16 13:13       ` Stephen Davies
replies disabled

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