Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Introduction to the theory of programming languages
Meyer B., Prentice-Hall, Inc., Upper Saddle River, NJ, 1990. Type: Book (9780134985107)
Date Reviewed: Jun 1 1991

Programming language theory is an unusual case in the domain of theoretical computer science, being an almost perfect example of the kind of bridges that can exist between theory and practice by going from the realm of the very abstract mathematical concepts of semantics to their practical implications in software engineering. Moreover, programming languages are so central to computer science that one could almost assert that system design amounts to programming language design. Every user or program interface is defined by a small language, whether concrete, as in button clicks or shell commands, or abstract, as in module specifications. The approach taken here is a gentle introduction, at the undergraduate level, to the various facets of this fascinating domain, presenting the major contributions and their implications for a better understanding and mastery of programs.

The first two chapters present the basic prerequisites, mainly in set theory, for comprehension of the material to come. The presentation is straightforward, but needs to be at least skimmed over, since some of the notation is unusual. The notion of syntax is the subject of chapter 3, where a case is presented for the need of a more abstract syntax and a precise definition of static semantics.

The main part of the book is dedicated entirely to semantics. A global presentation of the different approaches is given in chapter 4 where, besides the denotational and axiomatic semantics covered at length in the subsequent chapters, the notions of attribute grammar, operational semantics, and translational semantics (a variant on operational semantics) are rapidly sketched.

Denotational semantics is covered in the next three chapters. Chapter 5 gives the basic definitions related to the lambda calculus, the core of the denotational framework. The complete description of the simple language Graal, Great Relief After Ada Lessons, is given in chapter 6, while chapter 7 gives extensions to other programming language features such as arrays and input/output. The theoretical basis for recursive domain equations and fix point function definitions is the subject of chapter 8, which takes an unusual approach. Instead of introducing the classical continuous functions on complete partial orders, the author uses stable partial functions on sets.

Axiomatic semantics and Dijkstra’s weakest preconditions are fully covered in the penultimate chapter. Meyer emphasizes the practical aspects of this framework for program design, in particular via the notions of loop invariants, assertions, and contracts between specifications and implementations. The last chapter shows the consistency of the axiomatic semantics of Graal with respect to its denotational semantics.

The book is an almost complete survey of programming language theory. It covers most of the important aspects, mentioning both theoretical and practical implications. The pace is about right and the author gives good intuitive discussions of some of the more advanced concepts, such as fix points. Unfortunately, the book never mentions Plotkin’s elegant notation for natural semantics, or structured operational semantics, which is widely used, especially in research papers. Meyer’s unusual notation and mathematical framework might hinder the subsequent reading of more classical papers. I was not surprised that a significant number of programming examples are given in Eiffel, the object-oriented language designed by Meyer.

Each chapter ends with a bibliographic note and a series of exercises without solutions, making the book appropriate as a textbook. The book includes an extensive set of references and a thorough index that lists even the most uncommon symbols. Unfortunately, it also contains a lot of typographical errors that, while they are easy for the knowledgeable reader to spot, could puzzle newcomers. I hope that these drawbacks will be soon alleviated by a new edition, which will make this book even more enjoyable.

Reviewer:  P. Jouvelot Review #: CR114914
Bookmark and Share
 
General (F.3.0 )
 
 
Semantics Of Programming Languages (F.3.2 )
 
Would you recommend this review?
yes
no
Other reviews under "General": Date
Mathematics in programming
Tunnicliffe W., Prentice-Hall, Inc., Upper Saddle River, NJ, 1991. Type: Book (9780135634042)
Aug 1 1992
Formal methods--mathematics, theory, recipes or what?
Cooke J. The Computer Journal 35(5): 419-423, 1992. Type: Article
Nov 1 1993
A practical theory of programming
Hehner E., Springer-Verlag New York, Inc., New York, NY, 1993. Type: Book (9780387941066)
May 1 1994
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy