 | Planner programming language: Encyclopedia II - Planner programming language - Control Structure Controversy
Planner programming language - Control Structure Controversy
However, 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.
Planner programming language - 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.)
Planner programming language - Hairy control structure
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 Gerry 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.
Planner programming language - 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.
Other related archives1969, Actor model, Alain Colmerauer, Artificial intelligence, Bob Kowalski, Carl Hewitt, Denotational semantics, Domain-specific programming languages, Gerry Sussman, Indeterminacy in computation, Interlisp, John McCarthy, Logic programming languages, MIT, Marvin Minsky, Peter Landin, Prolog, Re-invocable Continuations, Robotics, SHRDLU, SRI, Scientific Community Metaphor, Seymour Papert, Terry Winograd, Theorem prover languages, University of Edinburgh, artificial intelligence, backtracking, controversy, coroutines, iteration, logic programming, mathematical logic, parallelism, programming language, recursion
 Adapted from the Wikipedia article "Control Structure Controversy", under the G.N U Free Docmentation License. Please also see http://en.wikipedia.org/wiki |