Snap! (Programmiersprache)

BYOB / Snap!
BYOB-Logo bis BYOB 3.x
Snap!-Logo ab BYOB 4.0
Basisdaten
Paradigmen:Multi-Paradigma: visuell, bildungsorientiert, funktional, prozedural, objektorientiert, meta, ereignisgesteuert
Erscheinungsjahr:2011
Designer:Brian Harvey[1], Jens Mönig[1]
Entwickler:Jens Mönig, Brian Harvey
Aktuelle Version:6.7.2  (15. März 2021[2])
Typisierung:dynamisch
Wichtige Implementierungen:BYOB 3.x in Squeak als Mod von Scratch

BYOB/Snap! 4.x in JavaScript

Beeinflusst von:Scratch, Lisp, Scheme
Beeinflusste:Scratch (Einfluss in beide Richtungen, siehe Artikel)
Betriebssystem:Windows, macOS, Linux
Lizenz:Open Source mit proprietären Komponenten
snap.berkeley.edu

Snap![3], 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 englisch-sprachig.

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.[4]

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[5] 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 Harvey[6] aufmerksam wurde.[7] 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.[8] Auch in einer mehrtägigen Zusammenkunft mit Alan Kay und seinem Team wurden BYOB/Snap! reflektiert.[9] Durch die Bewilligung öffentlicher Forschungsgelder[10] 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.[11]

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,[12] die als Pilotprojekt für das neue Examen AP CS:Principles gewählt wurde[13][14] auf dessen Basis die National Science Foundation ab 2015 10.000 Lehrer im Fach Informatik ausbilden will (CS10K).[15] In diesem Zusammenhang wurden weite Teile der Vorlesung incl. der BYOB/Snap!-Teile als Moodle-Version[16] und YouTube-Videos[17] öffentlich gemacht, incl. exemplarischer Examensprüfungen.[18]

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,[19][20][21][22][23] Vorlesungsskripte[24][25] 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.[26]

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 zu den Scratch Eigenschaften nur wenige neue, aber sehr mä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).[27][28]

BYOB macht First-Class-Objekte anschaulich

Titelbild des BYOB-Handbuches mit zwei Beispielen: 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!

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.

Hintergrund dieser Umbenennung ist, dass BYOB eine weitere, im englischen sogar bekanntere Bedeutung als Build Your Own Blocks (Bau deine eigenen Blöcke) hat. Diese zweite Bedeutung bring your own beer/bottle („Bring Deine Flasche/Dein Bier selbst mit“, siehe Buddelparty) erschien für eine Anwendung im Bildungsbereich letztlich als zu missverständlich.

Technologie und Onlineverfügbarkeit

Wie bei Scratch 2.0 ist die Entwicklungsumgebung von Snap! und damit auch der Player ohne Installation direkt im Webbrowser verfügbar. Hierzu wurde Squeak Smalltalk, die bisher gemeinsame Grundlage von Scratch und BYOB, verlassen und – wie auch bei Scratch 2.0 – eine komplette Neuentwicklung auf einer webfähigen Plattform durchgeführt, die ohne Installation in gängigen Webbrowsern laufen soll. Während Scratch 2.0 jedoch auf Flash basiert, wurde für Snap! als Plattform HTML5-Canvas und JavaScript verwendet. Auf dieser Basis wurde das aus Squeak bekannte Morphic neu implementiert und zur graphischen Grundlagenbibliothek von Snap!.

Alternative zu Scratch auf iPhone/iPad/iPod

Damit stellt Snap! eine Alternative zu Scratch auf den mobilen Geräten von Apple (iPhone/iPad/iPod) und anderen Plattformen dar, auf denen Java und Flash nicht unterstützt werden und somit weder der Scratch-Projekt-Abspieler von Scratch 1.x, noch die Entwicklungsumgebung von Scratch 2.x ausführbar sind. Allerdings liegt die Snap! erst im Alphastadium vor und ist noch nicht voll kompatibel zu Scratch.[29]

Veröffentlichung

Snap!-Handbuch-Cover

Snap! steht seit Beginn seiner Entwicklung 2011 öffentlich im Netz zur Verfügung und ist aktuell (Februar 2013) weitgehend nutzbar, incl. Sprachversionen in Deutsch und einem knappen Dutzend anderer Sprachen. Der aktuelle Status von Snap! wird von den Entwicklern als Alpha angegeben. Mit Hinzukommen eines Cloud-Servers soll im Jahr 2013 ein Betastadium eingeleitet werden und dann kurzfristig ein erster offizieller Fertigstellungspunkt definiert werden, bei dem man – aufgrund der permanenten Nutzbarkeit bereits vorher – jedoch nicht von einem richtigen Veröffentlichungszeitpunkt sprechen kann. Ein offizielles englischsprachiges Handbuch zu Snap! wurde Anfang 2018 herausgegeben.

Kooperation zwischen Scratch- und BYOB-Entwicklung

Durch eine intensive Kooperation zwischen Scratch und BYOB Entwicklern fließen regelmäßig in BYOB erprobte Konzepte in Scratch ein, wie z. B. die Scratch-Listen, die lange vor ihrer Einführung in Scratch bereits in BYOB implementiert waren. Auch die Fähigkeit, eigene neue Programmierbausteine definieren zu können, wird – allerdings in vereinfachter Form, ohne Ein- und Ausgabeparameter – in der neuen Version Scratch 2.0 einfließen. Während im kleineren BYOB-Entwicklerteam der schnellen Entscheidung für Innovationen ein höherer Stellenwert zugeschrieben wird, setzt das größere Scratch-Entwicklerteam auf längere praktische Evaluierung, bevor ein neues Konzept offiziell eingeführt wird, was – aufgrund der jüngeren Zielgruppe und der wesentlich größeren Nutzergemeinde von Scratch – sinnvoll ist. Da für BYOB 4.0 mit JavaScript und HTML5 eine weniger etablierte, aber zukunftsträchtigere Plattform gewählt wurde, lässt sich vermuten, dass es auch in diesem Fall einen Einfluss auf zukünftige Scratch Versionen nach 2.0 haben könnte, speziell, wenn die für Scratch 2.0 gewählte etablierte Plattform Flash tatsächlich rückläufig und damit auf immer weniger Systemen verfügbar sein sollte, worauf bereits heute einiges hindeutet.

