Types are the central organizing principle of the theory of programming languages. In this innovative book, Professor Robert Harper offers a fresh perspective on the fundamentals of these languages through the use of type theory. Whereas most textbooks on the subject emphasize taxonomy, Harper instead emphasizes genetics, examining the building blocks from which all programming languages are constructed. Language features are manifestations of type structure. The syntax of a language is governed by the constructs that define its types, and its semantics is determined by the interactions among those constructs. The soundness of a language design – the absence of ill-defined programs – follows naturally. Professor Harper's presentation is simultaneously rigorous and intuitive, relying on only elementary mathematics. The framework he outlines scales easily to a rich variety of language concepts and is directly applicable to their implementation. The result is a lucid introduction to programming theory that is both accessible and practical.
Robert Harper is a Professor of Computer Science at Carnegie Mellon University.
Librarian Note: There is more than one author in the Goodreads database with this name. This profile may contain books from multiple authors of this name.
While not a bad book, this should not be a first book on type theory and programming languages.
Robert Harper's syntax is terse to put it kindly and his lack of concrete examples can make an already abstract topic unapproachable. Additionally, he uses notation used and known only to him. This notation is consistent throughout his book but differs greatly from, e.g., Pierce's Types and Programming Languages which follows existing literature much more closely.
This approach I think works well when you have already seen the material before and would like some insight into some subtleties of the theory (for example, describing a context as a set is not sufficient in all cases).
Learn a ton reading this book. It starts off fairly easy with the level of abstraction picking up slowly from there. Lots of ground is covered by this book. I found so many answers to questions about programming languages and type theory.
This book was above my math/logic capacities. I dropped it for now, but my goal is to go back for it in the future, after refining my knowledge on those domains.
The book contains a lot of great stuff but is also a bit tedious and challenging to grasp. It's the sort of book that demands revisiting the basics; it's easy to forget earlier material, leading to confusion when advanced concepts build upon earlier notations. I anticipate rereading it someday.