As the field of VPLs has matured, more and more interest has been focused on creating a robust, standardized
classification for work in the area. Such a classification system not only aids researchers in finding related
work but also provides a baseline with which to compare and evaluate different systems. Some of the
most important names in the field, including Chang, Shu, and Burnett, have worked on identifying the
defining characteristics of the major categories of VPLs [Chang 1987, Shu 1986, Burnett & Baker 1994].
The following presents a summary of the classification scheme discussed below:
1. Purely visual languages
2. Hybrid text and visual systems
3. Programming-by-example systems
4. Constraint-oriented systems
5. Form-based systems
Note that the categories are by no means mutually exclusive. Indeed, many languages can be placed in more
than one category.
The single most important category has to be purely visual languages. Such languages are characterized
by their reliance on visual techniques throughout the programming process. The programmer manipulates
icons or other graphical representations to create a program which is subsequently debugged and executed
in the same visual environment. The program is compiled directly from its visual representation and is
never translated into an interim text-based language. Examples of such completely visual systems include
VIPR, Prograph, and PICT, the first two of which will be discussed in more detail below. In much of the
literature in the field, this category is further subdivided into sections like iconic and non-iconic languages,
object-oriented, functional, and imperative languages [Chang 1987, Burnett & Baker 1994]. However, for
our purposes a slightly larger granularity helps to emphasize the major visually-oriented differences between
various VPLs.
One important subset of VPLs attempts to combine both visual and textual elements. These hybrid
systems include both those in which programs are created visually and then translated into an underlying
high-level textual language and systems which involve the use of graphical elements in an otherwise textual
language. Examples in this category include Rehearsal World and work by Erwig et. al. In the former,
the user trains the system to solve a particular problem by manipulating graphical “actors,” and then the
systems generates a Smalltalk program to implement the solution [Finzer & Gould 1984]. The latter involves
work on developing extensions to languages like C and C++which allow programmers to intersperse their
text code with diagrams [Erwig & Meyer 1995]. For instance, one can define a linked list data structure
textually and then perform an operation like deletion of a node by drawing the steps in the process.
In addition to these two major categories, many VPLs fall into a variety of smaller classifications. For
example, a number of VPLs follow in the footsteps of Pygmalion by allowing the user to create and manipulate
graphical objects with which to “teach” the system how to perform a particular task. Rehearsal World,
described above, fits into this category of programming by example. Some VPLs can trace their lineage
back, in part, to Sutherland’s constraint manipulations in Sketchpad. These constraint-oriented systems
are especially popular for simulation design, in which a programmer models physical objects as objects in
the visual environment which are subject to constraints designed to mimic the behavior of natural laws,
like gravity. Constraint-oriented systems have also found application in the development of graphical user
interfaces. Thinglab and ARK, both primarily simulation VPLs, stand out as quintessential examples of
constraint-based languages [Smith 1986, Borning 1981]. A few VPLs have borrowed their visualization and programming metaphors from spreadsheets. These languages can be classified as form-based VPLs. They
represent programming as altering a group of interconnected cells over time and often allow the programmer
to visualize the execution of a program as a sequence of different cell states which progress through
time [Burnett & Ambler 1992]. Forms/3 is the current incarnation of the progenitor of this type of VPL,
and it will be covered in detail below. It is important to note that in each of the categories mentioned above,
we can find examples of both general-purpose VPLs and languages designed for domain-specific applications.
The field of visual programming has evolved greatly over the last ten years. Continual development and
refinement of languages in the categories discussed above have led to some work which was initially considered
to be part of the field being reclassified as related to but not actually exemplifying visual programming. These
VPL orphans, so to speak, include algorithm animation systems, such as BALSA [Brown & Sedgewick 1984],
which provide interactive graphical displays of executing programs and graphical use