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:
Read the online Supplement to the textbook. (The Supplement includes additional topics plus documentation of all the code.) Its SHA1 checksum is
f33a0baa70d1368f2f34d1fb80fa7cacb2afea76
.Browse errata sorted by page, date found, or finder.
- Download source code intended for students:
build-prove-compare-2023-05-18.tgz
(SHA1 checksum55963a65c93eefc1baea957a384c934b2668c4a5
)build-prove-compare-2023-05-18.zip
(SHA1 checksum7e06fa3bbab8b0167d2c664a958d0e6d87e04541
)
Get source code from the student github repository or report a problem with the code or the book.
Read my public-key signature on the checksums.
Things that will be possible one day:
- Search the book.