Wikipedia / Visual programming language
Wikipedia / Visual programming language
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.https://www.geeksforgeeks.org/software-engineering/introduction-to-visual-programming-language/
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.
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.
Frequently used in visual programming languages, game development, and dataflow systems.
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.
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.
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.
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)
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
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 included 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. (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.
Systems / simulation
Analytica, a commercial visual language for decision models based on influence diagrams.
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.
DRAKON, a graphical algorithmic language, a free and open source algorithmic visual programming and modeling language developed as part of the defunct Soviet Union Buran space program
Flowcode is a graphical programming language to program embedded microprocessors
Function block diagrams, used in programmable logic controllers
GNU Radio, a development toolkit which provides signal-processing blocks to implement software-defined-radios and signal-processing systems
KNIME, the Konstanz Information Miner, is an open source data analytics, reporting and integration platform
LabVIEW, a graphical language designed for engineers and scientists
Ladder logic, a language that simulates relay logic commonly used in programmable logic controllers
MeVisLab, cross-platform application framework for medical image processing and scientific visualization
Microsoft Visual Programming Language, dataflow language for robotics programming that is a component of Microsoft Robotics Studio
MindRover, a robot programming game incorporating a dataflow "wiring" language
Minibloq, visual programming language for robotics and Arduino compatible boards
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
NXT-G, a visual programming language for the Lego Mindstorms NXT robotics kit
OpenDX scientific data visualization using a visual programming language and data flow model
OpenWire - adds visual dataflow programming abilities to Delphi via Visual Component Library (VCL) components and a graphical editor (homonymous binary protocol is unrelated)
Orange - An open-source, visual programming tool for data mining, statistical data analysis, and machine learning
OutSystems language, a visual modeling language to develop and change all layers of business centric web applications
PLECS is a system simulation and control design tool especially designed for power electronics but which also extends to other physical domains.
Prograph - an object-oriented programming language that uses iconic symbols to represent actions to be taken on data
Ptolemy Project - a project aimed at modeling and designing real-time embedded systems.
Qucs graphical interface to set up simulation of electronic circuit signal and noise behavior
Reallusion - iClone, a 3D software with Lua language and visual programming design
ROBO Pro, a visual programming language for the fischertechnik robotics kit
Scicos A graphical language associated with the numerical analysis package ScicosLab (originally SciLab)
Sequential function chart, a Petri-net like programming language for programmable logic controllers
Simcenter Amesim, graphical programming environment for modeling, simulating and analyzing multidomain dynamical systems
Simulink, graphical programming environment for modeling, simulating and analyzing multidomain dynamical systems
Stateflow, a graphical language that includes executable state transition diagrams, flow charts, state transition tables, and truth tables
STELLA, a VPL for system dynamics modeling
Softimage ICE, a node-based system that is used to create and modify 3D models, simulate particles and perform various other tasks
Unified Modeling Language depicts connectives (arrows) such as 'isA', 'has' as icons; resources can be roles
VEE is a powerful graphical programming environment for automated test, measurement and advanced analysis used in Test Engineering.
VisSim, modeling and simulation language, allows making mathematical models quickly and executing them in real-time
Automation
CiMPLE, Visual Programming Language by ThinkLABs for teaching robotics
Flow a graphical integration language used in the webMethods platform
Pipeline Pilot is a scientific visual and dataflow programming language, and the authoring tool for the Accelrys Enterprise Platform.
Data warehousing / business intelligence
Alteryx Designer, a tool for data processing and analytics incorporating SQL, R, and Python.
Apache Nifi, software project to automate the flow of data between software systems.
IBM Cognos Business Intelligence, is an example for front-end programs in business intelligence applications, which are used to generate SQL queries to run against RDBMS databases
IBM InfoSphere DataStage, an ETL tool
Informatica Powercenter is an ETL tool to design mappings graphically for data load in Data Warehouse systems
Microsoft Access, query design functionality
Microsoft SQL Server Integration Services (SSIS), a platform for data integration and workflow applications
Pentaho Data Integration (PDI), formerly named Kettle, an open-source ETL tool
Miscellaneous
Bubble, for creating production-ready web applications.
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
Shortcuts, a visual scripting language developed by Apple for creating macros on macOS, iOS, iPadOS, and watchOS.
StreamBase Systems, StreamBase EventFlow is a visual programming language for processing streaming events
WebML, is a visual language for designing complex data-intensive Web applications that can be automatically generated
Yahoo! Pipes is a visual data-flow programming system to process web data
YAWL, graphical workflow language
Legacy
AppWare, also known as MicroBrew, icon based programming for classic Mac OS and Microsoft Windows
Macromedia Authorware - flowchart based programming language
Helix and Double Helix, a pioneering database management system for the Apple Macintosh platform, created in 1983
Illumination Software Creator, a language and IDE for visually creating desktop and mobile software
Visual styles
DRAKON (Dragon), a SDL- and AADL-influenced visual 2D programming language designed for developing the on-board hard real-time software system for automatic flight and landing of the Soviet/Russian Buran (Snowstorm) orbiting spacecraft
Executable UML, a profile of the Universal Modeling Language specification defining executable semantics for a subset of UML
See also
Cognitive dimensions of notations - Notation assessment for visual and non-visual languages
Deutsch limit, an aphorism about the information density of language primitives in a visual notation
References
Based on material from the Free On-line Dictionary of Computing, used with permission.
External links