Summaries and Customer Reviews are supplied by Amazon.com
Summary:
As a textbook suitable for the classroom or self-study, Michael Scott's Programming Language Pragmatics provides a worthy tour of the theory and practice of how programming languages are run on today's computers. Clearly organized and filled with a wide-ranging perspective on over 40 different languages, this book will be appreciated for its depth and breadth of coverage on an essential topic in computer science.
With references to dozens of programming languages, from Ada to Turing and everything in between (including C, C++, Java, and Perl), this book is a truly in-depth guide to how code is compiled (or interpreted) and executed on computer hardware. Early chapters tend to be slightly more theoretical (with coverage of regular expressions and context-free grammars) and will be most valuable to the computer science student, but much of this book is accessible to anyone seeking to widen their knowledge (especially since recent standards surrounding XML make use of some of the same vocabulary presented here).
The book has a comprehensive discussion of compilation and linking, as well as how data types are implemented in memory. Sections on functional and logical programming (illustrated with Scheme and Prolog, which are often used in AI research) can expand your understanding of how programming languages work. Final sections on the advantages--and complexities--of concurrent processing, plus a nice treatment of code optimization techniques, round out the text here. Each chapter provides numerous exercises, so you can try out the ideas on your own.
Students will benefit from the practical examples here, drawn from a wide range of languages. If you are a self-taught developer, the very approachable tutorial can give you perspective on the formal definitions of many computer languages, which can help you master new ones more effectively. --Richard Dragan
Topics covered: A survey of today's programming languages, compilation vs. interpretation, the compilation process, regular expression and context-free grammars, scanners and parsers, names, scopes and bindings, scope rules, overloading, semantic analysis, introduction to computer architecture, representing data, instruction sets, 680x0 and MIPs architectures, control flow and expression evaluation, iteration and recursion, data types, type checking, records, arrays, strings, sets, pointers, lists, file I/O, subroutines, calling sequences and parameter passing, exception handling, coroutines, compile back-end processing, code generation, linking, object-oriented programming basics, encapsulation and inheritance, late binding, multiple inheritance, functional and logical languages, Scheme and Prolog, programming with concurrency, shared memory and message passing, and code optimization techniques.
Customer Reviews:
Average Customer Rating:
Required Reading for Debugging and Memory Dump Analysis
Customer Rating:
Every debugging engineer needs to know how the code is interpreted or compiled. Debugging complex problems or doing memory analysis on general-purpose operating systems often requires understanding the syntax and semantics of several programming languages and their run-time support. The knowledge of optimization techniques is also important for low-level debugging when the source code is not available. The following book provides an overview of all important concepts and discusses almost 50 languages. I read the first edition 6 years ago and I liked it so much that I'm now reading the third edition from cover to cover.
Thanks, Dmitry Vostokov Founder of DumpAnalysis Portal Editor-in-Chief of Debugged! MZ/PE magazine
Excellent book, but will not do the intended job
Customer Rating:
I enjoy the book very much. The author gives an over all introduction to the basics of the programming languages. It does not, however, dig deep into any specific area. To master in a specialized subject, one will have to seek help from other books.
As the author has stated, to learn all the subjects the book is covering, one will have to spend years (taking different courses in computer science). This book has include all the material to give an overall view of the big picture and the students are suppose to learn the material in 2 semesters.
I personally tend to think that the book is better suited for the experienced programmer for the reviewing purposes. Students that never have real world experience probably will feel the book to be very dry.
Solid introduction to programming language concepts
Customer Rating:
This book offers a good introduction to basic programming language concepts: scanning/lexical analysis, parsing, semantic analysis, and several other compilation phases. It covers functional languages as well. It's easy to follow too.
Good, not recommended for newbies on their own
Customer Rating:
I bought this book hoping for a thorough yet pragmatic guide to teach myself from scratch how to write the front half or so of a compiler. I don't recommend this book for that intent. It's just too high level to be the sole source of instruction.
Chapter two dedicates 9-10 pages for scanning. I'm not looking for endless checklists of minutia, but in that 10 pages why spend time on optimizing a DFA? Is that pragmatic?
About 30 pages of chapter two are spent on parsing, and a decent chunk of that is used for figures. To me that speaks of a text intended to accompany an oral presentation. I have no access to such a lecture -- just the book.
The rest of the book covers many many subjects. I look forward to using Programming Language Pragmatics as a reference in the future. But not for teaching oneself to write the front half of a compiler.
Incredible knowledge in a fairly small book.
Customer Rating:
Programming Language Pragmatics 2nd Edition (PLP2e) is a fantastic book that covers a great deal of information. It starts with explaining lexing and parsing, and then goes into scope, target machine instructions, control flow, data structures, a number of paradigms, and building a runnable program. It touches on pretty much every aspect of computer programming, and with deep and insightful knowledge.
While it's not as specific as some other books (language specific references, compiler construction texts, etc), it is a great beginning and reference for a wide range of topics. The bibliography of this book is incredible. I have marked a large number of papers/books from the bib that I now want to read in full.
The bonus information on the CD is also very good, including all the source code from the book, extra sections, and links to other resources.