Build Your Own Blocks (Programmiersprache)
BYOB / Snap! | |
---|---|
![]() BYOB-Logo (bis BYOB 3.x): Der aus Scratch bekannte "Gobo" wird durch die λ-Locke zum BYOB-Maskottchen "Alonzo" und "sagt" einen "First Class Block" Datei:Snap Logo.png Snap!-Logo (ab BYOB 4.0): In der Umrahmung verweisen das λ-Zeichen auf Scheme und die Start-Block-Form auf Scratch. | |
Basisdaten | |
Paradigmen: | Multi-Paradigma: visuell, erziehungsorientiert, funktional, prozedural, objektorientiert, meta, ereignisgesteuert |
Erscheinungsjahr: | 2011 |
Entwickler: | Jens Mönig, Brian Harvey |
Aktuelle Version: | 3.1.1 (19. Mai 2011) |
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: | |
Lizenz: | Open Source mit proprietären Komponenten |
byob.berkeley.edu |
BYOB (engl. Abk: "Build Your Own Blocks" deutsch: "Bau deine eigenen Blöcke") ist eine auf Scratch aufbauende und von Scheme und damit auch Lisp, inspirierte erziehungsorientierte visuelle Programmiersprache inklusive ihrer Entwicklungsumgebung für fortgeschrittene Schüler und für die Erwachsenenbildung.
Inhaltsverzeichnis
[Verbergen]Allgemeines[Bearbeiten]
BYOB erweitert die vom Lifelong Kindergarten Group am MIT Media Lab entwickelten Sprache 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 weit über die Möglichkeiten vieler 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. Die live im Unterricht 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). BYOB ist Open-Source und kommt im Sekundarstufen-II-Unterricht an deutschen Schulen und an amerikanischen und deutschen Universitäten zum Einsatz.
Die ersten BYOB-Vorstufen wurden unter dem Namen Chirp als Modifikation von Scratch 1.2.1 ab 2008 publiziert.[1] BYOB 4.0 befindet sich im Prerelease-Stadium (Stand Januar 2013) und wird den neuen Namen Snap! erhalten.
BYOB wurde von dem deutschen Juristen und Softwareentwickler Jens Mönig zusammen mit dem für sein UCB-Logo bekannten Berkeleyprofessor Dr. Brian Harvey [2] entwickelt, der Ideen zum Sprachdesign und die Dokumentation beisteuerte. Als Berater fungierten u.A.: John Maloney (der Chefentwickler von Scratch), Dan Ingalls, Mitchel Resnick und Mark Guzdial [3]. Auch in einer mehrtägigen Zusammenkunft mit Alan Kay und seinem Team wurden BYOB/Snap! reflektiert.[4]
Erweiterungen gegenüber Scratch[Bearbeiten]
Im Gegensatz zu Scratch, welches auf die Einfachheit und sofortige Verständnis für Anfänger zielt, ergänzt BYOB programmiertechnisch komplexere Konzepte. 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 Prototypenbasierte Programmierung wird in BYOB Objektorientierung ohne abstraktes Klassenkonzept ermöglicht: Neue Objekte entstehen als Kopie vorhandener Objekte ("cloning").[5][6][7][8][9]
BYOB macht "First-Class-Objekte" anschaulich[Bearbeiten]
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:
Beispiel 1: First-Class-Objekte benutzen[Bearbeiten]
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.
Beispiel 2: Kontrollstrukturen definieren[Bearbeiten]
BYOB umfasst keinen Programmierbefehl-Block für eine "For_=_To_" Schleife. Jedoch kann diese Kontrollstruktur leicht definiert und dann so verwendet werden, als sei der "For_=_To_"-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-To-Schleifen"-Blocks keine anderen Angaben eingesetzt werden. Der aktive Programmcode, der im Innern einer "For_=_To_-"-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_=_To_"-Schleife nachgebaut. Im Beispielskript rechts wird der so entstandene "For_=_To_-Schleifen"-Block zwei mal ineinander verschachtelt verwendet: Bei Ausführung zählt die gelbe Spielfigur rechts 10 mal von 3 bis 5.
Einschränkungen gegenüber Scratch[Bearbeiten]
Bis zum Auseinanderdriften der Entwicklungsplattform (mit Scratch 2.0/BOYB 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 Roussourcen - auch die Technologiebasis für eine mit Scratch vergleichbare Online-Community-Plattform. Wie traditionelle Programmier-Lern-Umgebungen setzte BYOB hier auf eine reine 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. Snapp! s.u.) auch eine Online-Plattform geschaffen und etabliert werden wird, wie für Scratch, ist unbekannt.
BYOB 4.0/Snap![Bearbeiten]
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 4.0 wird Snap![Bearbeiten]
Der neue Name "Snap!", der ab BYOB 4.0 verwendet wird, leitet sich lautmalerisch vom "(ein-)schnappen!" der Programmier-Bausteine ab, wenn sie miteinander zu den Programm-Skripten eines Snap!-Projektes verbunden werden.
Hintergrund dieser Umbenennung ist, dass "BYOB" leider 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 [10] (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[Bearbeiten]
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 Internetbrowsern 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[Bearbeiten]
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.[11].
Veröffentlichung[Bearbeiten]
Snap! steht seit Beginn seiner Entwicklung in 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 in 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 2013 herausgegeben.
Kooperation zwischen Scratch- und BYOB-Entwicklung[Bearbeiten]
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ünftigere 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.
Literatur[Bearbeiten]
Deutsch:
- 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
Englisch:
Weblinks[Bearbeiten]
- Snap! live erleben - Die Entwicklungsumgebung von Snap! lässt sich in der jeweils aktuellen Alpha-Version in jedem HTML5/JavaScript-fähigem Browser direkt starten (englisch, u.A. auf Deutsch umschaltbar), abgerufen am 12. Februar 2013 (deutsche Infos dazu im DACH-Scratch-Wiki)
- Offizielle Website von BYOB und Snap! (englisch), abgerufen am 12. Februar 2013
- informativer Blogeintrag des Snap!-Entwicklers Jens Mönig zu Snap! (englisch), abgerufen am 12. Februar 2013
- "Snap!" der BYOB-Nachfolger - im DACH-Scratch-Wiki, abgerufen am 18. Januar 2013
- BYOB/Snap auf Facebook (englisch), abgerufen am 12. Februar 2013
Einzelnachweise[Bearbeiten]
- Hochspringen ↑ Homepage von Chirp, des Vorgängers von BYOB und Snap!, abgerufen 28. Januar 2013
- Hochspringen ↑ Brian Harvey in der englischsprachigen Wikipedia
- Hochspringen ↑ Mark Guzdial in der englischsprachigen Wikipedia
- Hochspringen ↑ Blogeintrag von Jens Mönig zur Beratung des Snap!-Teams durch John Maloney, Dan Ingalls, Mitch Resnick, Mark Guzdial und Alan Kay], abgerufen 28. Januar 2013
- Hochspringen ↑ Build Your Own Blocks (Scratch Modifikation) im DACH-Scratch-Wiki, abgerufen am 27. Januar 2013
- Hochspringen ↑ OOP mit BYOB, Prof. Dr. Eckart Modrow, LOG IN Heft Nr. 171 (2011) (PDF; 575 kB), abgerufen am 27. Januar 2013
- Hochspringen ↑ Visuelle Programmierung - oder: Was lernt man aus Syntaxfehlern? , Prof. Dr. Eckart Modrow, 9. Januar 2011 (PDF; 83 kB), abgerufen am 27. Januar 2013
- Hochspringen ↑ Wozu JAVA?, Prof. Dr. Eckart Modrow,Jens Mönig, Dr. Kerstin Strecker, LOG IN Heft Nr. 168 (2011) (PDF; 557 kB), abgerufen am 27. Januar 2013
- Hochspringen ↑ Spieleprogrammierung mit Scratch und BYOB , Seminar Didaktik der Informatik 3. Semester, Michael Heinelt, Wintersemester 2011/12 (PDF; 3,2 MB), abgerufen am 27. Januar 2013
- Hochspringen ↑ en:BYOB (beverage) in der englischsprachigen Wikipedia
- Hochspringen ↑ Snap! im DACH-Scratch-Wiki, abgerufen am 27. Januar 2013