Visual programming language

In computing, a visual programming language (visual programming system, VPL, or, VPS) or block coding is a programming language that lets users create programs by manipulating program elements graphically rather than by specifying them textually.[1] 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 (known as diagrammatic programming)[2][3] 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.

A simple custom block in the Snap! visual programming language, which is based on Scratch, calculating the sum of all numbers between a and b

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[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.

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 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.[6][7]

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.
  • Bubble, for creating production-ready web applications.
  • 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.
  • 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

Video games

  • Babylon.js has a node material editor that can be used to build shaders, procedural textures, particle systems and post processing effects.[14]
  • 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.
  • 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.
  • 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.
  • MakeCode Arcade, by Microsoft
  • Pixel Game Maker MV is an interface-based 2D video game development tool.
  • Rec Room includes a game creation system with a node-based visual programming language called Circuits.
  • 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.

Systems / simulation

Automation

Data warehousing / business intelligence

Miscellaneous

  • Kwikpoint, an isotype visual translator created by Alan Stillman
  • Lava, an experimental object oriented RAD language
  • 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
  • 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[17]
  • YAWL, graphical workflow language

Legacy

Visual styles

See also

References

  1. Jost, Beate; Ketterl, Markus; Budde, Reinhard; Leimbach, Thorsten (2014). "Graphical Programming Environments for Educational Robots: Open Roberta - Yet Another One?". 2014 IEEE International Symposium on Multimedia. pp. 381–386. doi:10.1109/ISM.2014.24. ISBN 978-1-4799-4311-1.
  2. Bragg, S.D.; Driskill, C.G. (1994). "Diagrammatic-graphical programming languages and DoD-STD-2167A". Proceedings of AUTOTESTCON '94. pp. 211–220. doi:10.1109/AUTEST.1994.381508. ISBN 0-7803-1910-9.
  3. Kuhail, M. A.; Farooq, S.; Hammad, R.; Bahja, M. (2021). "Characterizing Visual Programming Approaches for End-User Developers: A Systematic Review". IEEE Access. 9: 14181–14202. doi:10.1109/ACCESS.2021.3051043.
  4. Repenning, Alexander (2017). "Moving Beyond Syntax: Lessons from 20 Years of Blocks Programing in AgentSheets". Journal of Visual Languages and Sentient Systems. 3: 68–91. doi:10.18293/vlss2017-010.
  5. Johnston, W.M.; Hanna, J.R.P.; Millar, R.J. (2004). "Advances in dataflow programming languages" (PDF). ACM Computing Surveys. 36 (1): 1–34. doi:10.1145/1013208.1013209. Retrieved 2011-02-16.
  6. 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. S2CID 40088910.
  7. Zhang, D.-Q. (2001). "A context-sensitive graph grammar formalism for the specification of visual languages". The Computer Journal. 44 (3): 186–200. doi:10.1093/comjnl/44.3.186. S2CID 14139133.
  8. http://www.computermusicjournal.org/reviews/31-* * * 2/regan-bidule.html
  9. "Shader Editor — Blender Manual". docs.blender.org. Retrieved 2021-01-22.
  10. "Compositing — Blender Manual". docs.blender.org. Retrieved 2021-01-22.
  11. "Texture Editing — Blender Manual". docs.blender.org. Retrieved 2021-01-22.
  12. "Reference/Release Notes/2.92/Geometry Nodes - Blender Developer Wiki". wiki.blender.org. Retrieved 2021-01-22.
  13. "Geometry Nodes — Blender Manual". docs.blender.org. Retrieved 2021-10-02.
  14. "Babylon.js Node Material Editor". nme.babylonjs.com. Retrieved 2021-01-22.
  15. Construct Classic home page
  16. Construct Classic page on SourceForge
  17. "Yahoo! pipes". Archived from the original on 2015-01-03. Retrieved 2015-01-03.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.