Why Is Escaping Data Considered So Magical?
Roy Smith
roy at panix.com
Mon Jun 28 20:55:53 EDT 2010
In article <7xmxuffpxp.fsf at ruckus.brouhaha.com>,
Paul Rubin <no.email at nospam.invalid> wrote:
> Gregory Ewing <greg.ewing at canterbury.ac.nz> writes:
> > I don't think it was as stupid as that back when C was
> > designed. Every byte of memory was precious in those days,
> > and if you had, say, 10 bytes allocated for a string, you
> > wanted to be able to use all 10 of them for useful data.
>
> No I don't think so. Traditional C strings simply didn't carry length
> info except for the nul byte at the end. Most string functions expected
> the nul to be there. The nul byte convention (instead of having a
> header word with a length) arguably saved some space both by eliminating
> a multi-byte header and by allowing trailing substrings to be
> represented as pointers into a larger string. In retrospect it seems
> like a big error.
Null-terminated strings predate C. Various assembler languages had
ASCIIZ (or similar) directives long before that.
The nice thing about null-terminated strings is how portable they have
been over various word lengths. Life would have been truly inconvenient
if K&R had picked, say, a 16-bit length field, and then we needed to
bump that up to 32 bits in the 80's, and again to 64 bits in the 90's.
More information about the Python-list
mailing list