I had similar questions initially. However, you really should consider "Erlang" to _be_ your OS. If Erlang crashes, it's as bad as if the OS kernel crashes, which is as bad as if the hardware fails.<div>The nice thing with this is that, if your code crashes, things like sockets can still survive. Similarly, even if your gen_server crashes, you get a well-defined place to clean up your code if you want -- it's nothing as bad as trying to do cleanup in SEGV signal handlers in C; instead it's a well-defined part of the library!</div>
<div><br></div><div>The reason Erlang can give you these nice things is that it's isolated, immutable, and based on a VM. The cost is, well, that it's isolated, you pay copying overhead for immutable data, and some execution overhead of the VM.</div>
<div><br></div><div>Sincerely,</div><div><br></div><div>jw</div><div><br>--<br>Americans might object: there is no way we would sacrifice our living standards for the benefit of people in the rest of the world. Nevertheless, whether we get there willingly or not, we shall soon have lower consumption rates, because our present rates are unsustainable. <br>
<br>
<br><br><div class="gmail_quote">On Mon, Oct 17, 2011 at 2:14 PM, Gerry Weaver <span dir="ltr"><<a href="mailto:gerryw@compvia.com">gerryw@compvia.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hello All,<br>
<br>
I am new to Erlang and I'm trying to make the case to continue learning this language. I have read all of the books available and seen several presentations on the language. I am interested in Erlang primarily for the distributed and fault tolerant features it offers. However, I have some reservations about how useful this really is. For example, if you have a network server and the listener process fails, how do you recover? It seems that the fault tolerance is only applicable in the VM context. This is, in my mind equivalent to any other application process. If I have a network server written in C, I can have a watchdog process to kill and/or restart it in the event of failure. The C based approach actually seems more robust. In this scenario, how would one restart the Erlang VM? It has been my experience that network servers most often fail due to OS or hardware limits rather than<br>

bugs in the code (at least for thoroughly tested production ready code). When you factor in the amount of baggage that comes with Erlang, or any other VM based language, it's difficult to justify. Now there is also the rapid development aspect, but I'm finding that at least for now, the time savings is being eaten up by looking for documentation. I understand that this situation will improve over time, but the various posts I've seen from folks with more experience seem to indicate that this will take quite a while. I like the language (except the , ; . thing). You can do some pretty cool things with it, but when I got over that initial gee whiz, I had some trouble seeing a real world production use case. I'm not trying to be critical, I just figure I must have missed something along the way. Any perspectives or advice on this would be greatly appreciated.<br>

<br>
<br>
Thanks,<br>
-G<br>
<br>
<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br></div>