Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Snap! (Programmiersprache)

Snap!, bis zu Version 3.1.1 unter dem Namen BYOB bekannt (englisch Abk. von Build Your Own Blocks deutsch: „Bau deine eigenen Blöcke“), ist eine auf Scratch …

Inhalt5 Abschnitte
  1. 1. Was Snap! ist und warum es im Unterricht wichtig ist
  2. 2. Zentrale Erweiterungen gegenüber Scratch
  3. 3. First-Class-Objekte und eigene Kontrollstrukturen
  4. 4. Entwicklung, Verbreitung und Zusammenarbeit mit Scratch
  5. 5. Technik, Onlineverfügbarkeit und frühere Einschränkungen

Was Snap! ist und warum es im Unterricht wichtig ist

Snap! ist eine bildungsorientierte visuelle Programmiersprache mit eigener Entwicklungsumgebung. Bis Version 3.1.1 hieß sie BYOB („Build Your Own Blocks“). Sie baut konzeptionell auf Scratch auf, ist aber zusätzlich von Scheme und damit von Lisp beeinflusst. Entwickelt wurde sie von Jens Mönig und Brian Harvey für fortgeschrittene Schülerinnen und Schüler sowie für die Erwachsenenbildung. Die Sprache unterstützt mehrere Programmierweisen: funktionale, prozedurale, objektorientierte, ereignisgesteuerte und Meta-Programmierung. Ihre Typisierung ist dynamisch, Variablen sind also nicht dauerhaft an einen bestimmten Datentyp gebunden. Programmbefehle und Programmierumgebung sind englischsprachig.

Snap! verbindet die einfache, grafische Bedienung von Scratch mit abstrakteren Konzepten der Informatik. Programme entstehen per Drag-and-drop aus grafischen Blöcken und sind unmittelbar ausführbar. Dadurch entfallen Zwischenschritte wie die Übertragung eines Ablaufdiagramms in Pseudocode und anschließend in textuellen Programmcode. Auch Tipp- und Syntaxfehler werden vermieden. Nach Darstellung des Artikels lässt sich damit der Lernbereich „Algorithmen und Datenstrukturen“ vollständig behandeln.

Snap! ist Open Source, enthält jedoch proprietäre Komponenten. Es wird unter anderem in der Sekundarstufe II an deutschen Schulen sowie an deutschen und amerikanischen Universitäten eingesetzt. Die Basisdaten nennen Version 12.1.3 vom 10. September 2026 als aktuelle Version.

Zentrale Erweiterungen gegenüber Scratch

Scratch ist besonders auf Einfachheit und den schnellen Einstieg für Kinder ausgerichtet. Snap! ergänzt diese Grundlage um komplexere Konzepte, die für fortgeschrittenen Informatikunterricht wichtig sind. Dazu gehören selbst definierte Blöcke, First-Class-Funktionen beziehungsweise First-Class-Prozeduren, verschachtelte Listen und First-Class-Sprites.

„First-Class“ bedeutet hier, dass ein Objekt wie ein gewöhnlicher Wert behandelt werden kann: Es lässt sich beispielsweise in einer Variablen oder Liste speichern, weitergeben und mit passenden Operationen bearbeiten. In Snap! gilt dies nicht nur für Zahlen und Zeichenketten, sondern auch für Spielfiguren, Programmskripte, Listen und weitere Objekte. Selbst Programmcode kann gespeichert und später ausgeführt werden. Die mathematische Grundlage von First-Class-Funktionen und -Prozeduren wird als Lambda-Kalkül bezeichnet.

Snap! unterstützt außerdem prototypenbasierte Objektorientierung. Dabei werden neue Objekte nicht anhand eines abstrakten Klassenkonzepts erzeugt, sondern als Kopien vorhandener Objekte. Dieser Vorgang heißt Cloning. Weil Programmcode selbst als Wert behandelt werden kann, ist auch Meta-Programmierung möglich: Programme können Strukturen der eigenen Programmiersprache verarbeiten und Snap! kann mit Snap! erweitert werden. So lassen sich neue Kontroll- und Datenstrukturen definieren und anschließend gleichwertig zu eingebauten Sprachelementen verwenden.

