comp.lang.ada
 help / color / mirror / Atom feed
From: Ted Dennison<dennison@telepath.com>
Subject: Re: Ada Idioms Progress Preview
Date: Tue, 14 Aug 2001 14:59:38 GMT
Date: 2001-08-14T14:59:38+00:00	[thread overview]
Message-ID: <u1be7.929$2u.26571@www.newsranger.com> (raw)
In-Reply-To: umq1ymf5byb.fsf@maestro.clustra.com

In article <umq1ymf5byb.fsf@maestro.clustra.com>, Ole-Hjalmar Kristensen says...
>
>Ted Dennison<dennison@telepath.com> writes:
>
>> It frees you from that problem in *some* cases. I find that most of the time 
>> I don't change the string, so I can declare it perfectly sized. When you do 
>> that, you are not storing the length explicitly, but rather implicitly in 
>> the array bounds. As others have mentioned, you also don't have to iterate 
..
>But you usually don't need to know the length of the string, precisely
>because it has a sentinel value at the end :-)

OK. Now you are just being perverse. :-)

My point was, which is better: Not having to know the length because it is in a
sentinel value at the end, or not having to know the length because it is in an
attribute? Considering that the attribute can be read in one instruction
(sometimes, it will even be staticly available to the compiler), while the
sentinel must be laboriously searched for every time, I think the answer to this
question is quite clear.

>Perfectly-sized C string are no problems either:
>
>char x[] = "a perfect string";

True, they just do you no good. :-)   

>I was thinking of the case where you cannot statically allocate a
>perfectly sized string, which pops up whenever you have to get
>variable sized strings from somewhere, as you describe below.

Agreed. But its a *rare* case. Unfortunately, one of the places it pops up
regularly is in newbie code.

Also, I would not say that this issue "pops up whenever you have to get variable
size strings from somewhere". In intent, this statement is probably a tautology.
The only true "variable-sized" strings are those that you may need to modify
after creation for some reason. I find those quite rare, and in most cases
avoidable by simply creating new strings in which to store the modified version
of the old. 

I'd rather say that it pops when you are getting a string from some source and
the interface author (for whatever reason), didn't provide you a string-return
function interface. The other time it pops up is when you have to pass a string
upward or across scope boundries (it can't be localized to the scope in which
its length is decided), and the solution of doing a "new String'(watever)" is
undesirable for some reason. All other times you can do just fine by waiting to
declare the string until its length can be known. 

>Btw., I'm not saying that C strings are superior in general or trying
>to start a war, just that there are cases when using a sentinel value
>makes sense.

The only time I could see it making sense is when the only time you will ever
need to know a length is for terminating looping string operations. Even then,
the only advantage you have is that the length only needed one byte for its
encoding, rather than a full machine word. But even that slim advantage relies
on Ada's 'Range being dynamic, which is not always the case. In *every* other
case, it is an inferior solution.

---
T.E.D.    homepage   - http://www.telepath.com/dennison/Ted/TED.html
          home email - mailto:dennison@telepath.com



  reply	other threads:[~2001-08-14 14:59 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-08-03  4:16 Ada Idioms Progress Preview James Rogers
2001-08-03 19:45 ` Robert Dewar
2001-08-03 22:02   ` James Rogers
2001-08-06 22:33   ` Stanley R. Allen
2001-08-07  2:45     ` tmoran
2001-08-07 12:15       ` Larry Kilgallen
2001-08-07 13:26         ` Philip Anderson
2001-08-08  2:23         ` Robert Dewar
2001-08-08  5:58           ` Ehud Lamm
2001-08-08  2:19       ` Robert Dewar
2001-08-08 15:13         ` Ted Dennison
2001-08-08 18:03           ` tmoran
2001-08-09 20:36           ` Florian Weimer
2001-08-10 21:02         ` Jay Nabonne
2001-08-10 21:51           ` Larry Kilgallen
2001-08-13 14:19             ` Ted Dennison
2001-08-13 14:05           ` Ted Dennison
2001-08-13 14:19             ` Marin David Condic
2001-08-13 15:47             ` Ole-Hjalmar Kristensen
2001-08-13 16:22               ` Marin David Condic
2001-08-13 18:48               ` Larry Kilgallen
2001-08-14  7:05                 ` Ole-Hjalmar Kristensen
2001-08-13 20:20               ` James Rogers
2001-08-14  1:09                 ` Warren W. Gay VE3WWG
2001-08-14  6:15                   ` James Rogers
2001-08-14 14:03                     ` Warren W. Gay VE3WWG
2001-08-21  5:54                   ` C strings, was " David Thompson
2001-08-16 18:42                 ` Jay Nabonne
2001-08-17  1:25                   ` Robert Dewar
2001-08-13 21:47               ` Ted Dennison
2001-08-14  7:37                 ` Ole-Hjalmar Kristensen
2001-08-14 14:59                   ` Ted Dennison [this message]
2001-08-14 13:22                 ` Marin David Condic
2001-08-14 15:12                   ` Ted Dennison
2001-08-14 15:33                     ` Marin David Condic
2001-08-14  8:49               ` Lutz Donnerhacke
2001-08-14  9:38                 ` Ole-Hjalmar Kristensen
2001-08-14  9:54                   ` Lutz Donnerhacke
2001-08-14 14:51                     ` James Rogers
2001-08-14 16:44                   ` Darren New
2001-08-14  1:39             ` Slicing ( Ada Idioms Progress Preview ) Warren W. Gay VE3WWG
replies disabled

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