As far as I understand Erlang performance is reached by horizontal
scheduling (i'm not sure i used exact word) by which i mean that if you
have lack of performance you can buy new hardware nodes (servers) and
without any changes in code and even recompiling you can distribute
workload.
That is very good approach in situation when processor stopped getting
faster but become more parallelized and cheaper.
GC is just a mater of implementation. In presence of resources
implement good GC algorithm offers no difficulty.
All languages have their place
sure. and many people doubt of place of D. It would be nice if such
good lang will find it's place.
On 2011-12-18 12:19:43 +0000, Alex Rønne Petersen said:
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
--
BR, Ruslan Mullakhmetov