Executable Graphics


The use of pictorial forms as instructions to a computer has long been a quest in computer graphics. However, a formalism for describing visual computation has been lacking. This paper proposes the notion of "executable graphics" as a framework for such work. The basis of the framework is the ideas and environment of LISP, extending computing with symbolic expressions to computing with text-graphic forms. The function of the framework is to provide a tool for thinking about the appearance of programming notations.

The paper has four parts. In PART I a special graphics editor is described. Before examples of executable graphics can be presented, an environment is needed within which it is even possible to execute graphics. PART II offers two examples of executable graphics, one of which runs in a graphic-LISP environment at the Stanford Artificial Intelligence Lab. Next in PART III the computing with text-graphic forms formalism for executable graphics is described. The formalism is embodied in the PAM programming language, PAM standing for visual PAttern Manipulating. Finally in PART IV, PAM is used to re-examine the examples from part I and implementations are defined.

An experimental version of the PAM system has been implemented in MACLISP at the Stanford AI Lab. The first three Levels of PAM (handPAM) have been built in Smalltalk at the Xerox Palo Alto Research Center. A complete Franz LISP implementation is now in progress at the Rehab R&D Center.

Key words and phrases: visual programming languages, graphical programming languages, LISP, text-graphic objects, man-machine interface, executable graphics.


A Word about Terms
A Taxonomy for Text-Graphic Objects

I. An Environment for Executing Graphics
handPAM: A Graphic Structure Editor

II. Examples of Executable Graphics
CHARGOL, A Chinese Character Language

III. Computing with Text-Graphic Forms
A Structure for Text-Graphic Objects
The Need for More Graphical Representations

IV. Defining Executable Graphics
VennLISP Interpreter
CHARGOL Interpreter
In Conclusion: Visual FORTRAN


Introduction: A Word about Terms

An increasing number of researchers are undertaking work in the area which this author calls "executable graphics". Already there are almost as many different terms for the area as there are researchers in it. The issue of terminology is worth a brief discussion; words often lead the mind, starting people thinking in certain ways. How a new field is conceptualized determines much of what will be found in within that field.

"Executable Graphics" expresses the opinion of the author as to what is or should be the nature of the field: graphics which can be executed. This orientation says: start with the visual richness of objects from graphic design and then find ways to make them executable! This orientation is a prescription to look at any visual object as if it could be executed (imagine there is an intrepreter for it), and it puts the burden on computer science to deal with the variety of images in the applied arts. Executable graphics is quite different from starting with a programming language and then trying to make it visual.

For contrast, here is a brief survey of other terms now in use and their possible disadvantages:

`visual programming'      [MacDonald82]
Could imply that the languages we have now are NOT visual, whereas they are. Traditional alpha-numeric characters are still visual objects on the screen (text is a kind of graphics, see taxonomy below).

`intrinsically graphical language'      [Futrelle78]
Again, contains the hidden assertion that text is not a kind of graphics: "... pictorial information does not map onto code in any obvious way," [Futrelle78]. Also the phrase is a little cumbersome (although Futrelle suggests 'IGL' as an acronym).

`computing with text-graphic forms'      [Lakin80c]
Accurate but too cumbersome.

`graphical programming language'      [Cardelli82]
Ambiguous, could be a textual language for graphics programming.

A Taxonomy * for Text-Graphic Objects

A text-graphic object is either a line or a pattern

A line is a drawline or a character or a textline

A drawline is a vector chain drawn through one or more locations

A character is one or more drawlines

A textline is one or more characters

A pattern is a group of none or more lines and/or patterns

* (or an "ontology" if you like, since an ontology is just a taxonomy with an attitude)

Return to papers list

Submitted to SIGGRAPH '83, Minneapolis, Minnesota

(C) Copyright 1982, 1995 PGC