I've previously heard of Prolog, Parlog, and the Japanese Fifth Generation Project, but I never knew how exactly they were all related. This post over on LtU clarifies their inter-relationships, and how they developed into Oz. Seeing things in context like this makes me more interested in giving Oz another chance (I've tried to pick it up twice before, and failed to get hooked).
This kind of historical perspective is especially difficult to achieve unless you were paying attention to the field at the time. I'm glad Peter Van Roy shared it in a forum where I was paying attention.
Here's a copy of the text, in case LtU ever loses it for some reason:
If I may add some historical comments regarding Prolog. One of the research problems of the late Japanese Fifth Generation Project (a.k.a. FGCS) was to make a synthesis of the two great families of logic languages: the Prolog family (sequential, using backtracking) and the concurrent logic programming family (Parlog, Concurrent Prolog, FCP, GHC, ...). The FGCS failed completely in this: like water and oil, the two would not mix. A glimmer of success came first with the work of Michael Maher, who in 1987 in a famous paper started the idea that a logical condition (like entailment) could be used to modify control flow. E.g., a program could suspend until a given constraint was *entailed* by the store. The breakthrough then came in 1990 when Vijay Saraswat introduced the concurrent constraint model, with its famous 'ask' and 'tell' operations. (For that he won the ACM Distinguished Dissertation award.) This model gave the foundation that was needed for the synthesis of the two great families.The synthesis was finally achieved in the AKL language, designed by Sverker Janson and Seif Haridi, around 1990-91 (note that they were close on the heels of Saraswat's more theoretical work!). AKL introduced the concept of 'encapsulated search', which allows Prolog-style problem solving within a concurrent environment.
Oz is a direct descendant of AKL and another language called LIFE, designed by Hassan Ait-Kaci in the late 1980's. Oz was designed primarily by Gert Smolka and his students. Unlike AKL and LIFE, Oz breaks with the Prolog tradition: no more Horn clause syntax (a heresy in the Prolog community!), compositional, higher-order, looking much more like a traditional language. Yet, in some sense Oz is still a logic language in the Prolog tradition (and this is now recognized by the Prolog community).
Since then, Oz has been getting steadily simpler and more expressive over the years. See, e.g., Smolka's 1994 article on the Oz kernel language and compare it with chapter 13 of CTM. See, e.g., the concept of 'computation space', invented by Christian Schulte, which crystallizes the idea of encapsulated search into a simple yet very powerful abstraction. The current semantics of Oz is much simpler than before, yet the language is a lot richer.
Posted on October 23, 2003 04:13 PM
More languages articles