{Begin Chapter The LOOPS Manual} {Title The LOOPS Manual} {Text by Daniel G. Bobrow (Xerox PARC) & Mark Stefik (Xerox PARC) {note edited version of Bobrow, D. G., Stefik, M. J. The Loops Manual (Preliminary Version). Knowledge-based VLSI Design Group Technical Report KB-VLSI-81-13. August 1982.} {it Abstract:} LOOPS adds data, object, and rule oriented programming to the procedure oriented programing of Interlisp. In object oriented programming, behavior is determined by responses of instances of classes to messages sent between these objects, with no direct access to the internal structure of an object. This approach makes it convenient to define program interfaces in terms of message protocols. Data oriented programming is a dual of object oriented programming, where behavior can occur as a side effect of direct access to (permanent) object state. This makes it easy to write programs which monitor the behavior of other programs. Rule oriented programming is an alternative to programming in LISP. Programs in this paradigm are organized around recursively composable sets of pattern-action rules for use in expert system design. Rules make it convenient for describing flexible responses to a wide range of events. LOOPS is integrated into Interlisp, and thus provides access to the standard procedure oriented programming of Lisp, and use of the extensive environmental support of the Interlisp-D system Our experience suggests that programs are easier to build in a language when there is an available paradigm that matches the structure of the problem. The paradigms described here offer distinct ways of partitioning the organization of a program, as well as distinct ways of viewing the significance of side effects. LOOPS provides all these paradigms within a single environment. This manual is intended as the primary documentation for users of LOOPS. It describes the concepts and the programming facilities, and gives examples and scenarios for using LOOPS. {Include Introduction} {Include Overview} {Include Objects} {Include ObjectVars} {Include ActiveValues} {Include CombiningMethods} {Include InstanceCreation} {Include CompositeObjects} {Include KB} {Include RulesIntro} {Include RulesLanguage} {Include RulesUse} {Include UsingLOOPS} {Include Kernal} {Include LOOPSandInterlisp} }{End Chapter The LOOPS Manual}