Delivery & Return:Free shipping on all orders over $50
Estimated Delivery:7-15 days international
People:17 people viewing this product right now!
Easy Returns:Enjoy hassle-free returns within 30 days!
Payment:Secure checkout
SKU:45983478
This textbook is an introduction to denotational semantics and its applications to programming languages. Dr Allison emphasizes a practical approach and the student is encouraged to write and test denotational definitions. The first section is devoted to the mathematical foundations of the subject and sufficient detail is given to illustrate the fundamental problems. The remainder of the book covers the use of denotational semantics to describe sequential programming languages such as Algol, Pascal and C. Throughout, numerous exercises, usually in Pascal, will help the student practise writing definitions and carry out simple applications. The book culminates in discussing an executable semantics of the logic-programming language Prolog. Being an introduction, advanced undergraduates in computer science and graduates new to the subject will find this a readily accessible account of one of the central topics of computer science.
This book greatest strength, and also its greatest weakness, is its brevity. It is a strength because it quickly gets down to business and presents a collection of techniques and devices for specifying the semantics of programming languages. It is a weakness because it glosses over many details and subtle points, especially when covering the theory of denotational semantics (complete partial orders, domain theory, lambda calculus). In some parts the text reads like underdeveloped lecture notes, not quite ready for a book yet. It gets better in the second half, though, and this is where most of the semantics for language features is presented.The practical treatment of the subject is not as overt as it may seem, judging only the title, but it does include an interpreter, written in Pascal, for the semantics of chapter 5, and another one, written in Algol-68, for the semantics presented in chapter 7. The choice of languages is a consequence of it being more than 20 years old; a functional language like Standard ML, OCaml or Haskell would be a perfect fit for the interpreters. However, the Pascal code should be understandable to any reasonably skilled programmer; the Algol-68 is a bit more of a trouble, but should present no problems for anyone who has familiarity with higher-order functions (like those in the functional languages mentioned before). Another effect of the book's age is the lack of some topics that matured or were developed since the 80's, like monadic semantics and concurrency. But the essentials are there.All in all, it's an interesting little book, but most useful if used together with lengthier, more thorough books like Formal Semantics of Programming Languages, or as supplementary reading in a course.