On 18-12-2011 12:45, Somedude wrote:
Le 18/12/2011 12:13, Ruslan Mullakhmetov a écrit :
I do not want to make a flame over D vs C++11.
...
Once again, i'm not trying to make a holywar. I'm D lover myself. But a
lot of people do not consider this benefits of D enough to shift to it
as for my opinion and experience.
These people will not change their mind whatever you throw at them. For
them, it's a matter of religion, not a matter of comparison. We
shouldn't bother pleasing such or such group of people.
BTW, your comparison with Erlang misses one crucial point: performance.
A part for some very specific applications for which it is designed,
Erlang's general performance is simply not comparable to that of D. A
lot of D's complex set of features is geared towards increasing runtime
performance. Erlang just doesn't compare.
On the other hand, Erlang's runtime is built around message-passing. I
*extremely strongly doubt* that you can get similar performance out of
message-passing in D, for two reasons:
1) The Erlang runtime is written in highly optimized C.
2) Erlang uses better garbage collection strategies than D.
On point 1: Of course, you can write a message-passing implementation in
D that's basically just glorified C, but that defeats the point of using
D in the first place IMHO.
On point 2: This is highly unlikely to change. It seems (from reading
the NG's past discussions) that there is virtually no interest from the
core devs of D to do The Right Thing to make precise garbage collection
possible, sadly (and neither to make thread-local GC possible, and other
such techniques (Erlang runs a separate GC per Erlang process, very
successfully)).
Yes, Erlang's emulator is not good in raw performance. It was never
geared for this (that's why it has easy interfacing with C for
performance-sensitive code). However, things like HiPE improve the
situation.
All languages have their place, and Erlang is still going strong in the
world of massive concurrency. I doubt D will be able to challenge this
until its GC issues have been resolved (and even then, D is nowhere near
as convenient, lacking fault tolerance and location transparency;
sometimes these traits are *much* more desirable than raw performance
when dealing with concurrency on such high levels).
- Alex