Visual programming tackles the problem of bringing computing facilities to people who do not have extensive computer training by using visual (i.e., nonlinear) representations in the programming process. In this paper, we first define visual programming and briefly discuss its many facets. The purpose is to lay a conceptual background so that common understanding can be established and various aspects of visual programming can be focused on and examined. We then concentrate on visual programming languages, namely, languages that enable the users to 'program' with visual expressions. Examples are used to illustrate three fundamentally different approaches: diagrammatic, iconic, and form based. Finally, we show that FORMAL, a system developed and implemented at the IBM Los Angeles Scientific Center, not only captures the spirit of visual programming languages but also has the capability to automate a wide variety of common data processing applications.