Designing software systems is hard. Designing programming languages, a
particular kind of software system, poses special problems.
I will present the results of an investigation into one specific design space
in this realm: the space for gradual typing. My focus will be on three dimensions:
- the expressiveness of the type system
- the integration of typed and untyped code
- the performance of such integrated systems
My research on gradual typing research is a response to the emergence of
untyped languages as dominant tools of the software trade. I consider
gradual typing as one method of helping developers move an untyped code
base into the typed world---on an incremental basis. This take on gradual
typing has several design implications for all three dimensions.
Adding types should also come with the usual advantages, in particular, the
assurance that certain errors cannot happen in certain regions of code.
And again, this goal suggests a number of design alternatives and
implications for their implementations.
For his entire research life Matthias Felleisen has worked on all aspects
of program design and programming language design. In 1995, he launched a
anation-wide outreach project for middle and high schools, now known as
Bootstrap and managed by former students and post-docs. For his research
on programming languages, Felleisen was inducted as an ACM Fellow in 2006;
he received ACM SIGPLAN's Achievement Award in 2012. For his educational
outreach, ACM honored Felleisen with the Karl V. Karlstrom Award in 2010;
ACM SIGCSE named Felleisen Outstanding Educator of the Year in 2011.
Felleisen is a co-author on a number of books: four Little books, How to
Design Programs, Semantics Engineering, and Realm of Racket.