Yizhou
Zhang,
Doctoral
candidate
Computer
Science
Department,
Cornell
University
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.
Bio: Yizhou Zhang is a doctoral candidate in the Computer Science Department at Cornell University, advised by Andrew Myers. His research interests are in programming languages and software engineering. He designs and implements programming languages that help improve programmer productivity and software reliability. He was an undergraduate student at Shanghai Jiao Tong University.