In computer programming education, a visual programming language, block coding system or diagrammatic programming language, is a programming language that lets users create programs by manipulating program elements rather than by specifying them . 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. Scratch is an example of a VPL.

Definition 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

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.

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.

Parsers for visual programming languages can be implemented using graph grammars.

Types of visual languages

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. Flowcharts Widely used in software engineering and systems design for representing algorithms and processes. Drag and drop interfaces Commonly used in GUI design tools and development environments for creating user interfaces. Node graphs Frequently used in visual programming languages, game development, and dataflow systems. Dataflow programming Popular in parallel computing, signal processing, and visual programming environments. Iconic programming Used in various contexts for simplifying programming tasks, often associated with mobile app development. State machines 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.

General-purpose visual languages

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 PWCT and Envision was designed to achieve this goal.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(3), pp.164-177.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.

List of visual languages

The following contains a list of notable visual programming languages.

Educational

AgentCubes, 3D and 2D game design and simulation design computational thinking tools. AgentSheets, game authoring and computational science authoring tool. Alice, an object based language used to program 3D environments. Analytica, for building and analyzing quantitative models for decision and risk analysis. App Inventor for Android, a tool for creating Android applications, based on Blockly and Kawa. 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. Kodu, a visual programming tool for Logo. Kojo, a programming language, IDE, and learning environment. mBlock, an extension of Scratch for Arduino hardware interfaces. Developed by Makeblock. Open Roberta, online programming environment from Fraunhofer IAIS, designed for children. Pencil Code, a visual programming language centered on drawing with a pencil Raptor, a product of the USAF, for drawing executable flowcharts. Scratch, a product of MIT, designed for children in K-12 and after-school programs. ScratchJr, an interpretation of Scratch designed primarily for younger audiences (5-7-year-old children). Snap!, a browser-based reimplementation of BYOB, and extension of Scratch, with first class procedures and lists. Used for teaching at UC Berkeley. Stagecast Creator, a Java-based teaching system. StarLogo, an agent-based simulation language developed by Mitchel Resnick, Eric Klopfer, and others at MIT Media Lab. An extension of the Logo programming language (a dialect of Lisp). ToonTalk, programming system for children. Visual Logic, for creating executable flowcharts. VIPLE Visual IoT/Robotics Programming Language Environment

Multimedia AudioMulch, an audio signal flow based sound and music creation environment Blender, the open source 3D graphics package, includes node graphs for building shaders, composites textures, and non-destructive geometry. Cameleon, graphical functional language Clickteam's The games factory/Multimedia fusion series, environments made for visually developing games Dynamo, a generative modeling interface for Autodesk Revit Filter Forge, a node based filter generation for image processing Houdini (software), a visual effects, modeling, and animation software GenerativeComponents, a parametric CAD software developed by Bentley Systems Grasshopper 3D, a generative modeling interface for Rhinoceros 3D Isadora, a proprietary graphic programming environment for macOS and Microsoft Windows, with emphasis on real-time manipulation of digital video. Kyma (sound design language), a visual programming language for sound design used by musicians, researchers, and sound designers. Mama (software), a programming language and IDE for building 3D animations and games Max (software), a visual programming environment for building interactive, real-time music and multimedia applications; see also nato.0+55+3d Nodal, a node-based generative programming software application for music composition Nuke, an object-based visual programming software for visual effects compositing by The Foundry powered by Tcl, Python, and Blink-script. OpenMusic, a visual programming language for music composition (based on Common Lisp Object System (CLOS)) applications, and mobile applications Pure Data (Pd) is a visual programming language developed for creating interactive computer music and multimedia works. Quartz Composer, a language for processing and rendering graphical data () Reaktor, a DSP and MIDI-processing language by Native Instruments 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. Blender Game Engine (Graphical logic editor) Buildbox 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. Construct Classic is the previous, DirectX-based open-sourced version of Construct. CryEngine has a node-based visual programming language called FlowGraph. Dreams, which runs on PlayStation, has an extensive visual language to allow players to create any kind of game Game Builder Garage, a 3D and 2D game creation tool for the Nintendo Switch, developed by Nintendo. GameMaker Studio, has a drag-and-drop game creation system developed by YoYo Games. GameSalad is a visual game creation tool developed by GameSalad, Inc. GDevelop is a visual game creation tool created by Florian Rival (4ian). Godot game engine allows game scripts and graphics shaders to be built using node-graph visual programming languages. This feature has been removed but can still be used with an addon