It seems strange to me that some of the most important software is written in some of the easiest-to-mess-up languages. When we are writing a web application to share 140 character messages with our friends, everything is high-level. There are no blocks of memory, or bits to twiddle that change the hardware configuration, etc., etc. You have to go pretty far out of your way for your application to not work correctly, and then you have extensive unit tests to make sure you don't do that. The possibility of a bug in your application affecting other applications, or the OS, or the hardware is pretty much exactly zero. You aren't even <i>allowed</i> to write code that could be incorrect, like casting pointers or indexing into memory you didn't allocate.<p>Then there are embedded systems that control missile batteries or commercial aircraft, and to save money on processors, everything is implemented in the lowest-level language possible. You have some registers and a block of memory. The programmer has to manage the hardware configuration, manage memory, make sure he never writes outside of an array, make sure he never treat one pointer as a pointer of another type, etc. If you accidentally forget to do any of those things exactly right, even once in a million lines of code, the device can kill 500 people. And that's not even including bugs in the actual control algorithm... which you don't have much time to get right, since making the computer work at all is the hard part.<p>Anyway, it would be nice to see the embedded industry as a whole start using a programming language that can ensure some minimal amount of correctness at compile-time. Add a bit of expressiveness to the language so that describing complex algorithms is only a few lines of code, and I think we won't be hearing much about embedded software failing.<p>My guess, though, is that this will never happen; for the same reason that soft drinks are sweetened with high fructose corn syrup instead of sugar. Saving 0.01 cents times a hundred million units means massive profits. Saving a few cents by using a low-level but dangerous programming languages, and then paying out a few wrongful death settlements is probably cheaper than spec-ing better hardware. Externalities, gotta love 'em.<p>Edit: I see things like Atom (<a href="http://hackage.haskell.org/package/atom" rel="nofollow">http://hackage.haskell.org/package/atom</a>) as hope for the future. Machines can write C just fine. Just don't let the humans do it.