<div dir="ltr">It seems to me an Idea that is interesting in theory but would involve a *LOT* of work for an unclear benefit.<div><br></div><div>Zach</div></div><div hspace="streak-pt-mark" style="max-height:1px"><img alt="" style="width:0px;max-height:0px;overflow:hidden" src="https://mailfoogae.appspot.com/t?sender=aemtlc3NpbkBnbWFpbC5jb20%3D&type=zerocontent&guid=0f20a014-ddb4-4d5b-9a92-cad570f0f53d"><font color="#ffffff" size="1">ᐧ</font></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Sep 14, 2017 at 1:54 AM, Tristan Sloughter <span dir="ltr"><<a href="mailto:t@crashfast.com" target="_blank">t@crashfast.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>




<div><div>Alternatively, work on Alpaca (<a href="https://github.com/alpaca-lang/alpaca" target="_blank">https://github.com/alpaca-<wbr>lang/alpaca</a>) and improvements to BEAM :)</div><span class="">
<div><br></div>
<div id="m_-4092011862396538445sig19496053"><div class="m_-4092011862396538445signature">--<br></div>
<div class="m_-4092011862396538445signature">  Tristan Sloughter<br></div>
<div class="m_-4092011862396538445signature">  "I am not a crackpot" - Abe Simpson<br></div>
<div class="m_-4092011862396538445signature">  <a href="mailto:t@crashfast.com" target="_blank">t@crashfast.com</a><br></div>
</div>
<div><br></div>
<div><br></div>
</span><div><div class="h5"><div>On Wed, Sep 13, 2017, at 04:43 AM, Jesper Louis Andersen wrote:<br></div>
</div></div><blockquote type="cite"><div><div class="h5"><div dir="ltr"><div>On Wed, Sep 13, 2017 at 1:20 PM Roman Galeev <<a href="mailto:jamhedd@gmail.com" target="_blank">jamhedd@gmail.com</a>> wrote:<br></div>
<div><blockquote style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>> Personally, I'd just throw some more time after concurrent OCaml, and then write a translator from Erlang to OCaml :P<br></div>
<div><br></div>
</div>
<div dir="ltr"><div>Do you think concurrent OCaml has advantages over Erlang? And if yes, what are they, in your opinion?<br></div>
</div>
</blockquote></div>
<div><br></div>
<div>You are making tradeoffs whenever you choose another language.<br></div>
<div><br></div>
<div>* Semantically, OCaml is far superior to Erlang in any conceivable way.<br></div>
<div>* OCaml has a powerful type system, which Erlang doesn't.<br></div>
<div>* The native code generator in OCaml easily surpasses the bytecode interpreter in Erlang.<br></div>
<div><br></div>
<div>On the other hand:<br></div>
<div><br></div>
<div>* OCaml is currently not parallel in any way. There has been a long effort in fixing this, but even *if* it gets released, we are looking at years of maturing needed before we can hope for robust operation.<br></div>
<div>* OCaml currently uses something like Lwt and/or Async for concurrent work. This is Node.js in disguise. I don't believe in indirect concurrency codings in general, far preferring Erlang or Go's direct approaches (in which you favor preemption over cooperation in multitasking).<br></div>
<div>* OCaml is unlikely to ever support hot code upgrade.<br></div>
<div>* OCaml currently has no dTrace-style production ad-hoc tracing facilities where Erlang has it naturally.<br></div>
<div>* OCaml programs are easy to make robust (cope with unknown input), but harder to make resilient (coping gracefully with internal failure).<br></div>
<div><br></div>
<div>So proviso OCaml gets a good parallel story, and we can implement the important parts of Erlang on top of that, then I think there are programs which can be written in OCaml with advantage. In particular those which can afford to be restarted once in a while. This is true for many modern systems in which you are deploy clusters of nodes() and provisioning them this way. The prime candidate programs are those which require the efficiency the OCaml native code compiler provides and where you can't just run the OCaml program behind an Erlang Port easily.<br></div>
<div><br></div>
<div>The *current* state of the art: use OCaml whenever you have a problem requiring the combination of functional abstraction and efficiency[0]. If you don't require the abstraction levels OCaml provide, go for C, C++, Rust, Go, etc. But chances are that the added productivity of OCaml will get you a far better and faster program when you are working with a limited time frame, since you can try more solutions, quicker.<br></div>
<div><br></div>
<div>If your problem doesn't require efficient use of the CPU core, don't underestimate how productive Erlang is. Since everything are just Erlang terms, you can often write a good program in a fraction of the time it requires to come up with a good type model in something like OCaml. All tooling supports Erlang terms. This is a powerful abstraction which can be put to good use. And you get resilience on top. I should really blog about how unfairly effective Erlang is at being productive. Efficiency is far from the only important factor in software development.<br></div>
<div><br></div>
<div><br></div>
<div>[0] Haskell is another excellent candidate here.<br></div>
</div>
</div></div><span class=""><div><u>______________________________<wbr>_________________</u><br></div>
<div>erlang-questions mailing list<br></div>
<div><a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br></div>
<div><a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br></div>
</span></blockquote><div><br></div>
</div>

<br>______________________________<wbr>_________________<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" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Zach Kessin</div><div>Teaching Web Developers to test code to find more bugs in less time</div><div><span style="font-size:12.8px">Skype: zachkessin</span><br></div><div><span style="font-size:12.8px">+972 54 234 3956 / </span><span style="font-size:12.8px">+44 203 734 9790 / </span><span style="font-size:12.8px">+1 617 778 7213</span></div><div><br></div></div></div></div></div></div></div></div></div></div></div></div>
</div>