"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.
- 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?
Anyone who wants to see modern technologies in a wider historical context.
Tomas is a computer scientist and open-source developer. He is a Visiting Researcher at the Alan Turing Institute working on tools for open data-driven storytelling. He wrote a popular book called "Real-World Functional Programming" and is a lead developer of several F# open-source libraries. He is a partner at fsharpWorks where he provides trainings and consulting services. Tomas recently submitted his PhD thesis at the University of Cambridge focused on context-aware programming, but his most recent writings also includes two essays try to understand programming through the perspective of philosophy of science.