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...
Read more about Yizhou Zhang (Harvard University) on New Perspectives in Language Design