Types and Programming Languages
Benjamin C. Pierce


Compras Nikon
Bluetooth
1 Well put, practical and theoretic book on types.
Extremely well written book on type systems in programming languages. Uses lambda calculus to explain type systems. Practical aspects show up in the ML implementations downloadable on the books site.
Contains a lot of programming language theory besides just type-systems. Can be used as an introductionary book to programming language design. Concluding: Great book!
2 An accessible yet thorough introduction to type systems
This text is perhaps the most accessible yet thorough introduction to type systems I've encountered.

On the one hand, it offers excellent grounding: practical motivation is provided, numerous examples illustrate the concepts, and implementations are provided which can be used to typecheck and evaluate these examples. At various points, extended demonstrations of the type systems under consideration are given (e.g. showing how objects may be encoded). The exercises are well constructed and in many cases, accompanied with answers and detailed explanations in the appendix.

On the other hand, it offers an excellent exposition of the material: Pierce provides a lucid account of the static and dynamic semantics (primarily small-step operational) for various lambda calculi. He proceeds in a stepwise fashion via the gradual accretion of features: from first order (simply typed) systems to higher order systems incorporating bounded subtyping and recursion. He also gives attention to the metatheory of these systems (focusing on proofs of progress and preservation, and for systems with subtyping, of decideability). Internally, the text is well organized, with clear dependencies among the chapters, and the bibliography is extensive.

It should be noted that, while reasonably comprehensive, the text is necessarily limited in scope. For example, aside from the discussion on Featherweight Java, systems other than typed lambda calculus variants are not considered. In my opinion, the focus on these (in some sense "low-level") calculi makes foundational issues more apparent, and the linear progression from simple to complex variants lends a pleasant cohesiveness that would have been lost in a more general survey. However, as object/class encodings were discussed at various points, it would have been nice to see a more integrated presentation, in the spirit of the paper Comparing Object Encodings [BCP97].


3 A Good Book
Especially helpful for those who have practical experience but don't have strong theoretical background (like Lambda Calculus, Typing Theory ... etc.)

Friday, 05-Dec-2008 03:01:41 CST
Quote of the Day:


Bypasses are devices that allow some people to dash from point A to

point B very fast while other people dash from point B to point A very
fast. People living at point C, being a point directly in between, are
often given to wonder what's so great about point A that so many people
from point B are so keen to get there and what's so great about point B
that so many people from point A are so keen to get _____there. They often
wish that people would just once and for all work out where the hell
they wanted to be.
-- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"

To lead people, you must follow behind.
-- Lao Tsu