Ein einfacher benutzerdefinierter Block in der visuellen Programmiersprache Snap!, die auf Scratch basiert , berechnet die Summe aller Zahlen mit Werten zwischen a und b.

In der Informatik ist eine visuelle Programmiersprache ( visuelles Programmiersystem , VPL oder VPS ), auch bekannt als diagrammatische Programmierung [ 1 ] [ 2 ] , grafische Programmierung oder Blockprogrammierung , eine Programmiersprache , die es Benutzern ermöglicht, Programme durch grafische Manipulation von Programmelementen anstatt durch deren textuelle Angabe zu erstellen . [ 3 ] Eine VPL erlaubt die Programmierung mit visuellen Ausdrücken, räumlichen Anordnungen von Text und grafischen Symbolen, die entweder als Syntaxelemente oder als sekundäre Notation verwendet werden . Viele VPLs basieren beispielsweise auf dem Konzept von „Kästchen und Pfeilen“, wobei Kästchen oder andere Bildschirmobjekte als Entitäten behandelt werden, die durch Pfeile, Linien oder Bögen verbunden sind, welche Beziehungen darstellen. VPLs bilden im Allgemeinen die Grundlage von Low-Code-Entwicklungsplattformen . Scratch ist ein Beispiel für eine VPL. [1]

Definition

Visuelle Programmiersprachen (VPLs) lassen sich anhand der Art und des Umfangs der verwendeten visuellen Ausdrucksmittel in symbolbasierte, formularbasierte und diagrammbasierte Sprachen unterteilen. Visuelle Programmierumgebungen bieten grafische oder symbolische Elemente, die von Benutzern interaktiv gemäß einer spezifischen räumlichen Grammatik für die Programmerstellung manipuliert werden können.

Das allgemeine Ziel von VPLs ist es, die Programmierung für Anfänger zugänglicher zu machen und Programmierer auf drei verschiedenen Ebenen zu unterstützen [ 4 ].

Syntax
VPLs verwenden Symbole/Blöcke, Formulare und Diagramme, um das Potenzial für Syntaxfehler zu reduzieren oder sogar zu eliminieren. Sie helfen bei der Anordnung von Programmierprimitiven, um wohlgeformte Programme zu erstellen.
Semantik
VPLs können Mechanismen bereitstellen, um die Bedeutung von Programmierprimitiven zu erläutern. Dies könnte Hilfefunktionen umfassen, die Dokumentationsfunktionen in Programmiersprachen integrieren.
Pragmatik
Virtuelle Programmiersprachen (VPLs) unterstützen die Untersuchung der Bedeutung von Programmen in bestimmten Situationen. Diese Unterstützung ermöglicht es Nutzern, mit einer VPL erstellte Objekte in einen bestimmten Zustand zu versetzen, um zu erforschen, wie das Programm auf diesen Zustand reagiert. Beispiele: In AgentSheets oder AgentCubes können Nutzer Spiele oder Simulationen in einen bestimmten Zustand versetzen, um die Reaktion des Programms zu beobachten. Mit der Programmiersprache Thymio können Nutzer einen Roboter in einen bestimmten Zustand versetzen, um sein Verhalten zu analysieren, z. B. welche Sensoren aktiviert werden.

Seit 2005 zielen aktuelle Entwicklungen darauf ab, den visuellen Programmieransatz mit datenflussbasierten Programmiersprachen zu integrieren, um entweder einen unmittelbaren Zugriff auf den Programmzustand zu ermöglichen und somit Online-Debugging zu gewährleisten oder eine automatische Programmgenerierung und -dokumentation zu erstellen. Datenflussbasierte Sprachen ermöglichen zudem die automatische Parallelisierung , die voraussichtlich zu den größten Programmierherausforderungen der Zukunft zählen wird. [ 5 ]

