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 user interface development
tools, like those provided with many modern compilers including Microsoft Visual C++. Both types of
systems certainly include highly visual components, but they are more graphics applications and template
generators than actual programming languages.