Planner (programming language)

From Wikipedia, the free encyclopedia

Planner (often seen in publications as "PLANNER") is a programming language designed by Carl Hewitt at MIT, and first published in 1969. First subsets such as Micro-Planner and Pico-Planner were implemented and then essentially the whole language was implemented in Popler and derivations such as QA-4, Conniver, QLISP and Ether (see Scientific Community Metaphor) were important tools in Artificial Intelligence research in the 1970's, which influenced commercial developments such as KEE and ART.

Hewitt (then a student of Marvin Minsky, Seymour Papert and Mike Paterson) championed the "procedural embedding of knowledge" in the form of high level procedural plans in contrast to the logical approach pioneered by John McCarthy who advocated expressing knowledge declaratively in mathematical logic for artificial intelligence (AI). This raised a fundamental question: "What is the difference between the procedural and logical approaches?" It took several years to provide an answer to this question.

Contents

[edit] Early history of Planner

According to Hewitt [2006], Planner was the first language to feature procedural plans that were called by pattern-directed invocation using goals and assertions. A subset called Micro-Planner was implemented by Gerry Sussman, Eugene Charniak and Terry Winograd and was used in Winograd's natural-language understanding program SHRDLU, Eugene Charniak's story understanding work, and some other projects. This generated a great deal of excitement in the field of AI. It also generated controversy because it proposed an alternative to the logic approach that had been one of the mainstay paradigms for AI.

Bruce Anderson at the University of Edinburgh implemented a subset of Planner called PICO-PLANNER and Julian Davies at Edinburgh implemented Popler, essentially the whole of Planner. At SRI, Jeff Rulifson, Jan Derksen, and Richard Waldinger developed QA4 which built on the constructs in Planner and introduced a context mechanism to provide modularity for expressions in the data base. Also at SRI, Earl Sacerdoti and Rene Reboh implemented QA4 as an extension of Interlisp, in a language called QLISP which was efficient enough to be used in several applications. Bob Kowalski, who had been one of the principal members of the logic paradigm community, then adapted in collaboration with Alain Colmerauer some theorem proving ideas into a form similar to a subset of Micro Planner called Prolog. Indeed, Hewitt considers Prolog to be largely a reinvention of a subset of Micro Planner, e.g., Micro Planner (unlike Prolog) had the capability to use pattern-directed invocation of procedural plans from assertions as well as goals. But compare Kowalski's paper on the early history of logic programming. Using Prolog, Kowalski hoped to save the logic paradigm as a viable approach to Artificial Intelligence.

[edit] Control structure controversy

As related in Hewitt [2006], computer memories were very small by current standards because they were expensive, being made of iron ferrite cores at that time. So Planner adopted the then common expedient of using backtracking control structures to economize on the use of computer memory. In this way, the computer only had to store one possibility at a time in exploring alternatives.

One implementation decision in Micro Planner had unfortunate consequences. Lisp had adopted the programming pun of identifying NIL, the empty list with logical false (at memory location 0) because testing for 0 was faster than anything else. Because of the pun, testing for NIL was extremely common in Lisp programs. Micro Planner extended this pun also to use NIL as a signal to begin backtracking. In Micro Planner, it was common to write programs to perform some operation on every element of a list by using a loop to process the first element of a list, take the rest of the list, and then jump back to the top of the loop to test if the list was empty. If the list tested empty, then the program would go on to do other things. Such a program never made it to testing the empty list after processing all the elements because when the last element was processed and the rest of the list was taken, NIL was returned as a value. The Micro Planner interpreter took this as the signal to begin backtracking and began undoing all the work of processing the elements of the list! People were dumbfounded.

In this and several other ways, backtracking proved unwieldy helping to fuel the great control structure debate. Hewitt investigated some alternatives in his thesis.

[edit] Control structure characterizations

