Languages such as
Prograph, VEE, and Simulink have been used to develop hundreds of real-world
industrial-strength applications by thousands of developers. Today
languages such as LabVIEW and Yahoo Pipes continue to provide increased
functionality and speed of development over textual languages in their
respective domains. The visual languages above all implement the
dataflow model of programming. This reseach is an attempt to
define the common characteristics of these languauges, we call
Controlled Dataflow Languages(CDLs) and to develop
a formal theory by which such languages can be described, analyzed, and
developed.
Some related publications:
S. Gauvin, P.T. Cox,
Controlled Dataflow Languauges,
ACM Symposium on Practical Aspects of Declarative Languages, (2009) (submitted).
S. Gauvin,
Explicit Control Structures for Visual Dataflow Programming Languauges,
Dalhousie Computer Science In-House Conference (2007).
Exception Handling in Visual Dataflow Languages
The ability to handle execptional circumstances during execution is a common
feature in today's modern programming languages and one that has been largly
ignored in CDLs. The issue is twofold: first, the computing model of dataflow
complicates the traditional exception handling mechanism, secondly, the
visual nature of dataflow makes the representation of exceptions and their
handlers difficult to express elegantly. This research seeks to address these
two issues.
Some related publications:
S. Gauvin,
Control Structure Design for Visual Dataflow,
Dalhousie University: Technical Report (2006).
S. Gauvin, T. Smedley, T. Cox,
Towards Control Flow Annotations in Visual Data Flow Programming Languages,
International Conference on Visual Languages and Computing, San Fransciso 2004.
S. Gauvin, P.T. Cox,
Exceptions in Visual Data Flow Programming Languages,
International Conference on Visual Languages and Computing, Miami, September 24-26, (2003).
Parallel Programming with Visual Dataflow Languages
Although dataflow is inherently a parallel computing model visual
dataflow languages have not supported parallel programming directly.
Automatic parallelism detection is an option, however, in many cases
simple choices by programmers to sparringly use parallelism can
be of great benefit. In this research we explore means by which we can
include explicit parallel contructs that give programmers control
over their visual dataflow programs.
Some related publications:
S. Gauvin, P.T. Cox, A. Rau-Chaplin,
Adding Parallelism to Visual Data Flow Programs,
ACM Symposium on Software Visualization (ICSE) (2005).
S. Gauvin, P.T. Cox, A. Rau-Chaplin,
Parallel Programming with Visual Data Flow Programming Languages,
Dalhousie University Technical Report (2004).
ReactoGraph: A Visual Dataflow Language for User Interface Design
ReactoGraph was the result of asking the question: "can we combine visual programming
and visual interfaces in a way to reduce the cognitive load associated with
the non-visual representation of an interface element's behavior?" Called the
Gulf of Connectivity we showed how the behavior, expressed as a textual
program, was visually disconnected to the visual element that it defined. By
visually attaching behaviors to interface elements we can reduce this gulf
with the result that the element's behavior is more easily understood and
programmed.
ReactoGraph consisted of combining following techniques:
asynchronous messaging-passing for user event processing
Some publications that relate to ReactoGraph:
S. Gauvin, T. Smedley,
Reduction of Cognitive Load Through the Addition of High-Level Semantics to Reactograph,
IEEE Symposium on Human-Centric Computing, (2004).
S. Gauvin,
ReactoGraph: A Visual Language for the Development of User Interfaces,
Master's Thesis (2003).
S. Gauvin,
Reactant: An Interaction Technique for Unifying the Structural and Behavioral Definition of User Interfaces,
Dalhousie University Technical Report, 2003.
S. Gauvin, T. Smedley,
Visual Object-Oriented Reactive Programming with Reactors,
Dalhousie University Technical Report, (2003).
S. Gauvin, T. Smedley,
Concrete Programming with Reactive Objects,
IEEE Symposium on Human-Centric Computing: End-User Programming, (2002).
Vivid: A Software Framework for Controlled Dataflow Languages
The Vivid Framework is a component based software framework designed for the development of
visual programming languages. The framework implements visual language elements as components. This
allows elements to be quickly mixed and matched by the language developer during design. The
framework is being developed in Java and uses JavaBeans as a component model.
A programming language is sometimes the best solution to provide user
access to functionality of complex systems that need to be customized
beyond the capabilities of wizards and where macros, decision branching,
and iteration are required. Using Vivid a complex system that needs a
programming interface can be made simpler for users by taking advantage
of the simplicity of a visual dataflow programming language over
conventional textual programming languages. See and example of
Insertion Sort
using a procedural (right) vs. functional (left) approach.
Some example areas where visual languages can be used as interfaces
with Vivid are:
Shell Scripting
AppleScript on OSX
JavaScript of Web 2.0 Applications
Developing Mobile Applications
2D and 3D Animation System
Photoshop Graphics Processing Macros
Visual Basic Document Processing
MPI or OpenMP for High Performance Computing
Some publications that relate to Vivid:
S. Gauvin, O. Banyasad,
Holophrasting, Transparency, and Automatic Layout Applied to Control Structures for Visual Dataflow Programming Languauges,
ACM Symposium on Software Visualization (2006).
S. Gauvin,
Control Structure Design for Visual Dataflow,
Dalhousie University: Technical Report (2006).
S. Gauvin, T. Smedley, T. Cox,
Towards Control Flow Annotations in Visual Data Flow Programming Languages,
International Conference on Visual Languages and Computing, San Fransciso 2004.
S. Gauvin, T. Smedley,
Component Framework for Visual Programming Language Design,
International Conference on Software Engineering Research and Practice, (2003).
S. Gauvin, T. Smedley,
Vivid: A Framework for Creating Visual Programming Languages,
12th International Conference on Intelligent and Adaptive Systems and Software Engineering, (2003).
The DVM is a virtual machine used to execute code of visual dataflow
languages such as those developed with Vivid. It is written in
C and designed to run on Linux, Windows and MacOSX. It uses an object based
interpreter and an XML representation of source code.
This project is presently in the early research stage and is a work in
progress.
Some publications that relate to the DVM:
S. Gauvin,
A Model for a Class of Declarative Languages and its Implementation,
This describes our computational model and how it was used to construct a virtual machine.
(in progress).
S. Gauvin,
Representing Executable Visual Data Flow Programs in XML,
A paper describing the use of XML for serialization of dataflow programs in the DVM.
(in progress).
S. Gauvin,
A Dataflow Virtual Machine for Visual Programming of Medium-Grained Parallel Systems,
A discussion and experiements of using the DVM on parallel architecture over MPI and OpenMP libraries.
(in progress).
Prograph is a pioneering step in the development of visual programming. It was the first and
only commercially available general purpose VPL. It sports a full language, primitive OS access,
GUI builder, Application Framework, OOP, interactive debugger and compiler and runs on
Windows and Macintosh OSs. Although no longer commercially supported you can still get a
version for Windows from here:
Perhaps the least known and most advanced desktop user friendly operating system available today.
The Linux people could learn a few things from this OS to make Linux far more usable for the
average person.