Executable Graphics: page 00
I. AN ENVIRONMENT FOR EXECUTING GRAPHICS
The necessary precondition for executable graphics is an agile graphics editor
with certain capabilities. Figure 1. shows a model of the user in such an
environment. Objects can be placed in attention and manipulated; one of the
manipulations is execution, in which case the result of evaluation is returned
at the cursor.
Figure 1. Model of user on handPAM
handPAM: A Graphic Structure Editor
The PAM system as a whole was designed for the agile manipulation of
first manually, and then, later, programmatically. PAM
stands for visual PAttern Manipulation. handPAM is the aspect of the system
which allows the user to get his hands on the images for manual manipulation.
The handPAM environment offers a static display (it doesn't scroll) with
discretionary execution (objects are first created simply as visual entities,
and then later submitted for execution).
Objects on the display follow LISP structure
either atomic or tree
structured. This structure for text-graphic images was chosen because it most
directly satisfies the needs of manual manipulation. That is, through his
initial concern with manual manipulation, the user soon finds that the
selective creation, moving and erasing of text-graphic objects necessitates
some way of structuring complex objects and their parts. Trees provide a
simple and obvious way to structure visual objects, e.g.
Complex objects with such a tree structure are called text-graphic patterns.
handPAM is defined by a function called handle, and is actually a
generalization of Warren Teitelman's LISP editor to text-graphic patterns on a
static display (Teitelman credits Peter Deutsch for the original idea of a
structure editor [Teitleman78]). Thanks to the simplicity and power of LISP
functions and structures, some of the ambiguities of text-graphic manipulators
[Sutherland65, Futrelle78] are clarified, in particular, Sutherland's
'Structure of Drawings Problem'. handPAM is described in more detail in
[Lakin80a,80b,81,83]. As mentioned above, among the editor operations
available on the 'current form' is execution, thus setting the stage for part