<FreeFrag> The most secure computer in the world is
one not connected to the internet.
<FreeFrag> Thats why I recommend Telstra ADSL.
Also, agreed. Some elaboration on that point would be most welcome.The language's module system offers namespacing and then the OTP framework implements standard behaviors that have (in gen_server's case) state calculation, supervision, code change, termination and messaging callbacks all exported.
I presume "surviving hardware failures" was in reference to native Erlang epmd machine distribution, which is intended for fault tolerance and based on heartbeats. It's one step further than most languages go.
Ultimately, there is much more to be considered than state and side effects.
If radiation hits the CPU, Erlang won't save you.
In short: (some) Erlang systems have backup hardware and support moving running systems from one machine to the other (or one cluster to the other, etc), achieving very high "uptime" values.
With any system on relying on hot switching to backups you must have a mechanism to detect errors. The mechanisms exist in many languages there are plenty of robust C++, Java, php, ruby, and sadly cobol systems out there. No new language gets to claim backups as a core feature of the language, unless cobol does too.
I am moving to my third job that has a cobol legacy system being replaced by something new. All three of these shops have backup systems that the business owners would never consider separating from their legacy cobol apps.
I was completely unaware of it even in a research setting. Yet I was aware of things like ECC RAM, RAID, Chipkill RAM and algorithms for continuous checking of results including some implemented in hardware to isolate faulty CPUs but they all added extra hardware or software and none reused existing commodity cores. Its so simple, of course it should be a thing.
Could you post a link to some reading on this?
Some people even started a fork of GHC aimed at cluster parallelism a few years ago, but I don't think they got it working.
The only language that allows you to build things that won't fail even when the hardware breaks.
Erlang.