Die Programmiersprachen Visual Basic , Visual C# , Visual J# usw. der integrierten Entwicklungsumgebung (IDE) Microsoft Visual Studio sind keine visuellen Programmiersprachen: Algorithmen usw. werden textuell dargestellt, obwohl die IDE die Bearbeitungs- und Debugging-Aktivitäten mit einer umfangreichen Benutzeroberfläche erleichtert. Ähnliches gilt für die meisten anderen Entwicklungsumgebungen für schnelle Anwendungen , die typischerweise einen Formulardesigner unterstützen und mitunter auch grafische Werkzeuge zur Veranschaulichung (aber nicht Definition) von Kontrollfluss und Datenabhängigkeiten bieten.

Parser für visuelle Programmiersprachen können mithilfe von Graphgrammatiken implementiert werden . [ 6 ] [ 7 ]

Arten von visuellen Sprachen

Die folgende Liste ist nicht abschließend, da manche visuelle Programmierumgebungen Elemente aus mehreren Paradigmen vereinen. Die Wahl des visuellen Programmierparadigmas hängt oft von den spezifischen Anforderungen der Anwendung oder den Präferenzen der Benutzer bzw. Entwickler ab.

Blockbasierte Programmierung
Bekannt geworden durch Plattformen wie Scratch und Blockly, werden sie im Bildungsbereich und für Einführungen in die Programmierung eingesetzt.
Flussdiagramme
Weit verbreitet in der Softwareentwicklung und im Systemdesign zur Darstellung von Algorithmen und Prozessen.
Drag-and-Drop -Oberflächen
Wird häufig in GUI-Design-Tools und Entwicklungsumgebungen zur Erstellung von Benutzeroberflächen verwendet.
Knotengraphen
Wird häufig in visuellen Programmiersprachen, der Spieleentwicklung und Datenflusssystemen verwendet.
Datenflussprogrammierung
Beliebt in Umgebungen für Parallelrechnen, Signalverarbeitung und visuelle Programmierung.
Legendäre Programmierung
Wird in verschiedenen Kontexten zur Vereinfachung von Programmieraufgaben verwendet, häufig im Zusammenhang mit der Entwicklung mobiler Apps.
Zustandsautomaten
Weit verbreitet in der Spieleentwicklung, in Steuerungssystemen und in der Modellierung reaktiver Systeme.
Tabellenbasierte Programmierung
Zu finden in Tabellenkalkulationsprogrammen und bestimmten Programmierumgebungen im Bildungsbereich.
Zeitachsenbasierte Programmierung
Häufig verwendet in Multimedia- und Animationssoftware zur Sequenzierung von Ereignissen über die Zeit.
Räumliche Programmierung
Anwendung findet dies in bestimmten interaktiven Umgebungen und 3D-Modellierungsumgebungen.
Formularbasierte Programmierung
Wird in Anwendungen eingesetzt, bei denen Benutzereingaben und grafische Oberflächen eine wichtige Rolle spielen, wie z. B. Dateneingabeanwendungen.

Allgemeine visuelle Sprachen

Die meisten visuellen Programmiersprachen (VPLs) sind für den Bildungsbereich oder domänenspezifische Anwendungen konzipiert und richten sich an Programmieranfänger. Es gibt jedoch einige Forschungsprojekte, die eine universelle visuelle Programmiersprache entwickeln wollen, die von erfahrenen Programmierern in beliebigen Softwareprojekten anstelle textbasierter Programmiersprachen (wie C , C++ , Java usw.) eingesetzt werden kann.

Beispielsweise wurden Forschungsprojekte wie PWCT und Envision [ 8 ] [ 9 ] mit dem Ziel konzipiert, dieses Ziel zu erreichen.

Liste der visuellen Sprachen

Nachfolgend finden Sie eine Liste bemerkenswerter visueller Programmiersprachen.