First-Class-Objekte und eigene Kontrollstrukturen

Ein Beispiel für First-Class-Objekte verwendet den Block say („sage“) mit einem Listenblock, der die beiden Spielfiguren Sprite1 und Sprite2 enthält. Als Ergebnis erscheint die Liste mit diesen Spielfiguren in einer Sprechblase. Während sich say und think („denke“) in Scratch nur auf Zahlen, Texte oder daraus gebildete Listen beziehen, können solche Operationen in Snap! auf alle entsprechenden Objekte angewendet werden.

Ein zweites Beispiel zeigt die Definition einer For-Schleife, obwohl Snap! ursprünglich keinen eigenen Befehlsblock dafür enthält. In einem selbst erstellten Definitionsskript werden die lokalen Übergabevariablen i, start, end und action festgelegt. i nimmt die Laufvariable der Schleife auf. Für start und end sind die Werte 1 und 10 voreingestellt, falls beim Einsatz des Blocks keine anderen Werte angegeben werden. action enthält den auszuführenden Programmcode und wird im Definitionsskript als Parameter eines run-Blocks ausgeführt. Die Wiederholung wird mithilfe des eingebauten repeat-Blocks umgesetzt.

Der so definierte For-Block kann danach wie ein gewöhnlicher Bestandteil der Sprache eingesetzt werden. Im beschriebenen Beispiel werden zwei For-Schleifen ineinander verschachtelt; bei der Ausführung zählt eine gelbe Spielfigur zehnmal von 3 bis 5. Das Beispiel verdeutlicht, dass Lernende sowohl die Implementierung einer Kontrollstruktur als auch ihre spätere Anwendung untersuchen können.

Entwicklung, Verbreitung und Zusammenarbeit mit Scratch

Die Entwicklung begann mit Chirp, einer ab 2008 von Jens Mönig veröffentlichten Modifikation von Scratch 1.2.1. Brian Harvey, Professor in Berkeley und bekannt durch UCB-Logo, wurde darauf aufmerksam. Gemeinsam entwickelten Mönig und Harvey daraus BYOB, das in Harveys Grundlagenvorlesungen Scheme ersetzen sollte. Öffentliche Forschungsgelder ermöglichten später die vollständige Neuentwicklung unabhängig von der technischen Grundlage von Scratch. Ab Version 4.0 wurde das System von der University of California, Berkeley unter dem Namen Snap! veröffentlicht. Es ist direkt im Browser verfügbar und wurde in über 20 Sprachen übersetzt.

Snap! ist ein wesentliches Element der Berkeley-Grundlagenvorlesung „The Beauty and Joy of Computing“. Diese wurde als Pilotprojekt für das Examen AP CS:Principles ausgewählt. Auf dieser Grundlage plante die National Science Foundation, ab 2015 im Rahmen von CS10K 10.000 Informatiklehrkräfte auszubilden. Große Teile der Vorlesung einschließlich Snap!-Materialien, Videos und beispielhafter Prüfungen wurden öffentlich bereitgestellt.

In Deutschland trug besonders der Informatikdidaktiker Eckart Modrow durch Fachartikel, Vorlesungsskripte, Vorträge und Lehrerfortbildungen zur Nutzung bei. 2013 kam BYOB erstmals in deutschen Abiturprüfungen zum Einsatz.

Zwischen den Entwicklungsteams von Scratch und BYOB bestand eine enge Zusammenarbeit. In BYOB erprobte Ideen wurden in Scratch übernommen, darunter Listen und – in vereinfachter Form – die Möglichkeit, eigene Programmierblöcke zu definieren. Das kleinere BYOB-Team konnte Innovationen schneller einführen; das größere Scratch-Team prüfte neue Konzepte länger praktisch, was mit der jüngeren Zielgruppe und der wesentlich größeren Nutzergemeinschaft begründet wurde.

Technik, Onlineverfügbarkeit und frühere Einschränkungen

