Einfacher Programmieren mit Snap 6.1

Anlässlich der SnapCon 2020 veröffentliche Jens Mönig die Version 6.1.0 von Snap!, welche nun eine Darstellung erlaubt, die sich eng an das textbasierte Programmieren anlehnt. In den Systemeinstellungen kann über den Menüpunkt „Fade blocks“, die farbenfrohe Umrandung einzelner Befehlsbausteine reduziert werden.

Übliche Darstellung von Snap!
Die übliche Darstellung von Snap! ist bewusst farbenfroh, damit die verschiedenen Blöcke gut voneinander unterschieden werden können.
Neue Darstellung von Snap!
Mit der neuen Einstellung lassen sich die Umrandungen der Blöcke komplett ausblenden. Damit wird die „Textstruktur“ von Snap ! sichtbar.

Selbstverständlich können über den entsprechenden Regler auch beliebige Zwischenstufen eingestellt werden.

Hyperblocks

Wichtiger als diese oberflächliche Gestaltung sind aber die Änderungen unter der Haube. So verfügt Snap! nun über sogenannte Hyperblocks, welche einerseits den Umgang mit grösseren Datenmengen (Bildern, Musik, Datensätzen) vereinfachen und Snap! in Bezug auf diese Anforderungen auch viel schneller machen.

Am Beispiel eines Bildes mit invertierten Farben soll gezeigt werden, was genau damit gemeint ist. Die Vereinfachung eines solchen Programms erfolgt in drei Schritten:

  1. Klassische Programmierung mit for-Schlaufen
  2. Programmierung mit dem map()-Befehl von Snap!
    Den gleichen Befehl findet man in etwas unterschiedlichen Varianten auch in der statistischen Programmiersprache R, wo er zu einem übersichtlicheren Code führt.
  3. Die Programmierung mit Hyperblocks

Klassische Programmeriung mit for-Schlaufen

Werden in Snap! for-Schlaufen verwendet, um mehrdimensionale Datensätze zu bearbeiten, kann es schnell unübersichtlich werden. Bilddateien werden in Snap! als Liste von Listen mit den vier Elementen R-, G-, B- und Alphakanal dargestellt. Um alle Pixel zu ändern, müssen zuerst die einzelnen Pixellisten aufgerufen und diese dann in einer verschachtelten for-Schlaufe bearbeitet werden. Durch die vielen Programmschritte steigt die Gefahr von Programmierfehlern und das Programm braucht auch ziemlich viel Zeit, um das neue Bild zu berechnen.

Variante mit for-Schlaufe
Für Programmieranfänger sind verschachtelte for-Schlaufen meist nur mit grosser Mühe nachzuvollziehen.

Progammierung mit dem map()-Befehl

Mit dem map()-Befehl wird das Programm nicht nur wesentlich übersichtlicher, es lauft auch um ein Vielfaches schneller als bei der for-Variante.

Variante mit map-Befehl
Die Variante mit dem map()-Befehl lässt schon wesentlich deutlicher erkennen, was das Snap!-Programm eigentlich tut.

Allerdings ist die Anwendung des map()-Befehls konzeptionell anspruchsvoller, weil die Datenstruktur hier bereits weiter abstrahiert wurde. In der Regel braucht es etwas Übung, bis eine solche Umsetzung problemlos gelingt.

Nachtrag vom 31.7.2020: Der Snap!-Entwickler bh schlug vor, den map()-Block wie folgt zu vereinfachen:

vereinfachter map-Block
Mit der Verwendung von lokalen Variablen kann der map()-Block noch einmal eleganter und effizienter verwendet werden.

Programmierung mit Hyperblocks

Die Verwendung von Hyperblocks abstrahiert die zugrunde liegenden Prozesse, ist aber konzeptionell einfacher zu verstehen als die weiter oben vorgestellten Methoden. Jens Mönig spricht im Zusammenhang mit Hyperblocks bezeichnenderweise von einer „fast naiven“ Programmierung.

Variante mit Hyperblocks
Der Vergleich mit der for-Variante zeigt deutlich, wie mächtig Snap! durch die Hyperblocks geworden ist.

Die wenigen Zeilen sind nicht nur wesentlich einfacher zu lesen, auch die Programmausführung wird dadurch noch einmal wesentlich beschleunigt. Damit erfüllen die Hyperblocks die ursprünglichen Zielsetzungen, Snap! für die Verwendung mit grösseren Datenmengen fit zu machen gleich zweifach: Ein einfacher zu lesender Programmcode geht mit einer für Multimedia-Experimente nun genügend schnellen Programmausführung Hand in Hand.

Verwendung im Unterricht

Schülerinnen und Schüler fertigen mit ihren Smartphones täglich neue Bilder an und verwenden dabei gerne auch Farbfilter. Deren Funktionsweise kann nun mit dem RGB-Farbmodell und wenigen Zeilen Code in Snap! einfach nachvollzogen werden. Die Invertierung eines Bildes ist nur eine Möglichkeit der Bildverfremdung, welche mit dem gezeigten kurzen Code möglich wird. Durch das Setzen der Parameter in liste1 können weitere Farbeffekte erzielt werden.

Farbfilter
Das Originalbild (links) wird invertiert (Mitte) und durch die Anpassung der Parameter farblich weiter verändert (rechts).

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert