Prev Next Up Home Keys Figs Search New


An Incremental Review of the Book: The Implementation of Prolog

Appeared in Volume 7/1, February 1994

Keywords: implementation.

'The Implementation of Prolog' by Patrice Boizumault
Bart Demoen

This book is a translation of the book 'PROLOG l'implantation', which was written by the same author in French and edited in 1988. So if you know the original version, you will probably be interested in an incremental review. The book says that the present translated volume has been revised and updated since its original publication in French. In reality, this means that there is little difference between the French version and the English version: some renaming has taken place (MICRO_LOG I is now MINI-CPROLOG, MICRO_LOG II is MINI-WAM and MICRO_LOG III is MINI-PROLOG-II), and some chapters have an additional section (e.g. chapter 10 on dif/2 and freeze/2 has an extra section named 'Comparison with SICSTUS Prolog' - sorry for the misspelling: it is also in the book). It is however wrong to expect that the book is up to date: for starters, it doesn't contain any reference more recent than 1989 (and one of the four references to 1989 should actually have been 1988)! From chapter 8 on clause indexing, one would even conclude that nothing has happened in this area since 1986. Moreover, the extra sections are very sketchy: the aforementioned section in chapter 10, is only one page long and contains little information, but it is infinitely more informative than the four sentence extra section in chapter 9. The book is also completely silent about not so recent, but important developments in Prolog implementations, like Aquarius or Parma. Also, there is no information given about Prolog III: this hole in the book was excused in the 1988 version in the preface, but this excuse sounds hollow now.

The English version contains programs in Lisp with some variables and function names still in French. E.g., atoms like 'debord', 'Duboulot', 'LIBRE', 'tete', 'nom' ... appear in the English version: this is not very helpful for the reader who doesn't know French - and if he does, he has little reason to buy this version to replace the old book.

The table of contents of the English version mentions that there is an index on page 301, but unfortunately, the book has only 299 pages, so if you want to know more about 'trimming', you will have to scan through the table of contents and feel lucky that trimming is indeed mentioned there (the table of contents of the French version is also much more detailed), but try this with 'choice point' or 'continuation' and you are in trouble.

My incremental review can make an incremental conclusion: the English version is as worthy a read as the French version, and since the contents of the book haven't changed, the English version is a bit out of date.

The following applies to the English and the French versions alike: throughout the book, I have the feeling that the treatment of the topics is superficial, e.g. the implementation of dif/2 is presented without considering the detail that the proposed method (although correct) might leave dif/2 goals on the frozen goal stack even if the two terms cannot become equal when further instantiated; such a thing puzzles and worries the attentive reader. Chapter 14 on built-in predicates is a non-chapter, as is the conclusion which is a typical example of how sketchily the book covers certain topics: the PSI machine is dealt with in less then 10 sentences, although it is announced as 'the most famous implementation' [of a machine dedicated to the execution of sequential Prolog].

The strong parts of this book are chapter 1 (Unification - in logic, in Prolog and on rational trees), chapter 3 (Improving Prolog control - comparing IC-, MU-, NU- and Prolog II) and the sections which present and compare structure sharing with structure copying. Together with chapter 10 on dif/2 and freeze/2, they make the book worth reading even 5 years after its original publication.

Finally, I cannot resist quoting Jacques Cohen who says on the back cover of the book: 'This is an excellent text directed at knowledgeable Lisp programmers who want to learn the details about the implementation of Prolog'. I hadn't thought of that.

Bart Demoen
KUL, Dept. of Computing Science
Celestijnenlaan 200A
B 3001 Heverlee, Belgium
Email: Bart.Demoen@cs.kuleuven.ac.be
Prev Next Up Home Keys Figs Search New