Visual programming is programming in which more that one dimension is used to convey semantics.
it may use multidimensional objects which are referred to as tokens.
A string of tokens is called visual expression.
When a  programming languages syntax includes visual expressions, the language is called a visual programming language.

When visual expressions are used in a visual environment, the environment is called visual programming environment.

One fallacy to do away with is that which says that VPL's are meant to replace textual languages. This is not entirely true. VPL's however, are meant to make Tl's easier to understand and program.

Concreteness: the opposite of abstractness. this refers to the expression of some aspect of a program using particular instances. Instances that can be seen and manipulated.
This runs also into the principle of directness, which means a small distance between goal and actions. the user's actions are preformed directly on the object. Objects can be manipulated to specify semantics.

Explicitness
Immediate visual feedback. 

CHIMERA

The domain of chimera is graphical editing.
In "chimera", the programmer demonstrates the desired actions. The programmer is then the end user.
Chimera is aimed at improving accessibility of programming certain kinds of tasks.
Chimera provides a way of generalizing repetitive tasks.
These generalized tasks can then be treated as macros.
The system uses a strip (like a comic strip) to keep a history of actions
To determine how to apply the generalized form of the macro, Chimera uses inference.
Because Chimera provides immediate visual feedback it is classified under liveness level 3.

Concreteness is realized by the immediate feedback mechanism. The effects are on the actual objects.
Semantics are specified by directly manipulating objects to demonstrate the desired results. This satisfies the strategy of directness.

FOrm/3

Form/3 follows the Form-based paradigm.
This is a spreadsheet-like system where the programmer programs by creating a form and specifying its contents.
The programmer programs by placing cells on the form and defining a formula for each cell using a combination of pointing , typing and gesturing (drawing).

A programs calculations are entirely determined by these formulas.
In the picture below, an instance of type box is being specified by graphically sketching it. The specification can be changed by stretching the box. The feedback is immediate and is of liveness level 4.

This environment is geared toward novice/ young programmers whose training haven't emphasized traditional programming languages.

Prograph

Prograph is a data flow visual programming language purported for professionals.
According to the description, prograph provides strong debugging support by 
making use of dynamic visualization techniques.
every time that the programmer makes a change, he/she has to explicitly request redisplay for the new result to be shown. This this cannot be of level four liveness. It is somewhere between level 2 and level 3.
One big plus for data flow Vl is that they are explicit. connections are explicitly shown in a way that surpasses that of other VL systems, as the example below shows.

Cocoa:
This is a rule-based visual programming language. The programmer specifies the rules by demonstrating preconditions and postconditions.
Cocoa liveness is between level 2 and level 3. This is because the programmer has to specifically request a re-run before changes can be seen.

Challenges:

Data abstraction has been slower in coming into VPL's. This is because it is sometimes very difficult to find a way to maintain the characteristics such as correctness and feedback. an example of a system that deals well with data abstraction is the Form/3 system.

Procedural Abstraction:
procedural abstraction is somewhat easier that data abstraction.
Some solutions include allowing the programmer to select, name and iconify a section of a dataflow graph. You can reuse this node somewhere else to specify a function or procedure.

Scaling issues:

How many icons or objects do you need. How many dimensions or relationships are you going to include? As programming languages get larger and larger it becomes more difficult to maintain code with VPL's.
There is a lot of research going on in the areas of representation and language design and implementation.

Specification:
Unlike textual languages, where the only relationship is "next to", the design of a visual programming language has to take into account the number of dimensions and their sematics.
eg. 
Overlaps
touches
to the left of
and even temporal relationships.

Constraint Multiset Grammars:

Cognitive theory:

Since VPLs deal with humans' ability to program, it is important to consider what is known about the cognitive issues of programming. This is what cognitive theory helps.

Thomas Green describes a set of terms describing the structure of a programming language's components as they relate to cognitive issues in programming.