Snap!,Snap! (Build Your Own Blocks) – (offizielle Snap!-Seite der Universität Berkeley) 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 aufbauende und von Scheme und damit auch Lisp inspirierte bildungsorientierte visuelle Programmiersprache inklusive ihrer Entwicklungsumgebung für fortgeschrittene Schüler und für die Erwachsenenbildung. Programmbefehle und Programmierumgebung sind englischsprachig.

Kurzbeschreibung Snap!/BYOB erweitert Scratch um komplexere und abstraktere Konzepte, die in Scratch zugunsten der Kindertauglichkeit bisher fehlten. Trotz der spielerischen Anmutung, die es sich aus seiner Scratch-Herkunft bewahrt hat, geht BYOB mit seinen anschaulichen und durchgängigen First-Class-Objekten und Meta-Programmierung weit über die Möglichkeiten traditioneller Programmier-Lern-Sprachen hinaus. Unter anderem kann der Lernbereich „Algorithmen und Datenstrukturen“ mit BYOB direkt und vollständig abgedeckt werden, während Programmierkenntnisse nebenbei erworben werden. – Paper Constructionism 2010, Paris, Brian Harvey & Jens Mönig

Snap!/BYOB ist Open Source und kommt im Sekundarstufen-II-Unterricht an deutschen Schulen und an amerikanischen und deutschen Universitäten zum Einsatz.

Die live in Unterricht und Vorlesung per Drag and Drop erstellbaren grafischen Programme ähneln Ablaufdiagrammen, sind aber direkt lauffähig, wodurch ein hoher Zeit- und Motivationsvorteil erzielt wird, da Redundanzen und Brüche zwischen Theorie und Praxis vermieden werden (Wegfall von: Diagramm → Pseudocode → lauffähiges Programm → Tipparbeit → Syntaxfehler → Testdurchläufe → Zeitverschwendung und Demotivation).

Entstehung, Entwicklung und Verbreitung Die Ursprünge von BYOB gehen auf das Freizeitprojekt Chirp zurück, das der deutsche Jurist und Softwareentwickler Jens Mönig ab 2008 als Modifikation von Scratch 1.2.1 publizierte und auf das der für sein UCB-Logo bekannte Berkeleyprofessor Brian HarveyBrian Harvey in der englischsprachigen Wikipedia aufmerksam wurde.Bericht: Jens Mönig am Scratchday 2013 im DACH-Scratch-Wiki, abgerufen am 6. Oktober 2013. Gemeinsam schufen sie daraus die für die Erwachsenenbildung geeignete Programmiersprache BYOB, um das in seinen Grundlagenvorlesungen eingesetzte Scheme abzulösen. Als Berater fungierten u. a.: John Maloney (der Chefentwickler von Scratch), Dan Ingalls, Mitchel Resnick und Mark Guzdial.Mark Guzdial in der englischsprachigen Wikipedia Auch in einer mehrtägigen Zusammenkunft mit Alan Kay und seinem Team wurden BYOB/Snap! reflektiert. zur Beratung des Snap!-Teams durch John Maloney, Dan Ingalls, Mitch Resnick, Mark Guzdial und Alan Kay, abgerufen am 28. Januar 2013. Durch die Bewilligung öffentlicher Forschungsgelder (PDF; 248 kB) wurde aus dem Hobbyprojekt eine Vollzeittätigkeit, die schließlich zu einer kompletten von der Scratch-Technologiebasis unabhängigen Neuimplementierung von BYOB führte, das ab der Version 4.0 unter dem neuen Namen Snap! von der University of California, Berkeley publiziert wird und – in über 20 Sprachen übersetzt – direkt im Browser frei verfügbar ist.Online-Präsenz von Snap! an der University of California, Berkeley. Direkt im JavaScript-fähigen Browser ausführbar.

mini|100px|links|Logo der Berkeley-Vorlesung The Beauty and Joy of Computing BYOB/Snap! ist ein wesentliches Element der vielbeachteten Berkeley Grundlagenvorlesung The Beauty and Joy of Computing,Homepage der Vorlesung „The Beauty and Joy of Computing“ die als Pilotprojekt für das neue Examen AP CS:Principles gewählt wurdeThe beauty and joy of computing (BJC), AP CS principles, and the CS 10K effort Dan Garcia, veröffentlicht im Journal of Computing Sciences in Colleges, Volume 27 Issue 5, May 2012, S. 126–127. auf dessen Basis die National Science Foundation ab 2015 10.000 Lehrer im Fach Informatik ausbilden will (CS10K).The CS10K Project: Mobilizing the Community to Transform High School Computing (PDF; 145 kB), Owen Astrachan (Duke University), Cameron Wilson Director (ACM Office of Public Policy), Jan Cuny (National Science Foundation), Chris Stephenson (Executive Director, CSTA) In diesem Zusammenhang wurden weite Teile der Vorlesung incl. der BYOB/Snap!-Teile als Moodle-Version und YouTube-VideosVideos Vorlesungen und Videos Lab-Veranstaltungen der Berkeley-Vorlesung „The Beauty and Joy of Computing“ aus 2012 öffentlich gemacht, incl. exemplarischer Examensprüfungen.Beispiel eines Berkeley CS10 FinalExamens aus 2010 unter Verwendung von BYOB/Snap! (PDF; 883 kB)

