digitalmars.D - Re: D Language 2.0
- Ben Hanson <Ben.Hanson tfbplc.co.uk> Jan 20 2010
- Ben Hanson <Ben.Hanson tfbplc.co.uk> Jan 20 2010
dsimcha Wrote:== Quote from "Jérôme_M._Berger" (jeberger free.fr)'s articlePS: At work, we mustn't use C++ because: - It's slow; - Its standard library is too big (100k); - In a future product, we might want to reuse this module and not have C++ (Oh, yes I didn't tell you that we *do* have the C++ stdlib in our products because the web browser they bought to run their HTML+Javascript+HTML+XML+C+XML+C+XML+C GUI uses it, but *we* aren't allowed to, fckng morons)
This is a great point and deserves to be highlighted: D was meant to be a better C++, not a better C. If someone won't use C++ instead of C (apparently there are a decent amount of these people), then there's not a snowball's chance in hell they'd use D, even if we fixed the binary size issue, made D more usable without a GC, and in general made it in every way at least as efficient as C++.
That's all very well - you don't have to look further than Linus Torvalds for the attitude that C is the be all and end all and anything else is just cheating... *But* there are plenty of C++ programmers who really do care about every little bit of performance. Indeed, C++ programmers who are paranoid about performance and perhaps write C++ a little too in the C style are often criticised and told to modernise 'the compiler will take care of it' etc. When I wrote lexertl (http://www.benhanson.net/lexertl.html) it was using VC++ 6 and I ended up with the following case: void remove_duplicates () { const CharT *start_ = _charset.c_str (); const CharT *end_ = start_ + _charset.size (); // Optimisation for very large charsets: // sorting via pointers is much quicker than // via iterators... std::sort (const_cast<CharT *> (start_), const_cast<CharT *> (end_)); _charset.erase (std::unique (_charset.begin (), _charset.end ()), _charset.end ()); } Later I was told 'oh, VC++ 6 is dead, no need for such crufty hacks, modern compilers take care of it'. But what's this? Microsoft now consider STL to be unsafe and have added loads of range checking, slowing down C++ massively. Now it's true that most of that checking occurs in Debug, but even in Release some of it is there. This kind of thing really burns those coders who are trying to save every cycle. Again, for the really hard core C coders point of view see this: http://blogs.msdn.com/oldnewthing/archive/2005/06/13/428534.aspx Scroll to the last comment. The point is coder mentality is a sliding scale. Don't give the C bigots any more ammunition than they already have... Please! Regards, Ben
Jan 20 2010
By the way I forgot a link to 'Secure STL': http://channel9.msdn.com/shows/Going+Deep/STL-Iterator-Debugging-and-Secure-SCL/ 'nuff said. Regards, Ben
Jan 20 2010