Using program schemas, Hewitt in collaboration with Mike Paterson proved that recursion is more powerful than iteration and parallelism more powerful than sequential recursion. (He also conjectured that coroutines are more powerful than recursion but couldn't convincingly prove it until recently using a more powerful formalism.)

[edit] Hairy control structure

According to Hewitt [2006], Peter Landin had introduced an even more powerful control structure using his J (for Jump) operator that could perform a nonlocal goto into the middle of a procedure invocation. In fact the J operator could jump back into the middle of a procedure invocation even after it had already returned. Drew McDermott and Gerald Sussman called Landin's concept the "Hairy Control Structure" and used it in the form of a nonlocal goto for the Conniver programming language. Scott Fahlman used Conniver in his planning system for robot construction tasks. This is related to what are now called Re-invocable Continuations.

Difficulties in communication were a root cause of the control structure difficulties.

[edit] Control structures are patterns of passing messages

Hewitt reported: ... we have found that we can do without the paraphernalia of "hairy control structure" (such as possibility lists, non-local gotos, and assignments of values to the internal variables of other procedures in CONNIVER.)... The conventions of ordinary message-passing seem to provide a better structured, more intuitive foundation for constructing the communication systems needed for expert problem-solving modules to cooperate effectively. The Actor model provided the foundation for solving the Artificial Intelligence control structure problem. It took considerable time to develop programming methodologies for the Actor model. Indeed, the implementation of the Scientific Community Metaphor requires sophisticated message passing that is still the subject of research.

[edit] Limitation of mathematical logic

This developed into a controversy about the possibility of using mathematical logic as a programming language. See indeterminacy in computation. The upshot is that the procedural approach has a different mathematical semantics (see denotational semantics) from the semantics of mathematical logic.

[edit] References

  • Carl Hewitt. PLANNER: A Language for Proving Theorems in Robots IJCAI 1969
  • Gerry Sussman and Terry Winograd. Micro-planner Reference Manual AI Memo No, 203, MIT Project MAC, July 1970.
  • Terry Winograd. Procedures as a Representation for Data in a Computer Program for Understanding Natural Language MIT AI TR-235. January 1971.
  • Carl Hewitt. Procedural Embedding of Knowledge In Planner IJCAI 1971.
  • Gerry Sussman, Terry Winograd and Eugene Charniak. Micro-Planner Reference Manual (Update) AI Memo 203A, MIT AI Lab, December 1971
  • Carl Hewitt. Description and Theoretical Analysis (Using Schemata) of Planner, A Language for Proving Theorems and Manipulating Models in a Robot AI Memo No. 251, MIT Project MAC, April 1972.
  • Bruce Anderson. Documentation for LIB PICO-PLANNER School of Artificial Intelligence, Edinburgh University. 1972
  • Bruce Baumgart. Micro-Planner Alternate Reference Manual Stanford AI Lab Operating Note No. 67, April 1972.
  • Eugene Charniak. Toward a Model of Children's Story Comprehension MIT AI TR-266. December 1972.
  • Julian Davies. Popler 1.6 Reference Manual University of Edinburgh, TPU Report No. 1, May 1973.
  • Jeff Rulifson, Jan Derksen, and Richard Waldinger. QA4, A Procedural Calculus for Intuitive Reasoning SRI AI Center Technical Note 73, November 1973.
  • Robert Kowalski Predicate Logic as Programming Language Memo 70, Department of Artificial Intelligence, Edinburgh University. 1973
  • Pat Hayes. Computation and Deduction Mathematical Foundations of Computer Science: Proceedings of Symposium and Summer School, Štrbské Pleso, High Tatras, Czechoslovakia, September 3-8, 1973.
  • Carl Hewitt, Peter Bishop and Richard Steiger. A Universal Modular Actor Formalism for Artificial Intelligence IJCAI 1973.
  • Drew McDermott and Gerry Sussman. The Conniver Reference Manual MIT AI Memo 259A. January 1974.
  • Earl Sacerdoti, et. al., QLISP A Language for the Interactive Development of Complex Systems AFIPS. 1976
  • William Kornfeld and Carl Hewitt. The Scientific Community Metaphor MIT AI Memo 641. January 1981.
  • Carl Hewitt. The Challenge of Open Systems Byte Magazine. April 1985
  • Robert Kowalski. The limitation of logic Proceedings of the 1986 ACM fourteenth annual conference on Computer science.
  • Robert Kowalski. The Early Years of Logic Programming CACM January 1988.
  • Carl Hewitt and Gul Agha. Guarded Horn clause languages: are they deductive and logical? in Artificial Intelligence at MIT, Vol. 2. MIT Press 1991.
  • Carl Hewitt. The repeated demise of logic programming and why it will be reincarnated What Went Wrong and Why: Lessons from AI Research and Applications. Technical Report SS-06-08. AAAI Press. March 2006.

[edit] External links


Preceding: none
Subsequent: Prolog, Scientific Community Metaphor
In other languages