The original bug was returning STATUS_SUCCESS to indicate that a function had succeeded without noticing that STATUS_SUCCESS is defined as 0 in a function that's expected to return a non-zero value on success. This specific error could have happened on any language - defining two different return types and using the wrong one could happen in any language.
> defining two different return types and using the wrong one could happen in any language
This specifically is the kind of bug that is avoided with strong typing. The compiler screams at you when using the wrong return type. For example, if a callback expects a Result type, you must return a Result type, not some random int-like value whose definition of success and failure is arbitrary.
It can be avoided in any compiled language that has a boolean type. That includes C these days. Unfortunately this functionality predates the existence of the boolean type.
Yet they've had astounding success and is the most widely used operating system. Maybe usability and ease of access are far more important than beautiful design
Shockingly, monopolies and entrenchment in software is SUPER EFFECTIVE.
While MS isn't utterly technically bereft obviously, and they had some correct choices like backward compatibility and usability relative to imbeciles like IBM, just look at the botched execution of Win8, their security disasters, and generally superior products that got nudged out by beta-ware quality releases.
Beaver dams are like step dams. The bad ones people talk about are the huge dams which alter the environment drastically often creating artificial lakes.
Beaver dams on the other hand slow down water flow to some extent and alter the direction of water flow slightly. These smaller natural dams are so good for little species to thrive.
reply