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