Tomas Petricek

Learning to Live with Errors

Not Just a Computer Scientist

Learning to Live with Errors

"If trials of three or four simple cases have been made, and are found to agree with the results given by the engine, it is scarcely possible that there can be any error." (On the mathematical powers of the calculating engine, Charles Babbage, 1837)

If Charles Babbage was right, you would just try to run your program on a few sample inputs and be sure that it will work correctly. Sadly, the world is not so simple. Since the invention of computers, we mostly eliminated hardware issues, but software errors remain. And programmers spent over 60 years finding different strategies for dealing with coding errors.

Are software errors a curse that must be eliminated at all costs as advocates of strong typing claim? Are they a professional embarrassment that can be avoided through proper engineering? Should we see errors as an unavoidable part of any modern system and "let it crash" if an unhandled error occurs? Or could we even see errors as a source of creative inspiration?

In this talk, I look at a number of strategies for dealing with errors that appeared throughout the history of programming. Understanding the origins of different approaches to errors is not just a fun historical exploration, but it sheds light on current issues in programming, including computer science education, hiring process and the never-ending programming language wars.

Talk objectives:

- Provide historical background on different approaches to handling errors that are popular in current programming languages
- Challenge hidden assumptions that developers in many different communities take for granted - and show that "the other people" have some truth too!
- On the practical side, also help choosing the right technology - what kind of error handling methods make more sense in different contexts?

Target audience:

Anyone who wants to see modern technologies in a wider historical context.