[comp.lang.prolog] Pictorial notation

saraswat@roo.uucp (Vijay Saraswat) (05/27/90)

Ken Kahn, Volker Haarslev and I have been working (among other
things) on a completely visual programming notation for the
(possibly concurrent) Herbrand languages (read: logic programming
languages).  A summary of the work is to appear in the IEEE
Workshop on Visual Languages at Skokie, Il. in a few months, and
papers etc are available from Ken. (I will also give a
presentation at ICLP in Jerusalem.) Papers contain back pointers
to a lot of the literature on pictorial notations for logic
programming languages.

Vijay Saraswat

---------
Complete Visualizations of Concurrent Programs and their executions
Ken Kahn
Vijay Saraswat
Xerox PARC
3333 Coyote Hill Road
Palo Alto
Ca 94304
kahn@parc.xerox.com

We present a {\em methodological stance} for what we call a {\em
completely visual} formalism for programs and their executions.
These commitments push programming from its current weakly visual
form, limited by a common commitment to ASCII characters, to an
extreme where pictures, through their appearance---and not their
construction---completely describe programs, data, and states of
execution.  We require that programs, their model of execution,
and traces of their execution be visualized in the same pictorial
terms.  We also require that there be a way of animating the
state transitions in a smooth manner to facilitate the perception
of object coherence and the causal connections between events.

We present a list of advantages which derive from this extreme
stance.  Further advantages ensue from basing a pictorial syntax
only upon topological relations.  The structure of programs can
be captured more effectively by well-designed two-dimensional
layouts than is possible with the essentially one-dimensional
sequences of lines of code.  A well-designed pictorial syntax
enables programmers to visually detect various kinds of program
anomalies. Perhaps more importantly, a means of perceiving the
dynamic structure of a computation greatly aids in understanding
how programs work.  This improved understanding will ease the
task of constructing, debugging, modifying, enhancing, and
documenting programs.

Our methodological commitments are so strong that it is not
obvious that such a pictorial syntax can be constructed for a
general-purpose programming language.  We present a syntax for a
general-purpose concurrent constraint programming language called
\janus, which demonstrates the feasibility and benefits of
complete visualizations.  Our task was greatly facilitated by the
conceptual simplicity of \Janus\ and it is an open question
whether a completely visual syntax can be designed for other
languages, especially large and complex ones.