Programming Languages: Build, Prove, and Compare

Fashions in programming languages change continually. But the best way to stay up to date is not to study the latest fashion; it’s to master the timeless ideas that underlie all languages, even the most complicated.

This is the web site for Programming Languages: Build, Prove, and Compare: a text that distills timeless languages and their design ideas into easy-to-learn “bridge” languages implemented by interpreters whose key parts are explained in the text. The book goes deep into the roots of both functional and object-oriented programming, highlighting timeless ideas like functions, types, polymorphism (generics), modules, and objects.

The book is not just about programming-language ideas; it is also about how programmers use them effectively. Through concepts, examples, and more than 300 practice exercises that exploit the bridge languages and their interpreters, students learn not only what programming-language features are but also what they can do. Substantial implementation projects include Milner’s type inference, both copying and mark-and-sweep garbage collectors, and arithmetic on arbitrary-precision integers.

Things you can do right now:

Things that will be possible one day: