"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, book author and open-source developer. He wrote a popular book called "Real-World Functional Programming" and is a lead developer of several F# open-source libraries, but he also contributed to the design of the F# language as an intern and consultant at Microsoft Research. 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 types for understanding context usage in programming languages, but his most recent work also includes two essays that attempt to understand programming through the perspective of philosophy of science.