On Thursday, July 05, 2012 21:32:11 dcoder wrote: > Thanks for the thorough explanation, but it begs the question why > not make strings be array of chars that have \0 at the end of it? > Since, lots of D programmers were/are probably C/C++ > programmers, why should D be different here? Wouldn't it > facilitate more C/C++ programmers to come to D? > > Just curious.
Are you serious? I'm shocked to hear anyone suggest that. Zero-terminated strings are one of the largest mistakes in programming history. They're insanely inefficient. In fact, IIRC Walter Bright has stated that he thinks that having arrays without a length property was C's greatest mistake (and if they'd had that, they wouldn't have created zero-terminated strings). C++ tried to fix it with std::string, but C compatability bites you everywhere with that, so it only halfway works. C++ programmers in general would probably have thought that the designers of D were idiots if they had gone with zero- terminated strings. You don't do what another language did just to match. You do it because what they did works and you have no reason to change it. Zero-terminated strings were a horrible idea, and we're not about to copy it. - Jonathan M Davis