FREE Shipping. Customers who viewed this item also viewed. Page 1 of 1 Start over Page 1 of 1. The Craft of Prolog Logic Programming. Richard A. Leon Sterling. The Practice of Prolog Logic Programming.
Ivan Bratko. Logic Programming with Prolog. Tell the Publisher! I'd like to read this book on Kindle Don't have a Kindle? Share your thoughts with other customers. Write a customer review. Showing of 5 reviews. Top Reviews Most recent Top Reviews. There was a problem filtering reviews right now. Please try again later. Format: Paperback Verified Purchase.
I am of two minds about this book. On the one hand, it suggests surprisingly diverse applications of the language, some of which I never would have imagined, taking advantage of the language's unusual features.
My main complaint is with the explicit source code, which is supplied without comments and where variables are often represented by obscure single letters rather than descriptive names, as would normally be the case with textbook examples. If you don't mind this shortcoming, I would recommend this book to anybody interested in Prolog. One person found this helpful. Lovely and easily readable book on prolog. This is now my goto recommendation for people curious about prolog. Clause and Effect delivers well on promise to get professional programer up to speed on writing practical Prolog.
Academic Press published this book in and reprinted it with corrections in In , the copyright reverted to the authors. We thank Elsevier, the. Prolog, devised by Alain Colmerauer, is a logic programming language. Logic programming is a new discipline which lends a unifying view to many domains of .
Format: Paperback. I really like this book.
It serves roughly the same purpose for the Prolog language that "The Little Schemer" serves for Scheme. It presents the Prolog language through a series of examples called "worksheets" here , each about a page long. In each example the author walks through the solution of some problem, discussing the issues that come up. Later in the book, the examples give way to larger "case studies" of five or ten pages each, in which a more substantial problem is tackled. In my opinion, this is a very effective way to teach a language like Prolog, and I now understand a lot about the language I didn't understand before.
Prolog is one of those languages that can't be learned simply by memorizing new syntax and referring to what you already know, because its execution model logic programming using unification and backtracking is so drastically different from that of most other languages. Therefore, one needs to walk through a lot of examples slowly, and this is where "Clause and Effect" really shines. I was particularly impressed at how trivially easy it is to do symbolic algebra in Prolog; I've written programs of this type in Scheme, but the Prolog versions are much shorter and easier to understand.
This book is not perfect, however, and I can't in good faith give it five stars though I really want to.
There are a fair number of typos scattered through the text the author has an errata sheet on his website. Most of these are obvious, but on occasion I had to spend a lot of time puzzling over whether some bit of code had a typo or not most of the time, there was no typo; it was just my understanding that was deficient.
When in doubt, entering the code into a Prolog interpreter works wonders; I really wish the author would make a zip file of all the code examples available for download. A more significant problem than the typos is that the author writes in a very condensed style and either doesn't explain the meaning of some critical terms at all like tail recursion or doesn't explain them well enough like backtracking.
Coming from a functional programming background, and having already read a book on Prolog, I could fill in the gaps without much trouble, but many readers will have a harder time than I did. For these readers, I recommend that they use this book as a complement to a book with a more extended discussion of the language; the author's book "Programming in Prolog" is a fine choice for this.
I heartily recommend this book for this purpose; it will stretch your mind and make you a better programmer. For those who have experience in logic programming, either with Prolog or some other language, such as Lisp, or even a high-level symbolic programming language like Mathematica or Maple, this book could serve as a first course or a summary of Prolog programming. Research in logic programming is still an active area, and the approach taken in logic programming languages seems more natural from the standpoint of mathematical predicate logic. The author, in this short book, gives the reader an appreciation of Prolog and the philosophy and constructions behind logic programming.
Many examples are employed that illustrate how to code in Prolog and how useful it can be in real-world applications. In the first chapter, the author gives some justification for programming in Prolog, such as its symbol manipulation capability, automatic backtracking, the view that data structures and programs are of the same form, and the relational form of clauses.
The syntax of Prolog is then discussed, and examples given of the three kinds of terms in Prolog. Readers with some background in category theory will appreciate the discussion more, as the author does employ some of this in the discussion, for example the view of addition as being a functor of a term. Terms are drawn in tree form in this chapter and throughout the book.
The author then characterizes a Prolog program as a set of procedures, with each defining a predicate, and consisting of one or more Horn clauses. Unification of terms is discussed as a basic operation that determines when two clauses can be made equivalent by a substitution of variables. The execution of a program is viewed as a querying of the clauses, and the goal or e nd of the program is a proof that the goal is true.
Data structures in Prolog are discussed in chapter 2 as generalizations of programs using compound terms instead of just constants and variables. Lists are defined and their syntax discussed, along with dot and bracket notation. The implementation of simple arithmetic in Prolog is discussed. Several effective examples are given to illustrate arithmetic and list manipulation in Prolog.
Mappings, which are relations between two data structures, are the topic of chapter 3, and the author gives many examples illustrating how it is used to compose Prolog programs and how they act an both lists and more general trees. The built-in predicate "cut" is discussed in the next chapter as a predicate to allow backtracking control of the program.
The author gives many examples illustrating the problems involved with the use of "cut". Difference structures are discussed in chapter 5 as a tool to simplify and increase program efficiency. A generalization of the idea of an accumulator, they allow one to work with "holes" in data structures during actual program execution.
Visual Prolog is especially well suited for dealing with complex knowledge. By utilizing the powerful object system you are able to architect your application very rigidly and at the same time benefiting from very loose coupling. This will enable you to reduce development and even more maintenance cost. Video Tutorials. Getting Started Get started with Visual Prolog. Latest Version Visual Prolog 9 build Personal Edition Download the free Personal Edition.