Null references have been called the Billion Dollar Mistake in programming language design for all the errors, crashes, and vulnerabilities that they have caused over several decades. If null references are so bad, why do popular programming languages still promote their use? Do they have essential use cases?
I will report on our efforts to eliminate the disadvantages of null references while keeping support for existing programming idioms.
Our implementation is in the Scala language, but our conclusions can also help designers of other new programming languages.
Most uses of null references can be classified as either implementing optional values or initializing groups of related objects. For the former use case, practical alternatives exist, so the main challenge is retaining compatibility with existing codebases. The latter use case requires more fundamental changes in language design, type systems, and static analysis to ensure safety while still allowing widely used data structures and initialization patterns.
About the Speaker
Ondřej Lhoták is an Associate Professor at the University of Waterloo and a Visiting Professor in the LAMP group at EPFL until June 2022. His research interests are in static reasoning about the behaviour of programs in object-oriented programming languages, with a particular focus on Scala.