Bildung

  • AgentCubes , Werkzeuge für computergestütztes Denken im Bereich 3D- und 2D-Spieledesign sowie Simulationsdesign.
  • AgentSheets , ein Autorenwerkzeug für Spiele und computerwissenschaftliche Anwendungen.
  • Alice ist eine objektbasierte Sprache zur Programmierung von 3D-Umgebungen.
  • Analytica , für die Erstellung und Analyse quantitativer Modelle zur Entscheidungs- und Risikoanalyse.
  • App Inventor für Android , ein Tool zur Erstellung von Android- Anwendungen, basierend auf Blockly und Kawa .
  • Blockly ist eine clientseitige Bibliothek für die Programmiersprache JavaScript zur Erstellung blockbasierter visueller Programmiersprachen (VPLs) und Editoren. Blockly ist bekannt für seine Verwendung auf Scratch .
  • Catrobat , eine blockbasierte visuelle Programmiersprache für Animationen, Apps und Spiele
  • Etoys wurde unter der Leitung von Alan Kay bei Disney entwickelt, um konstruktivistisches Lernen zu unterstützen, und ist von Seymour Papert und der Programmiersprache Logo beeinflusst.
  • Flowcode , ein visuelles Programmierwerkzeug für eingebettete Mikrocontroller und Windows.
  • Flowgorithm erstellt ausführbare Flussdiagramme, die in mehrere Sprachen konvertiert werden können.
  • Greenfoot ist eine IDE für Java oder Stride, die primär für Bildungszwecke sowie für die GUI- und Spieleentwicklung entwickelt wurde.
  • Hopscotch ist eine iPad- App und visuelle Programmiersprache zur Erstellung von Touchscreen-orientierten mobilen Anwendungen.
  • Kodu , ein visuelles Programmierwerkzeug für Logo .
  • Kojo , eine Programmiersprache, IDE und Lernumgebung.
  • mBlock ist eine Erweiterung von Scratch für Arduino -Hardware-Schnittstellen. Entwickelt von Makeblock .
  • Open Roberta , eine Online-Programmierumgebung des Fraunhofer IAIS , die für Kinder entwickelt wurde.
  • Pencil Code , eine visuelle Programmiersprache, die auf dem Zeichnen mit einem Bleistift basiert.
  • Raptor , ein Produkt der USAF , zum Zeichnen ausführbarer Flussdiagramme.
  • Scratch , ein Produkt des MIT , wurde für Kinder im Grundschul- und Sekundarschulalter sowie für Nachmittagsprogramme entwickelt.
  • ScratchJr ist eine Interpretation von Scratch, die vor allem für jüngere Kinder (5-7 Jahre) konzipiert wurde.
  • Snap! ist eine browserbasierte Neuimplementierung von BYOB und eine Erweiterung von Scratch mit erstklassigen Prozeduren und Listen. Es wird an der UC Berkeley im Unterricht eingesetzt .
  • Stagecast Creator , ein Java-basiertes Lehrsystem.
  • StarLogo ist eine agentenbasierte Simulationssprache, die von Mitchel Resnick , Eric Klopfer und anderen am MIT Media Lab entwickelt wurde . Sie ist eine Erweiterung der Programmiersprache Logo (einem Dialekt von Lisp ).
  • ToonTalk , ein Programmiersystem für Kinder.
  • Visual Logic zur Erstellung ausführbarer Flussdiagramme.
  • VIPLE Visuelle IoT/Robotik-Programmiersprachenumgebung

Multimedia

