Programming Languages -- The LOOPS Project (1982-1986)

Main Participants: Daniel Bobrow, Sanjay Mittal, Stanley Lanning, and Mark Stefik.

The LOOPS (Lisp Object-Oriented Language) project was started to support development of expert systems project at PARC. We wanted a language that had many of the features of frame languages, such as objects, annotated values, inheritance, and attached procedures. We drew heavily on Smalltalk-80, which was being developed next door.

Bobrow and Stefik had done frame languages before (KRL and UNITS, respectively). KRL was one of the first frame languges ever and established the paradigm. Units was part of a doctoral dissertation, was heavily used at Stanford, and was subsequently developed by Intellicorp to become KEE.

Loops was a multiple-paradigm extension to Interlisp-D. It had

meters.jpg (801896 bytes)

Loops provided "gauges" that could be used for debugging and for monitoring in simulation programs. Gauges were LOOPS objects. They could be attached  to any value of any object in the system and provide a visual indication of program activity.

As part of developing LOOPS, we developed a one week course about the language and offered it to research colleagues and Xerox  customers. As part of the pedagogy of that course, students developed a program that participated in a simulation game. The program was called Truckin'. On the last day of the course, programs from all of the students were loaded into a single simulation environment (sometimes across multiple machines). The programs competed with each other in the Truckin' simulation world. The event was called a "knowledge competition." For more about this, click on Truckin' under Past Activities

masinter.jpg (45151 bytes)

Loops became part of the XSIS software product for the Lisp machines it was selling. The photograph above shows Larry Masinter and Danny Bobrow manning the booth at one of the AI conferences.

In the 1980s, the Lisp community was fragmented into many subcommunities using language variants -- including MIT (Symbolics) Lisp, Interlisp, T, NIL, and a few others. MIT Lisp had its own object-oriented sublanguage known as Flavors. There was a movement to unify the various lisps with a language known as Common Lisp. With Gregor Kiczales, Ken Kahn and others, we redesigned Loops to create Common Loops for Common Lisp. CommonLoops added polymorphism to method invocation, and unified the "message sending" syntax of LOOPS for method invocation with procedure invocation. It also shed the rule language (good idea) and active values (too bad).  During this process we joined with others from the MIT Lisp community and created a unified object language that was known as CLOS (Common Lisp Object System). This language eventually became part of Common Lisp. loopsppl.jpg (44836 bytes)

 

loopstrio.jpg (64519 bytes) Shown (left to right) are Sanjay Mittal, Mark Stefik, and Daniel Bobrow in around 1983. Mittal focused  on the Loops automatic testing suite and coded much of the Truckin' game. Stefik developed the rule language, composite objects, and much of the system documentation. Bobrow did much of work on active values and the heavy lifting in the system underpinnings. Later, Stan Lanning (not shown) rewrote many portions of the system and developed the official documentation used by XSIS in its product.

Main Papers