Programming Languages: Application and Interpretation

Shriram Krishnamurthi, Brown University

Filed under: [ , ]

http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/

Prof. Krishnamurthi had offers to publish this book in a traditional print, but chose not to because he felt it was better to distribute it freely on the web. The publisher’s loss is your gain, because this book is just about as perfect as a PDF can be.

This book offers clear writing, detailed examples, and a professional layout. It’s been reviewed by dozens of experts and collaborators and is continually updated. And miracle of miracles, the book is a properly designed PDF. It’s a small download. The text is centered on the page. The table of contents and index are hyperlinked, there’s a list of working bookmarks to let you jump around the text, and even references inside the text are linked to each other. If you’re an author looking for tips on how to design a PDF, consider using this book as a template. The only improvements for on-screen readability would be to have a larger font and page sizes designed to fit on the screen without scrolling. Otherwise, it’s ideal.

From the preface:

This book is the fruit of a vision for teaching programming languages by integrating the “two cultures” that have evolved in its pedagogy. One culture is based on interpreters, while the other emphasizes a survey of languages. Each approach has significant advantages but also huge drawbacks. The interpreter method writes programs to learn concepts, and has its heart the fundamental belief that by teaching the computer to execute a concept we more thoroughly learn it ourselves.

While this reasoning is internally consistent, it fails to recognize that understanding definitions does not imply we understand consequences of those definitions. For instance, the difference between strict and lazy evaluation, or between static and dynamic scope, is only a few lines of interpreter code, but the consequences of these choices is enormous. The survey of languages school is better suited to understand these consequences.

This course therefore melds these two approaches. Concretely, students program with a new set of features first, then try to distill those principles into an actual interpreter. This approach, of beginning with a bottom-up, example-driven presentation followed by a top-down synthesis should make the material accessible while avoiding the perils of any one school of thought.

Copyright Type: standard copyright

| posted Nov 23, 01:25 PM by Jason Turgeon

Previous book: Security Engineering
Next book: How Computers Work: Processor and Main Memory