Videospiele

  • Babylon.js verfügt über einen Node-Material-Editor, mit dem Shader, prozedurale Texturen, Partikelsysteme und Nachbearbeitungseffekte erstellt werden können. [ 15 ]
  • Blender Game Engine (Grafik- und Logikeditor)
  • Buildbox
  • Clickteam Fusion , eine 2D-Spieleentwicklungssoftware mit Ereigniseditorsystem, entwickelt von Clickteam SARL, ursprünglich bekannt als Klik n' Play, The Games Factory und Multimedia Fusion 2
  • Construct 2-3 sind HTML5-basierte 2D-Spieleeditoren, entwickelt von Scirra Ltd.
  • CryEngine verfügt über eine knotenbasierte visuelle Programmiersprache namens FlowGraph.
  • Dreams , das auf PlayStation läuft, verfügt über eine umfangreiche visuelle Sprache, die es Spielern ermöglicht, jede Art von Spiel zu erstellen.
  • Game Builder Garage ist ein von Nintendo entwickeltes Tool zur Erstellung von 3D- und 2D-Spielen für die Nintendo Switch .
  • GameMaker Studio verfügt über ein von YoYo Games entwickeltes Drag-and-Drop-System zur Spieleentwicklung.
  • GameSalad ist ein visuelles Spieleentwicklungstool, entwickelt von GameSalad, Inc.
  • GDevelop ist ein visuelles Spieleentwicklungstool, das von Florian Rival (4ian) entwickelt wurde.
  • Die Godot- Spielengine ermöglichte die Erstellung von Spielskripten und Grafikshadern mithilfe von knotenbasierten visuellen Programmiersprachen. Diese Funktion wurde entfernt, kann aber weiterhin mit einem Add-on genutzt werden.
  • Human Resource Machine ist ein visuelles, programmierbasiertes Puzzlespiel, das von Tomorrow Corporation entwickelt wurde .
  • Kodu ist eine von Microsoft Research entwickelte Software zur Programmierung von Spielen mit einer 3D-Oberfläche.
  • Pixel Game Maker MV ist ein benutzerfreundliches Tool zur Entwicklung von 2D-Videospielen.
  • Resonite verfügt über eine visuelle Sprache ähnlich wie Rec Room , genannt Protoflux, die in Objekten, Avataren und anderen Systemen verwendet wird.
  • Rec Room beinhaltet ein Spielentwicklungssystem mit einer knotenbasierten visuellen Programmiersprache namens Circuits.
  • RPG Maker , eine Reihe von Werkzeugen zur Erstellung von Rollenspiel-Videospielen mit Ereignis-Editor-Systemen.
  • Snowdrop verfügt über ein visuelles Skriptsystem.
  • Stencyl , ein Tool zur Videospielentwicklung.
  • Unity verfügt seit der ECS-Version über ein visuelles Skriptsystem (früher bekannt als Bolt).
  • Die Unreal Engine 4 verfügt über eine knotenbasierte visuelle Programmiersprache namens Blueprints sowie über Shader.

Viele moderne Videospiele nutzen Verhaltensbäume , die im Prinzip eine Familie einfacher Programmiersprachen darstellen, die das Verhalten von Nicht-Spieler-Charakteren modellieren . Die Verhaltensweisen werden als Bäume dargestellt und häufig in grafischen Editoren bearbeitet.

Systeme / Simulation

Automatisierung

Data Warehousing / Business Intelligence

Verschiedenes

  • Bubble , zur Erstellung produktionsreifer Webanwendungen .
  • Kwikpoint , ein von Alan Stillman entwickelter visueller Isotypie-Übersetzer.
  • Morphic (Software) vereinfacht das Erstellen und Bearbeiten grafischer Objekte durch direkte Manipulation innerhalb von Programmen; die gesamte Programmierumgebung von Self (Programmiersprache) basiert auf Morphic.
  • Piet ist eine esoterische Sprache; das Programm ist ein Bild, dessen Pixel die Elemente der Sprache darstellen.
  • Shortcuts ist eine visuelle Skriptsprache, die von Apple zur Erstellung von Makros auf macOS , iOS , iPadOS und watchOS entwickelt wurde .
  • StreamBase Systems , StreamBase EventFlow ist eine visuelle Programmiersprache zur Verarbeitung von Streaming-Ereignissen.
  • WebML ist eine visuelle Sprache zum Entwurf komplexer, datenintensiver Webanwendungen, die automatisch generiert werden können.
  • Yahoo! Pipes ist ein visuelles Datenfluss-Programmiersystem zur Verarbeitung von Webdaten [ 18 ].
  • YAWL , grafische Workflow-Sprache

Vermächtnis

Visuelle Stile

Siehe auch

