2 ms·
> Also I heard Ada's type system was responsible for blowing up that Ariane V rocket. Clearly ninja-tech like JavaScript's weak/dynamic type system wouldn't ha
by jordanb 14y ago
> Also I heard Ada's type system was responsible for blowing up that Ariane V rocket. Clearly ninja-tech like
JavaScript's weak/dynamic type system wouldn't have caused
that.
Funny joke. It's worth knowing what really happened to the Ariane 5 though. There used to be some great discussions of it on Usenet but it seems like maybe Google has lost them. Here are the cliff's notes as I remember them:
* The root cause of the disaster was a management decision to re-use the Ariane 4 navigation system without any testing for the new rocket, on the grounds that testing is expensive and time-consuming.
* The Ariane 4 was a slower rocket than the Ariane 5 so numbers with respect to speed and acceleration were smaller.
* During launch, there was an integer overflow in a system that was only needed prior to launch and continued running through the launch for no reason. I believe it was code to do INS synchronization. The integer overflow couldn't happen on an Ariane 4 due to slower velocities.
* While that system wasn't necessary for launch, the overflow caused an Ada exception to be raised, which was uncaught and caused the whole navigation system to terminate.
* Once the range safety system (also written in Ada) recognized that the rocket was out of control it automatically terminated the launch to protect those on the ground.
MISRA C people immediately leaped on the disaster claiming that "Ada caused it," on the grounds that C code would have silently ignored the error. Ada's exceptions are similar to those in most modern languages and the "exception wars" have now pretty much been won by the pro-exception people, so the whole argument is pretty archaic.
Of course MISRA C and C++ are slowly beating Ada in the market even though they're an inferior fit for purpose because of the perception that the ecosystem is healthier.
I've also heard that the integer overflow was actually caught by the hardware itself, which generated a signal that the Ada runtime turned into a native exception. So had it been C code it wouldn't have silently ignored the problem, it would have terminated due to an uncaught signal.
- deleted 14y ago[deleted]