Christopher Smith wrote:
Andrew Lentvorski wrote:
First, nothing may be shared. All communication is by messages that are copied. This has interesting performance tradeoffs.
Not really. There is no requirement that an actual copy happen.

Since there is one single Erlang implementation and it serializes and copies messages, that's as close to a requirement as one gets.

As I said, Erlang needs a second implementation before I believe that it can survive.

There is a comparison between Gambit/Termite and Erlang where you see that Erlang benefits as long as the messages are small and starts to die when the messages get big--Gambit/Termite is the reverse.
Erlang's runtime does need to be optimized better for larger messages.

Not necessarily. Erlang has its market niche and that market niche doesn't need larger messages.

That's what a second implementation would be useful for. To knock out some of the baked in compromises that may not fit outside of its specific domain.

Second, it puts watchdogs over things and if they lock, it kills and restarts them. That solves the *symptom*, but not the problem.
Again, the halting problem... sometimes all you can solve is the symptom.

Disagree. Your brain does not always reboot because you got a bump on the head. The problem is that most programs do not try to recover gracefully in the case of failure.

Something as simple as "out of memory" causes better than 99% of all programs to die with horrible corruption. There is no reason for that other than the fact that no one takes the time to code it.

Third, all messages are received asynchronously, so you have to account for that outright in your coding style.
Isn't the assumption that messages can be passed instantly between two nodes on of those "Myths of distributed computing"?

At no point did I say "instantly".

The problem is rarely lack of instantly.  It normally is lack of ordering.

-a

--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg

Reply via email to