Einzelnachweise

  1. a b snap.berkeley.edu.
  2. 6.7.2 released! - Ankündigung von Version 6.7.2 im offiziellen Forum.
  3. Snap! (Build Your Own Blocks) – (offizielle Snap!-Seite der Universität Berkeley)
  4. Bringing “No Ceiling” to Scratch: Can One Language Serve Kids and Computer Scientists? - Paper Constructionism 2010, Paris, Brian Harvey & Jens Mönig
  5. Homepage von Chirp (Memento vom 25. April 2014 im Internet Archive)
  6. Brian Harvey in der englischsprachigen Wikipedia
  7. Bericht: Jens Mönig am Scratchday 2013 im DACH-Scratch-Wiki, abgerufen am 6. Oktober 2013
  8. Mark Guzdial in der englischsprachigen Wikipedia
  9. Blogeintrag von Jens Mönig (Memento vom 22. September 2013 im Internet Archive) zur Beratung des Snap!-Teams durch John Maloney, Dan Ingalls, Mitch Resnick, Mark Guzdial und Alan Kay, abgerufen 28. Januar 2013
  10. Collaborative Research: Type I: FRABJOUS CS — Framing a Rigorous Approach to Beauty and Joy for Outreach to Underrepresented Students in Computing at Scale (Memento des Originals vom 5. März 2016 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/bjc.berkeley.edu (PDF; 248 kB)
  11. Online-Präsenz von Snap! an der University of California, Berkeley. Direkt im JavaScript-fähigen Browser ausführbar.
  12. Homepage der Vorlesung „The Beauty and Joy of Computing“
  13. The 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, Pages 126-127
  14. Repräsentanz der Vorlesung „Beauty And Joy Of Computing (BJC)“ auf der Plattform der CS10K Projects Community (Memento des Originals vom 1. Mai 2015 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/cs10kcommunity.org
  15. 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)
  16. Moodle-Version der Berkeley-Vorlesung „The Beauty and Joy of Computing“@1@2Vorlage:Toter Link/veritas.eecs.berkeley.edu (Seite nicht mehr abrufbar, Suche in Webarchiven Info: Der Link wurde automatisch als defekt markiert. Bitte prüfe den Link gemäß Anleitung und entferne dann diesen Hinweis.
  17. Videos Vorlesungen und Videos Lab-Veranstaltungen der Berkeley-Vorlesung „The Beauty and Joy of Computing“ aus 2012
  18. Beispiel eines Berkeley CS10 FinalExamens aus 2010 unter Verwendung von BYOB/Snap! (PDF; 883 kB)
  19. OOP mit BYOB, Prof. Dr. Eckart Modrow, LOG IN Heft Nr. 171 (2011) (PDF; 347 kB), abgerufen am 27. Januar 2013
  20. Visuelle Programmierung – oder: Was lernt man aus Syntaxfehlern?, Prof. Dr. Eckart Modrow, 9. Januar 2011 (PDF; 83 kB), abgerufen am 27. Januar 2013
  21. 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
  22. Modrow2015-11-Im Supermarkt mit SQLsnap (PDF; 2,5 MB) - abgerufen am 17. Dezember 2015
  23. Modrow2015-11-Neues von BYOB-Snap! (PDF; 549 kB) - abgerufen am 17. Dezember 2015
  24. Vorlesungsskript: „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
  25. Prof. Dr. Eckart Modrow: Informatik mit Snap. Abgerufen am 30. Oktober 2018.
  26. 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.
  27. Build Your Own Blocks (Scratch Modifikation) (Memento des Originals vom 17. Juli 2018 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/scratch-dach.info im DACH-Scratch-Wiki, abgerufen am 27. Januar 2013
  28. 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
  29. Snap! im DACH-Scratch-Wiki, abgerufen am 27. Januar 2013

Weblinks

Commons: Snap! – Sammlung von Bildern, Videos und Audiodateien
  • Offizielle Site Snap! Computer Science Division, University of California, Berkeley

Auf dieser Seite verwendete Medien

Snap Reference Manual Cover.png
Autor/Urheber: Brian Harvey (lecturer), Lizenz: CC-BY-SA-3.0
Snap Handbuch Titelbild
Snap!.svg
Autor/Urheber: University of California, Berkeley, Lizenz: AGPL
Logo of Snap!.
BYOB Demonstration.jpg
Autor/Urheber: Brian Harvey, Lizenz: CC BY-SA 2.0
Demonstration von einigen möglichen Programmierverfahren mit BYOB
Snap Entwicklungsumgung Beispiel.png
Autor/Urheber: http://byob.berkeley.edu/, Lizenz: CC-BY-SA-3.0
Snap_Entwicklungsumgung_Beispiel
BJC-Logo The Beauty and Joy of Computing CS10 UC Berkeley EECS.png
Autor/Urheber:

UC Berkeley

, Lizenz: Logo

BJC-Logo The Beauty and Joy of Computing CS10 UC Berkeley EECS

BYOB Logo und Maskottchen.png
Autor/Urheber:

Jens Mönig, Brian Harvey

, Lizenz: GFDL 1.3

Logo und Maskottchen ("Gobo") BYOB