"The purpose of computing is insight, not numbers", Richard Hamming (1962)
The purpose of visualization is to render visible that which is not and thereby make it more understandable.
Visualization consists of the binding (or mapping) of data to representations
that can be perceived. The types of bindings can be visual, auditory, tactile,
or a combination of these.
The goal is the systematic generation of visual representations, given a
description of all the important data characteristics and the specification
of the user's interpretation aims. The interpretation aims define what characteristics
of the data, or relations between data variables, the user is interested
in analyzing by means of visual representation.
astronomy
physics
chemistry
molecular biology
meteorology
geosciences
anthropology
space exploration
aviation
medicine
architecture
industrial design
etc.
program visualization (a.k.a. software visualization)
algorithm animation (s.b.k.a. algorithm visualization)
Algorithm animation consists of producing animated visualizations of
algorithms, usually during program execution.
Very impressive results have been achieved.
Algorithm animation work has contributed to many aspects of program visualization.
Most algorithm animation systems are confined to one programming language,
which usually is the same as the language used to write the animation system.
Most algorithm animation systems can be used for purposes other than animating
algorithms, but what they can do generally is limited to what can be produced
by calls to animation routines in a program being animated.
Teaching
Evaluating Algorithms
Improving Algorithms
There are many algorithm animation systems.
They differ widely in capability, techniques, and applicability. Many are
devoted to specific kinds of algorithms.
Milestones in algorithm animation:
1966 L[6] Ken Knowlton, Bell Telephone Laboratories Animation of linked-list language 1981 "Sorting our Sorting" Ronald Baecker, University of Toronto 16mm color and sound movie 1984 Balsa Marc Brown, Brown University Full-fledged algorithm animation system 1988 UW Illustrating Compiler Robert Henry, University of Washington Automatic insertion of animation code during compilation 1990 Tango John Stasko, Brown University Full-fledged algorithm animation system 1991 Zeus Mark Brown, Digital SRC Successor to Balsa 1993 Polka John Stasko, Georgia Tech Extension of Tango to animate parallel computation
Most algorithm animation systems have libraries of animation routines
and interface support.
Most algorithm animation systems require manual insertion of calls to animation
routines in program implementing the algorithm.
A notable exception is the UW Illustrating compiler, which automatically
detects some kinds of algorithms and generates calls to animation routines
in the compiled code.
In the case of manual insertion, the person doing the insertion must know:
the programming language used
the algorithm to be visualized
the way the algorithm is expressed in the program
the animation routines
It often is necessary to write animation routines specific to the algorithm.
Writing a good algorithm animation requires a lot of knowledge and work.
Program visualization consists of producing animated views of program
executions.
Very impressive results have been achieved.
It is not limited to algorithms or activities that are evident in the source-code
for the program. tI may include activity in the compiled code, the run-time
system, data, and even the underlying hardware.
Most program visualization systems are confined to one programming language,
which usually is the same as the language used to write the visualization
system.
Some program visualization systems can be used for algorithm animation.
Debugging
Evaluating and improving program performance
Evaluating and reducing resource utilization
Evaluation of algorithms in the context of complete programs and real data
Understanding program behavior
Teaching
There are many program visualization systems.
Like algorithm animation systems, they differ widely in capability, techniques,
and applicability. Their nature is more diverse than algorithm animation
systems, however.
Many visual programming environmentshave program visualization components.
These often are difficult to separate from other facilities.
One of the most difficult aspects of program visualization is getting
the necessary data for visualization. It generally is much harder than for
algorithm animation.
The aspect of program behavior to be visualized must be identified.
A suitable visual representation for the behavior must be found.
The effects of the visualization on the behavior of the program being visualized
must be considered.
Limited screen space often creates problems in presenting information from
real programs.