Null references redux
Walter Bright
newshound1 at digitalmars.com
Sat Sep 26 18:15:18 PDT 2009
bearophile wrote:
> Walter Bright:
>
>> I used to work at Boeing designing critical flight systems.
>> Absolutely the WRONG failure mode is to pretend nothing went wrong
>> and happily return default values and show lovely green lights on
>> the instrument panel. The right thing is to immediately inform the
>> pilot that something went wrong and INSTANTLY SHUT THE BAD SYSTEM
>> DOWN before it does something really, really bad, because now it is
>> in an unknown state. The pilot then follows the procedure he's
>> trained to, such as engage the backup.
>
> Today we think this design is not the best one, because the pilot
> suddenly goes from a situation seen as safe where the autopilot does
> most things, to a situation where the pilot has to do everything. It
> causes panic.
I've never seen any suggestion that Boeing (or Airbus, or the FAA) has
changed its philosophy on this. Do you have a reference?
I should also point out that this strategy has been extremely
successful. Flying is inherently dangerous, yet is statistically
incredibly safe. Boeing is doing a LOT right, and I would be extremely
cautious of changing the philosophy that so far has delivered
spectacular results.
BTW, shutting off the autopilot does not cause the airplane to suddenly
nosedive. Airliner aerodynamics are designed to be stable and to seek
straight and level flight if the controls are not touched. Autopilots do
shut themselves off now and then, and the pilot takes command.
Computers control a lot of systems besides the autopilot, too.
> A human needs time to understand the situation and act
> correctly. So a better solution is to fail gracefully, giving back
> the control to the human in a progressive way, with enough time to
> understand the situation. Some of the things you have seen at Boeing
> today can be done better,
Please give an example. I'll give one. How about that crash in the
Netherlands recently where the autopilot decided to fly the airplane
into the ground? As I recall it was getting bad data from the
altimeters. I have a firm conviction that if there's a fault in the
altimeters, the pilot should be informed and get control back
immediately, as opposed to thinking about a sandwich (or whatever) while
the autopilot soldiered on. An emergency can escalate very, very fast
when you're going 600 mph.
There have been cases of faults in the autopilot causing abrupt, bizarre
maneuvers. This is why the autopilot must STOP IMMEDIATELY upon any
fault which implies that the system is in an unknown state.
Failing gracefully is done by shutting down the failed system and
engaging a backup, not by trying to convince yourself that a program in
an unknown state is capable of continuing to function. Software simply
does not work that way - one bit wrong and anything can happen.
> there's some progress in the design of
> human interfaces too. That's why I suggest you to program in dotnet
> C# for few days.
More information about the Digitalmars-d
mailing list