Referenzen

  1. ^ Bragg, SD; Driskill, CG (1994). „Diagrammatisch-grafische Programmiersprachen und DoD-STD-2167A“. Proceedings of AUTOTESTCON '94 . S.  211–220 . doi : 10.1109/AUTEST.1994.381508 . ISBN 0-7803-1910-9. S2CID  62509261 .
  2. Kuhail , MA; Farooq, S.; Hammad, R.; Bahja, M. (2021). „Charakterisierung visueller Programmieransätze für Endbenutzerentwickler: Eine systematische Übersicht“ . IEEE Access . 9 : 14181–14202 . Bibcode : 2021IEEEA...914181K . doi : 10.1109/ACCESS.2021.3051043 .
  3. ^ Jost, Beate; Ketterl, Markus; Budde, Reinhard; Leimbach, Thorsten (2014). „Grafische Programmierumgebungen für Bildungsroboter: Open Roberta – noch eine?“. 2014 IEEE International Symposium on Multimedia . S.  381–386 . doi : 10.1109/ISM.2014.24 . ISBN 978-1-4799-4311-1. S2CID  8272806 .
  4. ^ Repenning, Alexander (2017). „Über die Syntax hinaus: Lehren aus 20 Jahren Blockprogrammierung in AgentSheets“ . Journal of Visual Languages ​​and Sentient Systems . 3 : 68–91 . doi : 10.18293/vlss2017-010 .
  5. ^ Johnston, WM; Hanna, JRP; Millar, RJ (2004). „Advances in dataflow programming languages“ ( PDF) . ACM Computing Surveys . 36 (1): 1–34 . doi : 10.1145/1013208.1013209 . S2CID 5257722. Archiviert (PDF) vom Original am 16.05.2018 . Abgerufen am 16.02.2011 . 
  6. ^ Rekers, J.; Schürr, A. (1997). „Definition und Parsing visueller Sprachen mit geschichteten Graphgrammatiken“. Journal of Visual Languages ​​& Computing . 8 (1): 27–55 . doi : 10.1006/jvlc.1996.0027 . S2CID 40088910 . 
  7. ^ Zhang, D.-Q. (2001). „Ein kontextsensitiver Graphgrammatik-Formalismus zur Spezifikation visueller Sprachen“. The Computer Journal . 44 (3): 186–200 . doi : 10.1093/comjnl/44.3.186 . hdl : 10397/17637 . S2CID 14139133 . 
  8. ^ Asenov, D. und Muller, P., Juli 2014. Envision: Ein schneller und flexibler visueller Code-Editor mit flüssigen Interaktionen (Übersicht). In: 2014 IEEE Symposium on Visual Languages ​​and Human-Centric Computing (VL/HCC) (S. 9–12). IEEE.
  9. ^ „Envision“ . Archiviert vom Original am 27.01.2024 . Abgerufen am 06.02.2024 .
  10. ^ „Shader-Editor – Blender-Handbuch“ . docs.blender.org . Abgerufen am 22.01.2021 .
  11. ^ „Compositing – Blender-Handbuch“ . docs.blender.org . Abgerufen am 22.01.2021 .
  12. ^ „Texturbearbeitung – Blender-Handbuch“ . docs.blender.org . Archiviert vom Original am 18.04.2021 . Abgerufen am 22.01.2021 .
  13. ^ „Referenz/Versionshinweise/2.92/Geometrie-Knoten – Blender Developer Wiki“ . wiki.blender.org . Archiviert vom Original am 29.01.2021 . Abgerufen am 22.01.2021 .
  14. ^ „Geometrie-Knoten – Blender-Handbuch“ . docs.blender.org . Archiviert vom Original am 02.10.2021 . Abgerufen am 02.10.2021 .
  15. ^ „Babylon.js Node Material Editor“ . nme.babylonjs.com . Abgerufen am 22.01.2021 .
  16. ^ „Construct Classic Homepage“ . Archiviert vom Original am 24.01.2016 . Abgerufen am 16.01.2016 .
  17. ^ „Construct Classic-Seite auf SourceForge“ . Archiviert vom Original am 25.06.2025 . Abgerufen am 11.08.2025 .
  18. ^ „Yahoo! Pipes“ . Archiviert vom Original am 03.01.2015 . Abgerufen am 03.01.2015 .