Yizhou Zhang (Harvard University) on New Perspectives in Language Design

Date: 

Friday, November 15, 2019, 3:00pm to 4:30pm

Location: 

Maxwell-Dworkin Room 323

Programming-language design is more active than ever: existing languages — including Rust, Swift, Go, Java, C#, Scala, Haskell, and JavaScript, to name a few — are evolving continually and rapidly, and new languages keep springing up. While this constant iteration of language design aims to help programmers manage a growing software complexity, programmers are still frequently frustrated by poor design decisions in even the most essential aspects (e.g., generics and exceptions) of modern languages. The inadequacy of current solutions to these problems has even forced language designers to abandon these problematic language features. This is an unfortunate state of affairs.

 

Language design does not have to be about abandoning old features or piling on new ones. A principled approach to language design can offer simplicity, expressive power, strong guarantees, and good performance all at the same time. As an example, I will describe the design of the exception-handling mechanism in the Genus programming language. The design is an effort towards settling the long-running debate over checked vs. unchecked exceptions; the payoff is safer, cleaner, and faster code. I will also discuss how this design can be generalized to fix a fundamental modularity problem in algebraic effects, a unifying language abstraction that is quickly gaining popularity among programmers and language designers.