4 ms·
The reason is complexity, not necessarily that the companies don't care. Most end-consumer software is highly complex, using a vast number of dependencies, prog
by jonathanstrange 4y ago
The reason is complexity, not necessarily that the companies don't care. Most end-consumer software is highly complex, using a vast number of dependencies, programming has become similar to LEGO brick building. Libraries are written by normal programmers, too, and even carefully designed libraries contain errors. Since the interfacing between libraries also produces bugs, the end product will become buggy simply as a matter of combinatorics.
The only way to avoid this complexity is by keeping programs simple or by writing everything in house in a language like Ada/Spark very carefully, including formal verification and extensive testing. This is way too expensive for non-critical software. Btw, I don't think Erlang's concepts are general solutions, fault-tolerance by restarting services only eliminates certain kinds of problems and isn't suitable for all high-integrity demands.
- JohnFen 4y agoI don't think complexity explains it. There are plenty of industries that handle equal or greater complexity with greater reliability. I think the issue is that the industry is extremely cost-sensitive, and anything that lowers the cost of production is valued above quality. Not just by the industry, but by the industry's customers. You see the same thing in a lot of places. When people talk about shopping at Amazon, Wal-Mart, etc., they don't talk nearly as much about quality as about getting the lowest price. Well, the lowest price means cheap junk.
- jonathanstrange 4y agoComplexity explains it because the parts are not certified. In real engineering, parts tend to have precise specifications and sometimes must adhere to strict certification and testing. Outside of specialized areas, this is not generally the case for software libraries. If you accumulate such software libraries you cannot get error or failure estimates/models, and the result will be buggy no matter how careful you program or test or which programming language you use. The only remedy is to reduce complexity and/or develop everything in-house according to stricter rules.