Die hohe Popularität von Scratch bei seiner gleichzeitigen Nichteignung für den fortgeschrittenen Informatikunterricht hat eine weltweite Aufmerksamkeit von IT-Didaktikern auf BYOB/Snap! ausgelöst, da es dieses entscheidende Defizit von Scratch ausgleicht. Der deutsche Informatik-Didaktiker Eckart Modrow erkannte dieses Potenzial früh und trug durch Fachartikel,OOP mit BYOB, Prof. Dr. Eckart Modrow, LOG IN Heft Nr. 171 (2011) (PDF; 347 kB), abgerufen am 27. Januar 2013.Visuelle Programmierung – oder: Was lernt man aus Syntaxfehlern?, Prof. Dr. Eckart Modrow, 9. Januar 2011 (PDF; 83 kB), abgerufen am 27. Januar 2013.Wozu Java?, Prof. Dr. Eckart Modrow,Jens Mönig, Dr. Kerstin Strecker, LOG IN Heft Nr. 168 (2011) (PDF; 356 kB), abgerufen am 27. Januar 2013.Modrow2015-11-Im Supermarkt mit SQLsnap (PDF; 2,5 MB) – abgerufen am 17. Dezember 2015.Modrow2015-11-Neues von BYOB-Snap! (PDF; 549 kB) – abgerufen am 17. Dezember 2015. VorlesungsskripteVorlesungsskript: „Informatik mit BYOB / Snap!“ (PDF; 5,7 MB), 9. Februar 2013 von Prof. Dr. Eckart Modrow auf dem Server des Lehrerbildungszentrums Informatik der Universität Göttingen sowie Vorträge und Lehrerfortbildungen dazu bei, dass auch der deutsche Informatikunterricht von BYOB/Snap! profitieren kann. 2013 kam BYOB erstmals auch in deutschen Abiturprüfungen zum Einsatz.DACH-Scratch-Wiki: Bericht vom ScratchDay 2013: Das Gymnasium Sulingen ist die erste deutsche Schule, an der BYOB von der Klasse 7 bis zur Abiturklausur eingesetzt wurde.

Erweiterungen gegenüber Scratch Im Gegensatz zu Scratch, welches auf Einfachheit und sofortiges Verständnis durch Anfänger zielt, ist BYOB um programmiertechnisch komplexere Konzepte ergänzt. Da viele dieser Konzepte an die multi-paradigmen-Programmiersprache Scheme angelehnt sind, ermöglicht BYOB sowohl funktionale und prozedurale als auch objektorientierte und sogar Meta-Programmierung. Dazu werden dem Repertoire der Sprache nur wenige, aber sehr wirkmächtige Optionen hinzugefügt, wie das Erstellen von Blöcken, First-Class Funktionen oder Prozeduren (ihre mathematischen Grundlagen werden auch als Lambda-Kalkül bezeichnet), First-Class-Objekt-Listen (einschließlich Listen von Listen) und First Class Sprites. Mit prototypenbasierter Programmierung wird in BYOB Objektorientierung ohne abstraktes Klassenkonzept ermöglicht: Neue Objekte entstehen als Kopie vorhandener Objekte (sog. Cloning). im DACH-Scratch-Wiki, abgerufen am 27. Januar 2013.Spieleprogrammierung mit Scratch und BYOB, Seminar Didaktik der Informatik 3. Semester, Michael Heinelt, Wintersemester 2011/12 (PDF; 3,0 MB), abgerufen am 27. Januar 2013.

BYOB macht First-Class-Objekte anschaulich Die aus Scratch bekannten Spielfiguren (Sprites), Programm-Skripte, Listen und anderes, sind in BYOB First-Class-Objekte, die wie Zahlen und Zeichenketten in Variablen und Listen gespeichert werden können. Alle Operationen, die direkt auf diese Objekte angewendet werden, können auch auf die Variablen und Listenelemente angewendet werden, welche diese Objekte enthalten. Dabei sind einige Operationen wie say/sage (Sprechblase) und think/denke (Denkblase), die sich bei Scratch nur auf Zahlen, Texte oder Listen von diesen beziehen, auf alle Objekte anwendbar. Dadurch, dass Programmcode in Variablen und Listen gespeichert und ausgeführt werden kann, können neue Kontrollstrukturen und Datenstrukturen frei definiert werden, die gleichwertig zu den Grundstrukturen der Programmiersprache verwendbar sind, was Meta-Programmierung ermöglicht: BYOB lässt sich in BYOB erweitern und ist mit der gleichzeitigen visuellen Orientierung eine der anschaulichsten Programmiersprachen, in der dies möglich ist.

