4 ms·
> It's fine to say that static types are better but if you read about Erlang you may find the approach very compelling - Erlang's managed to provide the basis f
by hota_mazi 8y ago
> It's fine to say that static types are better but if you read about Erlang you may find the approach very compelling - Erlang's managed to provide the basis for extremely reliable systems, without types.
I have yet to see some convincing proof of that, besides that Ericsson router from 20 years ago that ended up being rewritten in C++.
Also, even if it is true like you say that
> Erlang's managed to provide the basis for extremely reliable systems, without types.
This still doesn't prove that there are no languages that can do a better job at it than Erlang.
99.99% of extremely reliable software today runs on non Erlang: C, C++, Java, you name it.
Finally, in my experience, writing supervisors in Erlang is just as painful, and if not harder, than writing resilient code based on exceptions in Java or C++.
- qaq 8y ago"I have yet to see some convincing proof of that, besides that Ericsson router from 20 years ago that ended up being rewritten in C++." Control plane for 80% of mobile in the world is Erlang. Core critical infra @ Goldman is Erlang. Control plane for 90% of internet routers is Erlang.
- hota_mazi 8y agoThat's neither proof, nor convincing. Just claims. Do you have any statements from these companies that they do indeed do that? I'm not talking about claims from Erlang web sites, but actual companies using Erlang confirming your claims.
- staticassertion 8y agoI'm not advocating for Erlang over type safety. I personally prefer a type based approach. They are also not incompatible. That said, > I have yet to see some convincing proof of that There is no proof, but I can point you to research. pdf warnings: https://jimgray.azurewebsites.net/papers/tandemtr85.7_whydocomputersstop.pdf https://jimgray.azurewebsites.net/papers/tandemtr85.7_whydoc... This paper is fundamental to reliability, and describes two primitives for building reliable systems - transactions, and the "persistent process" (spoilers: it's an actor). And here's Joe Armstrong's thesis. The first 3 chapters are quite relevant and will point you to further research http://erlang.org/download/armstrong_thesis_2003.pdf http://erlang.org/download/armstrong_thesis_2003.pdf > besides that Ericsson router from 20 years ago that ended up being rewritten in C++. This is missing some important information. Erlang is still used at the control plane/ orchestration layer, for exactly the reasons I've described. > This still doesn't prove that there are no languages that can do a better job at it than Erlang. Didn't say otherwise. > 99.99% of extremely reliable software today runs on non Erlang: C, C++, Java, you name it. Sure, but who cares about Erlang? The real money's in isolated persistent processes aka actors, and I bet most reliable software is built on those, whether language provided or not. See AWS's cell based architecture, which is just the actor model with discipline attached. Or all of microservice architecture. > Finally, in my experience, writing supervisors in Erlang is just as painful, and if not harder, than writing resilient code based on exceptions in Java or C++. That's ok.