Book review: A Theory of Objects by Martin Abadi and Luca Cardelli (Springer-Verlag, 1996): Series--Monographs in Computer Science

When a new programming language is designed it is sometimes useful to have a formal languag e in which we can describe with mathematical rigor what a program in that language is doing . This mathematical language can be thought of as a semantics of the programming language . If the semantics is sufficiently well developed we can use it to prove that a program does what we thin k it does. No actual programmer ever does this, but it is comforting to know that it can be done . There are several different mathematical languages for giving the semantics of imperative programming languages (e .g . C or Pascal) . Control flow graphs, or logical invariants can be used fo r this . There are also several different A—calculi for describing the semantics of functional program ming languages (e .g . Lisp or ML) . Likewise we can use classical logic and resolution as a semantics of logical languages (e .g . Prolog) . However, there is no mathematical language for discussing th e semantics of object oriented programming languages (e .g . Java or Smalltalk) that is fully satisfying . The goal of this book is to fill this void, or at least to make a start . The authors come from the functional programming and formal semantics side of the field , rather than the software engineering side, therefore they propose a calculus that is based on th e A—calculus, rather than any actual programming language in use . However, in this new calculus , which they call the s—calculus, instead of functions being primitive, objects are . The authors produce a family of c—calculi in order to hopefully represent more and more complicated objec t oriented techniques and structures .