Visual programming language


In computing, a visual programming language, also known as diagrammatic programming, graphical programming or block coding, 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.

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
;Semantics
;Pragmatics
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 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 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
;Flowcharts
;Drag and drop interfaces
;Node graphs
;Dataflow programming
;Iconic programming
;State machines
;Sheet-based programming
;Timeline-based programming
;Spatial programming
;'''Form-based programming'''

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.
For example, research projects such as Envision was designed to achieve this goal.

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 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.
  • 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.
  • 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, 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, a visual programming language for sound design used by musicians, researchers, and sound designers.
  • Mama, a programming language and IDE for building 3D animations and games
  • Max, a visual programming environment for building interactive, real-time music and multimedia applications
  • * Max/MSP
  • * Pure Data
  • * 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 applications, and mobile applications
  • Pure Data 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
  • 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.
  • 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
  • Human Resource Machine is a visual programming-based puzzle game developed by Tomorrow Corporation.
  • Kodu, a software designed to program games with a 3D interface developed by Microsoft Research.
  • Pixel Game Maker MV is an interface-based 2D video game development tool.
  • Resonite has a visual language similar to Rec Room. called protoflux. that is used in objects, avatars and other systems.
  • Rec Room includes a game creation system with a node-based visual programming language called Circuits.
  • RPG Maker, a series of role-playing video game creation tools with event editor systems.
  • Snowdrop has a visual scripting system.
  • Stencyl, a video game creation tool.
  • Unity has a visual scripting system as of the ECS release.
  • 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.