In computing, a visual programming language (visual programming system, VPL, or, VPS), also known as diagrammatic programming,[1][2]graphical programming or block coding, is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually.[3] A VPL allows programming with visual expressions, spatial arrangements of text and graphic symbols, used either as elements of syntax or secondary notation. For example, many VPLs are based on the idea of "boxes and arrows", where boxes or other screen objects are treated as entities, connected by arrows, lines or arcs which represent relations. VPLs are generally the basis of Low-code development platforms.
VPLs may be further classified, according to the type and extent of visual expression used, into icon-based languages, form-based languages, and diagram languages. Visual programming environments provide graphical or iconic elements which can be manipulated by users in an interactive way according to some specific spatial grammar for program construction.
The general goal of VPLs is to make programming more accessible to novices and to support programmers at three different levels[4]
Syntax
VPLs use icons/blocks, forms and diagrams trying to reduce or even eliminate the potential of syntactic errors helping with the arrangement of programming primitives to create well-formed programs.
Semantics
VPLs may provide some mechanisms to disclose the meaning of programming primitives. This could include help functions providing documentation functions built-in to programming languages.
Pragmatics
VPLs support the study of what programs mean in particular situations. This level of support allows users to put artifacts created with a VPL into a certain state in order to explore how the program will react to that state. Examples: In AgentSheets or AgentCubes users can set games or simulations into a particular state in order to see how program would react. With the Thymio programming language users can bring a robot into a certain state in order to see how it will react, i.e., which sensors will be activated.
As of 2005, current developments try to integrate the visual programming approach with dataflow programming languages to either have immediate access to the program state, resulting in online debugging, or automatic program generation and documentation. Dataflow languages also allow automatic parallelization, which is likely to become one of the greatest programming challenges of the future.[5]
The Visual Basic, Visual C#, Visual J# etc. languages of the Microsoft Visual Studio integrated development environment (IDE) are not visual programming languages: the representation of algorithms etc. is textual even though the IDE embellishes the editing and debugging activities with a rich user interface. A similar consideration applies to most other rapid application development environments which typically support a form designer and sometimes also have graphical tools to illustrate (but not define) control flow and data dependencies.
The following list is not mutually exclusive, as some visual programming environments may incorporate elements from multiple paradigms. The choice of visual programming paradigm often depends on the specific requirements of the application or the preferences of the users or the developers.
Block-based programming
Popularized by platforms like Scratch and Blockly, used in educational settings and for introductory programming.
Widely employed in game development, control systems, and modeling reactive systems.
Sheet-based programming
Found in spreadsheet applications and certain educational programming environments.
Timeline-based programming
Common in multimedia and animation software for sequencing events over time.
Spatial programming
Applied in certain interactive and 3D modeling environments.
Form-based programming
Used in applications where user input and graphical interfaces play a significant role, such as data entry applications.
Most of the VPLs are designed for education or domain-specific usage where the target users are novice programmers. But there are some research projects try to provide a general-purpose visual programming language that can be used by mainstream programmers in any software project instead of using textual programming languages (like C, C++, Java, etc.).
For example, research projects such as Envision [8][9] and PWCT[10] are designed to achieve this goal.
It's common for a VPL to be developed using a textual programming language. Developing general-purpose VPLs allows the other way around. For example, a new textual programming language Compiler and Virtual Machine is developed using visual programming in 2016.[11]
Blockly, a client-side library for the programming language JavaScript for creating block-based visual programming languages (VPLs) and editors. Blockly is known for its use on Scratch.
Catrobat, block-based visual programming language for animations, apps and games
Etoys, developed under the direction of Alan Kay at Disney to support constructionist learning, influenced by Seymour Papert and the Logo programming language
Flowcode, a visual programming tool for embedded microcontrollers and Windows.
Flowgorithm, creates executable flowcharts which can be converted to several languages.
Greenfoot, an IDE for Java or Stride primarily designed for educational purposes, as well as for GUI and game development
Hopscotch, an iPad app, and visual programming language for creating touchscreen-oriented mobile applications.
Scala Multimedia Authoring suite and complete multimedia system for AmigaOS and Windows
Softimage, with ICE Interactive Creative Environment.
SynthEdit, a Synthesizer construction tool using a VPL.
TouchDesigner, visual programming language for real-time multimedia content
Virtools, a middleware used to create interactive 3D experiences
vvvv, a general purpose toolkit with a special focus on real-time video synthesis and programming large media environments with physical interfaces, real-time motion graphics, audio, and video.
WireFusion, visual programming environment for creating interactive 3D web presentations
Video games
Babylon.js has a node material editor that can be used to build shaders, procedural textures, particle systems and post processing effects.[18]
Clickteam Fusion, a 2D game creation software with event editor system, developed by Clickteam SARL, originally known as Klik n' Play, The Games Factory and Multimedia Fusion 2
Construct 2-3 are HTML5-based 2D game editors, developed by Scirra Ltd.
Unity has a visual scripting system as of the ECS release. (Formally known as Bolt)
Unreal Engine 4 has a node-based visual programming language called Blueprints, and also shaders.
Many modern video games make use of behavior trees, which are in principle a family of simple programming languages designed to model behaviors for non-player characters. The behaviors are modeled as trees, and are often edited in graphical editors.
BPEL (Business Process Execution Language), currently a Graphical user based Programming Language used to create orchestration logic for data and web services. It is based on XML, but has a graphical interface for faster coding.
MST Workshop, an interactive visual programming language for creating mathematical solutions, rapid prototyping, two-dimensional and three-dimensional graphic applications
Node-RED: software system rapid development toolkit
Cube , an esolang to emulate a 3D cube via a 2D text interface "Cube".
Kwikpoint, an isotype visual translator created by Alan Stillman
Morphic (software), makes it easier to build and edit graphical objects by direct manipulation and from within programs; the whole Self (programming language) programming environment is built using Morphic
Piet, an esoteric language, the program is an image whose pixels are the language's elements
PWCT, Free open source visual programming language for software development
Pygmalion, a creative programming environment developed in 1975 by DARPA based on human communication and systems design
Rekers, J.; Schürr, A. (1997). "Defining and parsing visual languages with layered graph grammars". Journal of Visual Languages & Computing. 8 (1): 27–55. doi:10.1006/jvlc.1996.0027. S2CID40088910.
Asenov, D. and Muller, P., 2014, July. Envision: A fast and flexible visual code editor with fluid interactions (overview). In 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) (pp. 9-12). IEEE.
Fayed, M.S., Al-Qurishi, M., Alamri, A., Hossain, M.A. and Al-Daraiseh, A.A., 2020. PWCT: a novel general-purpose visual programming language in support of pervasive application development. CCF Transactions on Pervasive Computing and Interaction, 2, pp.164-177.