Für ein optimales Hörerlebnis empfehlen wir eine Podcatcher-App zu verwenden. Zum Beispiel:
- AntennaPod (Android)
- gPodder (Desktop)
- GNOME-Podcast (GNOME-Desktop)
- Kast (KDE-Desktop)
- PodPhoenix (Ubuntu-Touch)
Der RSS-Feeds für den Podcast lautet: https://gnulinux.ch/podcast/gnulinux_newscast_rss.xml. Ihr findet uns in den Podcast-Verzeichnissen unter dem Suchbegriff: "GNU/Linux".
Wenn euch der Podcast gefällt, freuen wir uns über eine Unterstützung. Vielen Dank!
Shownotes
CIW - Folge 108 - 16.10.2024 - Visuelles Programmieren
- Wir begrüssen alle Entwickler zur Folge 108 von "Captain it's Wednesday", dem Podcast über Freie Software und Freie Gesellschaft von GNU/Linux.ch, aufgenommen am 14. Oktober von Christian Müller-Zieroth und Ralf Hersel. In dieser Folge sprechen wir über das visuelle Erstellen von Software.
Hausmitteilungen
- keine
Thema: Visuelles Programmieren
Vorbemerkungen
- Ralfs Erfahrungen mit Gtk4 und Cambalache (Glade Nachfolger)
- Alte Erinnerungen an Visual Objects werden wach:
- 1980, Ashton Tate (ging 1991 an Borland), DBase
- 1984, Nantucket (ging 1993 an Computer Associates), Clipper
- 1990, Nantucket entwickelt Clipper weiter zu Visual Objects
- 1993, Computer Associates, Visual Objects
- 2012, GrafX Software, Visual Objects 2.8
Einleitung
Als visuelle Programmiersprache (englisch visual programming language, VPL) bezeichnet man eine Programmiersprache, in der ein Programm, Algorithmus oder Systemverhalten durch grafische Elemente und deren Anordnung definiert wird. Anstatt Programmcode zu schreiben, werden visuelle Elemente verwendet, um die Programmlogik abzubilden. Bei den visuellen Elementen handelt es sich um Icons, Blöcke, Flussdiagramme, Formulare und Diagramme, deren Ziel es ist, das Programm optisch darzustellen und zu bearbeiten.
Unterteilung
Überraschenderweise gibt es viel mehr VPLs als man meinen würde. Die Wikipedia listet weit über 100 VPLs auf und unterteilt diese in die Kategorien:
- Allgemein
- Bildung
- Multimedia
- Spiele
- Systeme und Simulation
- Automation
- Data Warehousing
- sowie Sonstige
Scratch und Snap!
Eine der bekanntesten VPLs aus dem Bildungsbereich ist Scratch. Die Sprache wurde 2007 am MIT entwickelt und veröffentlicht. Es ist eine blockbasierte visuelle Programmiersprache für Kinder und Jugendliche inklusive einer Entwicklungsumgebung und einer eng verknüpften Online-Community-Plattform. Der Werbespruch von Scratch lautet: "Erstelle Geschichten, Spiele und Animationen und teile sie mit anderen in der Welt".
Die Weiterentwicklung von Scratch heisst "Build your own blocks", bzw. Snap! Snap ist eine blockbasierte Programmiersprache, die Kinder und Erwachsene einlädt, spielerisch und experimentierend Informatik zu erfahren, ist aber auch eine Plattform für Informatik-Studierende sowie Forscherinnen und Forscher.
Grob gesagt, bietet Snap eine IDE, die im Webbrowser läuft. Dort findet man Blöcke, einen Skript-Bereich und eine Bühne. Die Blöcke entsprechen Programmbefehlen und sind in verschiedenen Bereichen kategorisiert: Bewegung, Aussehen, Ton, Kontrolle, Sensorik, Variablen usw. Diese Blöcke zieht man mit der Maus in den Skript-Bereich, um ein Programm zusammenzubauen. Auf der Bühne kann man das Programm in Aktion sehen.
Ein Beispiel zur Darstellung eines Farbbaums findet ihr in den Shownotes. Dort könnt ihr im Bühnen-Fenster auf die grüne Flagge klicken, um das Skript auszuführen.
Snap steht unter der AGPL 3.0 Lizenz.
Godot
Ein weiteres Beispiel für eine VPL ist die Godot-Engine, die unter der freien MIT-Lizenz steht. Damit kann man 2D- und 3D-Computerspiele erstellen. Godot ist die freie Alternative zur Unity Game-Engine. Auch Godot verwendet Blöcke, um Spielszenen zu entwerfen.
Node-RED
- Ursprünglich von IBM entwickelt, jetzt Teil der OpenJS Foundation
- Open-Source-Software unter der Apache License 2.0
- Basiert auf Node.js und verwendet JavaScript
- Hauptsächlich für IoT-Anwendungen und Datenverarbeitung
- Unterstützt verschiedene Protokolle wie MQTT, HTTP, TCP/IP, Modbus, OPC-UA
- Automatisierung von Prozessen
3D-Modellierung
- PUPPICAD
- Sverchok für Blender
- Rhino Grasshopper (proprietär)
- xGenerativeDesign (proprietär)
Visual Scripting mit Hardware
- Arduino Plug and Make Kit
- Idee von Christian und Co. - der Blob
Links
- https://en.wikipedia.org/wiki/Visual_Objects
- https://en.wikipedia.org/wiki/Visual_programming_language
- https://gitlab.gnome.org/jpu/cambalache
- https://scratch.mit.edu/
- https://snap.berkeley.edu/
- https://snap.berkeley.edu/snap/snap.html#present:Username=bh&ProjectName=color tree&editMode&noRun
- https://godotengine.org/
- https://de.wikipedia.org/wiki/Node-RED
- https://www.puppicad.xyz/
- https://store.arduino.cc/en-de/products/plug-and-make-kit
Outro
- Euer Feedback ist uns wichtig. Ihr könnt uns über Matrix, Mastodon oder per E-Mail erreichen. Die Adressen findet ihr auf unserer Webseite.
- GNU/Linux.ch ist ein Magazin, in dem die Community für die Community interessante Artikel erstellt und im Podcast darüber diskutiert. Helft mit, die Infos für die Community zu bereichern. Wie das geht, erfahrt ihr hier.
Godot... Godot ist ja vor wenigen Wochen unangenehm aufgefallen, weil ein Community-Manager - offenbar mit psychischen Problemen - wie wild und willkürlich um sich gebannt hat. Die Antwort und Reaktion von Godot darauf war alles andere als professionell oder zufriedenstellend.
Hallo, schöne Folge! Ich möchte noch auf die Software Knime hinweisen, welche vom Hersteller mit "Visual workflows for complex data & AI work" beschrieben wird. Wie es sich gehört ist es eine open-source Anwendung.
Mit Programmen wie Cambalache programmiert man doch nicht richtig. Man baut sich eine GUI, die man dann in Code benutzen kann. (Macht auch Sinn das zu trennen; wie mit HTML, JS & CSS) Programmlogik steckt da nicht drin.
TreeViews in GTK4 sind mit ListViews möglich:
https://docs.gtk.org/gtk4/section-list-widget.html#displaying-trees
Ich weiss, dass es möglich ist, finde jedoch keine Anleitungen für Normalsterbliche. Alles, was ich bisher dazu gefunden habe, ist überkompliziert. Insbesondere wenn man es mit Trees in Gtk3, Qt oder Tkinter vergleicht.