Why is `scope` planned for deprecation?

via Digitalmars-d digitalmars-d at puremagic.com
Mon Nov 17 04:49:15 PST 2014


On Monday, 17 November 2014 at 12:36:49 UTC, Paulo  Pinto wrote:
> On Monday, 17 November 2014 at 11:43:45 UTC, Ola Fosheim 
> Grøstad wrote:
>> Remember that the alternative to zero-terminated strings at 
>> that time was to have 2 string types, one with a one byte 
>> length and one with a larger length. So I think C made the 
>> right choice for it's time, to have a single string type 
>> without a length.
>
> Black hat hackers, virus and security tools vendors around the 
> world rejoice of that decision...
>
> It was anything but right.

I don't think buffer overflow and string fundamentals are closely 
related, if used reasonably, but I'm not surprised you favour 
Pascal's solution of having two string types: one for strings up 
to 255 bytes and another one for longer strings.

Anyway, here is the real reason for how C implemented strings:

«None of BCPL, B, or C supports character data strongly in the 
language; each treats strings much like vectors of integers and 
supplements general rules by a few conventions. In both BCPL and 
B a string literal denotes the address of a static area 
initialized with the characters of the string, packed into cells. 
In BCPL, the first packed byte contains the number of characters 
in the string; in B, there is no count and strings are terminated 
by a special character, which B spelled `*e'. This change was 
made partially to avoid the limitation on the length of a string 
caused by holding the count in an 8- or 9-bit slot, and partly 
because maintaining the count seemed, in our experience, less 
convenient than using a terminator.

Individual characters in a BCPL string were usually manipulated 
by spreading the string out into another array, one character per 
cell, and then repacking it later; B provided corresponding 
routines, but people more often used other library functions that 
accessed or replaced individual characters in a string.»

http://cm.bell-labs.com/cm/cs/who/dmr/chist.html



More information about the Digitalmars-d mailing list