BYOB 3.x beruhte wie Scratch auf Squeak und war als Modifikation des Scratch-Quellcodes aufwärtskompatibel. Eine wichtige damalige Einschränkung war das Fehlen eines webfähigen Players. Projekte waren deshalb grundsätzlich lokal verfügbar, und eine mit Scratch vergleichbare Online-Community fehlte. BYOB-3.x-Projekte konnten nur nach manueller Umwandlung als Scratch-Projekte veröffentlicht werden; dabei gingen die besonderen BYOB-Funktionen verloren.

Für Snap! wurde die technische Grundlage vollständig neu programmiert. Entwicklungsumgebung und Projekt-Player laufen ohne Installation im Webbrowser. Statt Squeak oder der bei Scratch 2.0 eingesetzten Flash-Technik verwendet Snap! HTML5-Canvas und JavaScript. Morphic, die aus Squeak bekannte grafische Grundlage, wurde dafür neu implementiert. Als wichtige Implementierungen nennt der Artikel BYOB 3.x in Squeak als Scratch-Modifikation und BYOB/Snap! 4.x in JavaScript. Die unterstützten Betriebssysteme sind Windows, macOS und Linux.

Diese Webtechnik machte Snap! auch auf Apple-Mobilgeräten wie iPhone, iPad und iPod sowie auf anderen Plattformen nutzbar, auf denen Java und Flash nicht unterstützt wurden. Zur Zeit der entsprechenden Artikelpassage befand sich Snap! allerdings noch im Alphastadium und war nicht vollständig zu Scratch kompatibel.

Snap! war seit Beginn seiner Entwicklung 2011 öffentlich im Internet verfügbar. Im Februar 2013 galt es bereits als weitgehend nutzbar, wurde von den Entwicklern aber weiterhin als Alpha bezeichnet. Ein Cloud-Server sollte 2013 die Betaphase einleiten. Weil das System schon während der Entwicklung dauerhaft genutzt werden konnte, gab es keinen eindeutig abgrenzbaren klassischen Veröffentlichungstermin. Ein offizielles englischsprachiges Handbuch erschien Anfang 2018.

Weiterlesen

Programmierparadigma Grundlegend für den Entwurf von Programmiersprachen sind die Paradigmen der imperativen und der deklarativen Programmierung. Beim letzteren sind als wichtige … Funktionale Programmierung Funktionale Programmierung ist ein Programmierparadigma, in dem Funktionen nicht nur definiert und angewendet werden können, sondern auch wie Daten … Objektorientierte Programmierung Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee besteht darin … Metaprogrammierung Metaprogrammierung ist in der Informatik die Erstellung von Computerprogrammen ("Metaprogramme"), die Computerprogramme erzeugen. Das Ziel dabei ist es, … Scratch (Programmiersprache) Scratch ist eine erstmals 2007 veröffentlichte bildungsorientierte blockbasierte visuelle Programmiersprache für Kinder und Jugendliche inklusive ihrer … Microsoft Windows Microsoft Windows (englische Aussprache [ˈmaɪ.kɹoʊ.sɒft ˈwɪn.doʊz]) bzw. Windows ist eine Reihe proprietärer grafischer Betriebssystemfamilien von Microsoft … Visuelle Programmiersprache Die visuelle Programmiersprache Scratch auf einem Whiteboard Beispiel von Programm-Blöcken bei Open Roberta mit der Programmiersprache NEPO. Graphische … Integrierte Entwicklungsumgebung Eine integrierte Entwicklungsumgebung (IDE, von englisch integrated development environment) ist eine Sammlung von Computerprogrammen, mit denen die … Algorithmus Algorithmen bestehen aus endlich vielen, wohldefinierten Einzelschritten. ... Damit können sie zur Ausführung in ein Computerprogramm implementiert, aber auch in … Datenstruktur In der Informatik und Softwaretechnik ist eine Datenstruktur ein Objekt, welches zur Speicherung und Organisation von Daten dient. Es handelt sich um eine … YouTube YouTube bietet drei Formen der Zugänglichkeit an: Öffentlich, Ungelistet oder Privat. Standard sind öffentliche Videos. Diese sind von jedermann anzusehen und … Eckart Modrow Die Vorteile und zunehmende Popularität der für Kinder konzipierten Programmiersprache Scratch haben eine weltweite Aufmerksamkeit von IT-Didaktikern auf deren …