From Scripts to Programs

Matthias Felleisen, Northeastern University

Like it or not, dynamically typed scripting languages are far more popular than programming languages that originate in academic laboratories. Most scripting languages are untyped and have a flexible semantics for primitive operations. A lot of programmers find these attributes appealing and use scripting languages for just these reasons. Reflective programmers are also beginning to notice, however, that when small untyped scripts grow old (and/or large), maintaining them becomes difficult. A lack of types means that programmers must (re)discover critical pieces of design information every time they wish to change or improve a program.

My team and I have therefore embarked on a research program that aims to solve this large and growing engineering problem with a combination of experience and tools from academic programming language research. In this talk I will present the first milestone: Typed Racket, an explicitly typed extension of Racket, a Scheme-like scripting language. Using Typed Racket, programmers can add types to a code base on a module by module basis. Two factors make such transformations straightforward and useful. First, the type system is highly flexible, combining numerous academic results with the novel notion of occurrence typing. Second, the type system uses Findler’s higher-order contracts to make the integration of typed and untyped modules safe.

Collaborators: Sam Tobin-Hochstadt, Ryan Culpepper

Speaker Biography

Matthias Felleisen, a Trustee Professor at Northeastern University, explores all aspects of programming languages and program design. His current research involves work on behavioral software contracts, gradual typing of scripting languages, theories and practice of language interoperability, module systems, and language extensibility. In addition to his research, Felleisen engages in educational outreach work. For the past 15 years, he and his team have worked with middle schools, high schools, after-school programs, and college faculty on a radical reform of the introductory programming curriculum. A lot of his educational work inspires his research, and many research efforts end up improving his educational work. The ACM inducted Felleisen as a Fellow in 2007. In 2009, he received the ACM Karl V. Karlstrom Award.