The Trouble With Types
It’s hard to find a topic that divides programming language enthusiasts more than the issue of static typing. To about one half of the community, types are a godsend. They provide structure to organize systems, and reduce the tedium of having to write unit tests. They prevent classes of runtime errors, make IDEs more helpful and provide a safety net for refactorings. To the other half, static types are pointless ceremony or worse. They limit the freedom of expression, are in the way of rapid prototyping, and make program code bulkier. Static types tend to increase the complexity of languages and their compilers and making sense of opaque type error message is often an exercise in frustration.
Personally I am in the camp of static type advocates, even though I respect the opinions of the static type antagonists and sympathize with them. The question is: What needs to happen to make static typing less controversial than it is today? Ideally, a type system should refuse as many erroneous programs as possible, but accept all correct programs one would want to write. It should provide useful documentation about interfaces but get out of the way otherwise. It should be simple to define, with a clear semantics and a guarantee of correctness. But it should also be easy to learn and natural to use. The problem is that each of these criteria can be met in isolation but combining them requires many difficult tradeoffs.
In the talk I will give an outline of the main categories of static type systems as well as some new developments, and discuss the tradeoffs they make.
Martin Odersky is a co-founder of Typesafe, the creator of the Scala programming language, and a professor in the programming research group at EPFL, the leading technical university in Switzerland. Throughout his career, Martin’s singular objective has been to make the basic job of writing programs faster, easier and more enjoyable. He wrote javac, the compiler used by the majority of today’s Java programmers, and scalac, the compiler used by the fast-growing Scala community. He authored “Programming in Scala,” the best-selling book on Scala. Previously he held positions at IBM Research, Yale University, University of Karlsruhe and University of South Australia, after having obtained his doctorate in 1989 from ETH Zürich as a student of Niklaus Wirth, the creator of Pascal.