> it's reliable in the sense that it doesn't crash, and also reliable in the sense that it handles minor failures gracefully.
This is an incomplete definition of reliability. It seems that the author is only considering programs which work as advertised when used as intended.
Most software is written optimistically, i.e., the "good path" is tested most. As soon as you start feeding the program with invalid input, it is no longer reliable, as witnessed by the myriad of low-level security bugs (stemming from the nature of C) in virtually every nontrivial C program ever written.
Now, would you rather have your program crash (be "unreliable" by the author's definition) or end up running arbitrary code injected by an attacker?
(Security exploits are the most prominent example; many programs will do something weird when fed unexpected input.)
This is an incomplete definition of reliability. It seems that the author is only considering programs which work as advertised when used as intended.
Most software is written optimistically, i.e., the "good path" is tested most. As soon as you start feeding the program with invalid input, it is no longer reliable, as witnessed by the myriad of low-level security bugs (stemming from the nature of C) in virtually every nontrivial C program ever written.
Now, would you rather have your program crash (be "unreliable" by the author's definition) or end up running arbitrary code injected by an attacker?
(Security exploits are the most prominent example; many programs will do something weird when fed unexpected input.)