"Who'd ever need to make more than 32K worth of crew changes per month?" You can almost hear the thought running through the programmer's mind, can't you? Unfortunately, Delta did in December 2004 and an overflow in some scheduling software created by SBS, a subsidiary of Boeing left Delta trying to figure out what crews were available to fly where and when. Actually, I doubt that the programmer even thought to ask that question. Just selected INT and that was the end of it.
Who's fault is it? The programmer is certainly to blame for not understanding and taking into consideration the limitations of the language. Even so, the language itself ought not to be so tied to the hardware. People are unused to thinking about arithmetic overflows when they see an expression that looks like "X + Y". They think they're doing math but in most languages, they're just doing an approximation of math. We can do better than that.
Thanks for Bryan Morse for the pointer to this.