http://danluu.github.io/blog/2013/09/07/why-hardware-development-is-hard/ As a software engineer, how would you feel if 99% of valid Java code ended up being translated to something that produced random results, even though tests pass on the untranslated Java code? And, by the way, to run tests on the translated Java code you have to go through a multi-day long compilation process, after which your tests will run 200 million times slower than code runs in production. If you’re thinking of testing on some sandboxed production machines, sure, go ahead, but it costs 8 figures to push something to any number of your production machines, and it takes 3 months. But, don’t worry, you can run the untranslated code only 2 million times slower than in production [1]. People used to statically typed languages often complain that you get run-time errors about things that would be trivial to statically check in a language with stronger types.