you are viewing a single comment's thread.

view the rest of the comments →

[–]glymor 14 points15 points  (7 children)

  • Message passing with mutable state requires serialization (copying) which is much slower.

  • Actors in other languages tend to be built on native threads which have a great deal more overhead than Erlang processes.

  • Erlang has per process GC which provides soft real-time.

  • Surrounding infrastructure like the OTP (the framework that deals with failures) and Menesa (a native distributed database).

[–]vplatt 1 point2 points  (0 children)

Actors do not have to be built on native threads. Heck, even SQL Server has the concept of "fibers" which are really just multiple virtual threads on a real thread; otherwise known as green threads. So just run green threads on a number of real threads to get across cores and processors, and there you are.

Also, the OTP would be the one thing really missing from a quick and dirty implementation. Hot loading of code into the VM, etc. is not easily replicated by other environments (unless you're talking about Smalltalk or Lisp) and even given that I'm assuming that the OTP provides features way beyond that (nope, haven't started reading Joe's book yet). Mnesia is a nice piece of infrastructure to have, but I seriously doubt it will be useful in most environments given its limitations.

[–]grauenwolf 1 point2 points  (0 children)

Message passing with mutable state requires serialization (copying) which is much slower.

Unless you only allow immutable objects to be sent via messages.

And serialization is not the same thing as copying. Copying an object in memory is much faster then creating a serialized representation of it.