52 of 53 people found the following review helpful:
5.0 out of 5 stars
Outstanding introduction to programming languages and their compilers, February 7, 2006
Over the years the
Compilers: Principles, Techniques, and Tools (2nd Edition) (also knwon as the dragon book) has become the de facto standard for introducing compilers and related topics at universities. This is very unfortunate because "Programming Language Pragmatics" is in a completely different league and should be the one used instead. It gives the student (or the self taught) a complete and through overview of parsing, grammar, automata theory and other key language constructs. What really differentiates this book from others (and most notably the (in)famous "Dragon Book") is that it does so in a easy to understand manner and with lots of well written examples.
Many people find compiler and language theory to be dark magic, and it would be wrong not to acknowledge that these subjects are considerably harder than say creating a web page in PHP or writing a small Java/C# program. But much of the confusion also stems from the long history of porly written books which all have lacked explaining key areas or assumed that the readers just know some obscure CS topics beforehand. This book does not travel down that road, it is well written, contains both simple and advanced examples and is simply a delightful read.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
47 of 50 people found the following review helpful:
5.0 out of 5 stars
Required for every Compiler Engineer, February 20, 2005
This is must read for every compiler engineer.
This book is 800+ pages of theory behind language design and processing of languages.
Altought it is very theoretical, it's very easy to read and well written and a pleasure to read. There are a lot of examples/figures/tables etc to explain things. I recommend people which are totally new to language design/compiler design to first read an introduction text. I can really recommend 'programming language processors in java' from Watt and Brown. This is a really good book.
The title of the book suggest that this book will only cover Language Design. In reality chapter 2, 3,4 and 5 covers in depth resp. Syntax checking (parsing), Names/Scope/Binding, Semantic Analysis and processor architecture.
Beside in depth analysis of language design (e.g. OO-, functional-, imperative- and logical-languages) it gives some practical implementation advice/tips. E.g. there are only a few compilerbooks which seriously talks about the different parsing error recovery techniques. This book explain some different recovery methods. Probably error recovery is not scientific enough for the other books, but for a compiler user error recovery is really important.
A last tip: this book comes in 2 editions: a paperback and hardcover edition. If you want to save some money buy the paperback.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No
34 of 35 people found the following review helpful:
5.0 out of 5 stars
Tough Topic - Crystal Clear Explanation, June 3, 2001
I have always enjoyed reading programming-language and compiler books and most of them are quite tough on a first-read.
Programming Language Pragmatics is one huge exception. None of the books I have read come close to the clarity that this book exhibits. On many occassions, the choice of words and presentation in this book has made me go 'Wow, I thought I already knew this stuff...'
Besides core topics, it has interesting discussion like concurrency, data-abstraction (object-oriented) and non-imperative programming models (functional and logic).
TOC (with my comments)
Ch. 1 Introduction
Ch. 2 Programming Language Syntax (theory of Regular Expression, Context-Free Grammars, Automata etc)
Ch. 3 Names, Scopes, and Bindings (binding, scope rules, closures etc)
Ch. 4 Semantic Analysis (attribute grammars, attribute flow, syntax tree etc)
Ch. 5 Assembly-Level Computer Architecture (keeping the pipeline full, register allocation etc)
Ch. 6 Control Flow
(expression evaluation, iteration, recursion, nondeterminacy etc)
Ch. 7 Data Types (type checking, pointers and recursive types etc)
Ch. 8 Subroutines and Control Abstraction (stack layout, calling sequences, parameter passing etc)
Ch. 9 Building a Runnable Program (back-end compiler structure, intermediate forms etc)
Ch. 10 Data Abstraction and Object Orientation (encapsulation, inheritance, dynamic method binding, multiple inheritance, the object model of smalltalk)
Ch. 11 Nonimperative Programming Models: Functional and Logic Languages
Ch. 12 Concurrency (shared memory, message passing etc)
Ch. 13 Code Improvement (peephole, redundancy elimination, data flow analysis, loop improvement, instruction scheduling, register allocation etc)
App. A Programming Languages Mentioned
App. B Language Design and Language Implementation
This is a very impressive book; truly one of my best investments in books so far.
Help other customers find the most helpful reviews
Was this review helpful to you? Yes
No