Damit ermöglicht es BYOB prinzipiell, jede denkbare Kontroll- und Datenstruktur zu lehren und zwar wahlweise sowohl ihre Implementierung, als auch ihre Anwendung. Nachvollziehbar wird dies bereits in den zwei Beispielen aus dem Titelbild des BYOB-Handbuches, das rechts dargestellt ist. Es enthält zwei Gruppen von Bildern, die jeweils zusammenhängend ein Beispiel bilden:

First-Class-Objekte benutzen Die gelbe Spielfigur links unten im Bild führt den sage/say-Block auf einen Listenblock aus, der eine Liste mit den zwei Spielfiguren Sprite1 und Sprite2 erzeugt: Dadurch erscheint die Liste mit den Spielfiguren in der Sprechblase.

Kontrollstrukturen definieren BYOB umfasst keinen Programmierbefehl-Block für eine For-Schleife. Jedoch kann diese Kontrollstruktur leicht definiert und dann so verwendet werden, als sei der For-Block ein normaler Bestandteil der Programmiersprache, wie das Definitionsskript oben links im Bild zeigt. In dessen Kopfblock werden die lokale Übergabevariablen i, start, end und action festgelegt. i ist durch den Pfeil nach oben als Variablenübergabevariable gekennzeichnet, welche die Laufvariable der Schleife aufnimmt. Die Wertübergabevariablen start und end sind mit 1 und 10 vordefiniert, wenn bei der Verwendung des For-Schleifen-Blocks keine anderen Angaben eingesetzt werden. Der aktive Programmcode, der im Innern einer For-Schleife ausgeführt werden soll, wird der Variable action übergeben und weiter unten im Definitionsskript als Parameter des run-Blocks ausgeführt. Mit Hilfe des zum BYOB-Sprachbestandteil gehörenden repeat-Blocks wird eine For-Schleife nachgebaut. Im Beispielskript rechts wird der so entstandene Block der For-Schleife zweimal ineinander verschachtelt verwendet: Bei Ausführung zählt die gelbe Spielfigur rechts zehnmal von 3 bis 5.

Einschränkungen gegenüber Scratch Bis zum Auseinanderdriften der Entwicklungsplattform (mit Scratch 2.0/BYOB 4.0) basierte BYOB auf dem in Squeak implementierten Quellcode von Scratch und war zu diesem aufwärtskompatibel. Eine wesentliche Beschränkung von BYOB, wie auch aller anderen Scratch-Modifikationen, war dabei das Fehlen eines webfähigen Abspielers für die mit ihm geschaffenen Projekte. Damit fehlte – neben allen anderen hierzu notwendigen Ressourcen – auch die Technologiebasis für eine mit Scratch vergleichbare Online-Community-Plattform. Wie traditionelle Programmier-Lern-Umgebungen setzte BYOB hier auf eine rein lokale Verfügbarkeit.

BYOB 3.x Projekte können nur nach einer manuellen Umwandlung in Scratch-Projekte online publiziert werden, wobei natürlich auf alle BYOB-Fähigkeiten verzichtet werden muss. Wie in Scratch 2.0 sind jedoch in BYOB 4.0 nicht nur die Projekte im Webbrowser abspielbar, sondern zudem die komplette Entwicklungsumgebung ohne Installation online verfügbar. Beide Systeme sind heute (Anfang 2013) im Prereleasestadium nutzbar. Ob darauf basierend für BYOB 4.0 (bzw. Snap! s. u.) auch eine Online-Plattform geschaffen und etabliert werden wird, wie für Scratch, ist unbekannt.

BYOB 5.0/Snap! mini|Arbeiten mit BYOB4.0/Snap!: Screenshot

Im Gegensatz zu den meisten anderen Modifikationen basiert die kommende Version nicht mehr auf dem Quellcode von Scratch selbst, sondern wurde vollständig neu programmiert, da – wie bei Scratch 2.0 – eine komplette Onlineverfügbarkeit von Projekt-Player und Entwicklungsumgebung angestrebt wird.

Aus BYOB 5.0 wird Snap! Der neue Name Snap!, der ab BYOB 5.0 verwendet wird, leitet sich lautmalerisch vom einschnappen der Programmierbausteine ab, wenn sie miteinander zu den Programm-Skripten eines Snap!-Projektes verbunden werden.