Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p><strong>Precise answer:</strong></p> <p><a href="http://en.wikipedia.org/wiki/Ada_%28programming_language%29" rel="nofollow noreferrer">Ada</a> and <a href="http://en.wikipedia.org/wiki/SPARK_%28programming_language%29" rel="nofollow noreferrer">SPARK</a> were designed for maximum fault-tolerance and to move all bugs possible to compile-time rather than runtime. Ada was designed by the US Dept of Defense for military and aviation systems, running on embedded devices in such things as airplanes. Spark is its descendant. There's another language used in the early US space program, HAL/S geared to handling HARDWARE failure and memory corruption due to cosmic rays.</p> <hr> <p><strong>Practical answer:</strong></p> <p>I've never met anyone who can code Ada/Spark. For most users the best answer is SQL variants on a DBMS with automatic failover and clustering of servers. Integrity checks guarantee safety. Something like T-SQL or PL/SQL has full transactional security, is Turing-complete, and is pretty tolerant of problems. </p> <hr> <p><strong>Reason there isn't a better answer:</strong></p> <p>For performance reasons, you can't provide durability for <em>every</em> program operation. If you did, the processing would slow to the speed of your fastest nonvolative storage. At best, your performance will drop by a thousand or million fold, because of how much slower ANYTHING is than CPU caches or RAM. </p> <p>It would be the equivalent of going from a Core 2 Duo CPU to the ancient 8086 CPU -- at most you could do a couple hundred operations per second. Except, this would be even SLOWER.</p> <p>In cases where frequent power cycling or hardware failures exist, you use something like a DBMS, which guarantees ACID for every <em>important</em> operation. Or, you use hardware that has fast, nonvolatile storage (flash, for example) -- this is still much slower, but if the processing is simple, this is OK.</p> <p>At best your language gives you good compile-time safety checks for bugs, and will throw exceptions rather than crashing. Exception handling is a feature of half the languages in use now. </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload