D and Go are the two languages poised to take over the roles of C and C++. They both have very fast compilers and numerous other advantages compared with C and/or C++. I've looked at both of them quite carefully, and decided that D works better for me (an important factor for me though was that D2 recently stabilized with the publication a couple months ago of Andrei Alexandrescu's excellent new book "The D programming language"). There's an interesting recent thread debating the merits of the two languages at the golang-nuts mailing list.
> languages poised to take over the roles of C and C++
D has been around for ages, during which time C++ usage has grown quite a lot, essentially at the expense of C and assembly.
First of all, I don't get the sense people are actually casting about for a C++ replacement. Secondly, garbage collection makes D a non-starter in probably over half the areas C++ is used.
Given that Andrei Alexandrescu, who is one of the best-known C++ programmers in the world, co-designed (with Walter Bright) the new version of D, I would say that there are at least some C++ programmers looking for a better language. I think there's also a lot of C programmers looking for a better language but unwilling to deal with C++ (I'm in that category myself). Garbage collection in D is optional.
I'm not poo-pooing D at all, it just it seems to compete more with Java/C# than C++.
C++ is now really for closer to the metal, where garbage collection is truly a non-starter and nobody cares that std::string is awkward because they don't use it.
I would say it depends on what the libraries do expect, especially the D standard libraries. If those work with and without garbage collection it probably doesn't matter so much. If those expect garbage collection then I suppose D2.0 will have a hard(er) time luring that many c++ guys over.
Does anyone already know how the new standard libraries which they wrote do work?
Notice in particular that he says "Furthermore, you can use malloc() and free(), along with the rest of C's standard library, ..., without any overhead. Then, a D primitive called emplace allows you to construct objects at specified memory locations (a la C++'s placement new operator)".
The emplace function is in the std.conv library and is the basis for constructing objects outside of the control of the garbage collector.
My understanding is that most library functions do not care about whether you are using garbage collection or not. Library functions are usually written in a parameterized way such that you can use any appropriate object; so long as it has the right methods.
And Walter, of course, has his answer to this. dmd is very fast (IIRC according to Walter it's faster than Google Go compiler) thanks to parallel compilation, asynchronous I/O, etc. enabled by design of D.
I can't even imagine what it would be like on a 100hz computer.