|Think about Loose Coupling|
Re^2: Projects where people can dieby davis (Vicar)
|on Sep 07, 2006 at 22:27 UTC||Need Help??|
A single bit change in a ascii '0' makes it an ascii '1' and vice vera.
Well, yes, it does. However this could equally happen at runtime after the code's loaded from ((EE)?P)?ROM — are you going to guarantee the absence of the effects of cosmic rays / radiation / jam on your processor? This makes the programming language you've used irrelevant.
The safer way to provide security is to have multiple redundant, different (many people miss this distinction) systems checking each others' results. NASA (IIRC) use three machines to perform the same navigation/guidance tasks — if one disagrees, it's deactivated. They also have a "just land this thing" computer system which can be brought up manually.1.
Have multiple systems, written by different people, presumably in different languages, cross-checking their results. When they have different results, you have a problem — a bit like realtime testing, if you will.
1: I don't know if the separate computers are different... and I'm not sure of the exact numbers.
Update: I've now re-read some of the posts further down about validating the correctness of the OS/compiler etc.... I wouldn't use Perl either. I would, however, still advocate different systems cross-checking their results.
Kids, you tried your hardest, and you failed miserably. The lesson is: Never try.