Wir nutzen Cookies, um das allgemeine Benutzerelebnis zu verbessern. Mit der Nutzung unseres Wikis stimmst du der Nutzung von Cookies zu.

Snap!

Snap! (deutsch: (ein-)schnappen!) ist eine Scratch Modifikation und der Nachfolger von BYOB und somit auch von Chirp. Wie Scratch ist Snap! weitgehend eine imperative ProgrammierspracheWikipedia.jpg bei der ein Programm aus einer Folge von Anweisungen besteht, die vorgeben, in welcher Reihenfolge welche Aktionen ausgeführt werden. Mit den Higher-Order Procedures unterstützt Snap! aber auch funktionale ProgrammierungWikipedia.jpg.

Im Gegensatz zu den meisten anderen Mods basiert Snap! nicht auf dem Quellcode von Scratch selbst, sondern wurde komplett neu programmiert, da die Entwickler, wie bei Scratch 2.0, wollen, dass man von überall online an seinen Projekten arbeiten kann. Snap! befindet sich im Augenblick noch im Status "Beta".

Das offizielle Logo

Entwicklerteam

Brian Harvey und Jens Mönig

Wie beim Vorgänger BYOB, hat der deutsche Jurist und Softwareentwickler Jens Mönig den Großteil der Programmierung übernommen und der Berkeleydozent Brian Harvey seine Ideen zum Sprachdesign und die Dokumentation beigesteuert. Bis zur geplanten Erstveröffentlichung im Juli werden neben Jens Mönig nur noch die zwei engagierten jugendlichen Hobbyprogrammierer Fullmoon und nxIII aus den USA am Coding in JavaScript beteiligt sein.

Jens nutze aber u.A. Vor- bzw. Zusammenarbeit den MIT-Scratch-Team Mitgliedern John Maloney und Evelyn Eastmond, sowie mit dem Squeak/Smalltalk Mitbegründer Dan Ingalls, dessen Lively Kernel eine Vorlage für Morphc.js, lieferte, die Jens in seiner Dokumentation als "Gold Standard" bezeichnet. Den Lively Kernel kann man hier live im Browser erleben. Dan Ingels selber gibt hier ein interessantes Interview dazu: "Dan Ingalls on the History of Smalltalk and the Lively Kernel".

→ siehe auch: Jens Mönig am Scratch Day 2013

Technik und Programmiersprachen: Morphic.js

Programmieren mit Snap auf dem iPad 2 von Apple: Geht ohne Java & Flash...

Eine wichtige Einschränkung des für Mitte 2012 (und inzwischen auf Q1 2013 verschobene, Alpha aber schon online für Eingeweihte) Scratch 2.0 ist, dass Projekte trotz Onlineeditor mit der Apple iOS-Reihe (iPhone, iPad und iPod touch) weder abgespielt noch bearbeitet werden können, da diese Geräte kein Flash unterstützen. Auch Android-Geräte haben mittlerweile Flash nicht mehr im Playstore, eine installation ist nur separat möglich und Flash-Programme wie Scratch können nur mehr über den Dolphin-Browser abgespielt werden.

Für den Player von Scratch bis Version 1.4, der auf Java basiert, galt dies ebenso. Java und Flash haben viele Befürworter, aber auch einige wichtige Gegner. Die Entwickler mußten also nach einer geeigneteren Technologie suchen, die sowohl ein so großes Projekt sicher und in allen Funktionen trägt, als auch eine hohe Kompatibilität für alle internetfähigen Geräte und Plattformen bietet. Was passt da besser als die zwei Onlinestandarts schlechthin: HTML und JavaScript?

"About"-box von Morphic.js

Die Basis, die der Snap! Hauptentwickler Jens Mönig dafür geschaffen hat, nennt sich Morpic.js. Es ist eine Morphic-Implemetierung in JavaScript.

Ein historischer Screenshot der Morphic Oberfläche in Squeak

Morphic ist die innovative grafische Benutzeroberfläche, die auch in der bisherigen Squeak Implementierung von Scratch das grafische Framework darstellt. Es besteht aus Morphs genannten graphischen Objekten, die vom Benutzer ohne Programmierung manipuliert werden können. Du kannst das blanke Morphic.js ohne Snap! hier live im Browser erleben und die umfangreiche englischsprachige Einführung von Jens hier lesen.

Zum Verständnis von Morphic.js sind allerdings Englisch- , Squeak- , Morphic-, Javascript- und HTML5-Canvas-Kenntnisse erforderlich. Jens hat darin quasi das Morphic-Framework aus Squeak, auf welcher das normale Scratch bis Version 1.4 beruht, in JavaScript nachgebaut und konnte so Snap! oben draufsetzen. Dadurch läuft die Entwicklungsumgebung in jedem Browser.

Faszinierend an Morphic.js und seinem Vorbild Lively Kernel ist, dass die "lebende" graphische Objektumgebung von Morphic.js allein durch die Ausführung der quelltextoffen auf dem Server liegenden HTML- und JavaSkript- Code entsteht: Es ist keine Serverkomponente und kein vorcomplierter Code beteiligt: Allein die Ausführung der Dateien im Browser schafft die "lebende Umgebung" von Morphic und das darauf basierende Snap!

Verbindung zu BYOB

Wie bereits oben erwähnt, ist Snap! der Nachfolger, beziehungsweise die nächste Version von BYOB.

Die Abkürzung "BYOB" hatte leider auch noch eine andere, im englischen sogar bekanntere Bedeutung als Build Your Own Blocks (Bau deine eigenen Blöcke) an die man zunächst nicht gedacht hatte. Nämlich das Motto bring your own beer/bottle (Bring Deine Flasche/Dein Bier selbst mit) von Buddelpartys. Daher hat man sich entschieden, einen neuen Namen zu suchen, der sich mit Snap! fand. Trotzdem wird Snap! 1.0 auch manchmal noch BYOB 4.0 genannt werden.

Neue Funktionen

Bisher sieht man im Nasciturus, verglichen mit dem Vorgänger BYOB 3.1, noch nicht allzu viel Neues. Das liegt natürlich daran, dass Snap! noch einige Wochen Entwicklung vor sich hat.

  • Slider, Zoom und Klapptastatur für Smartphones und Tablett PCs
  • Neuer Block: "warp"
  • Neuer Block: "call w/continuation"
  • Neuer Block: "run w/continuation"
  • Neuer Block: "in front of"
  • Neuer Block: "all but first of"
  • Neue Blockart: Ringe
  • Neuer Block: "http://"

Mehr kommt hoffentlich bald.

Snap! Projekte online speichern und veröffentlichen

Snap! bietet wie Scratch die Möglichkeit zum Speichern von Projekten auf einem Cloud-Server an. Die Funktion zum Veröffentlichen ist allerdings etwas versteckt unter dem "Projekt öffnen"-Dialog versteckt. In einem Forum-Posting kündigte Brian Harvey an, dass an einer Frontpage ähnlich wie bei Scratch gearbeitet wird [1]. Ein veröffentlichtes Projekt ist derzeit aber nur über die URL erreichbar, zum Beispiel:

http://snap.berkeley.edu/snapsource/snap.html#present:Username=frodewin&ProjectName=Diamond%20Hunter

Die URL enthält den Benutzernamen und den Projektnamen. An die URL kann noch &editMode, &noRun und &hideControls angehängt werden um die Darstellung anzupassen.

So veröffentlichte Projekte stehen unter einer Creative Commons Attribution-NonCommercial-ShareAlike (CC-BY-NC-SA) (siehe [2]), das bedeutet Inhalte die unter den Lizenzen CC-0, CC-BY, CC-BY-NC und CC-BY-NC-SA stehen dürfen in veröffentlichten Snap!-Projekten eingebaut werden (siehe auch Creative Commons Licence Compatibility Wizards).

Kompatibilitätstabelle zwischen den Creative Commons Lizenzen, Scratch und Snap!


Das bedeutet unter anderem, dass Inhalte von Scratch-Projekte nicht in Snap!-Projekte übernommen werden und vice versa.

Der Projektersteller kann laut Brian Harvey[3] auch auf den Non-Commercial-Teil der Lizenz verzichten, wenn dies in den Projektanmerkungen angegeben ist. Damit wäre die Lizenz dann CC BY-SA und somit zu jener von Scratch kompatibel.

Entwicklung miterleben!

Das schöne an Snap! ist, dass die Entwicklung offen auf der BYOB Webseite stattfindet. So muss man nicht auf die offizielle Fertigstellung warten, um sich einen Eindruck machen zu können. Allerdings darfst du nicht erwarten, dass schon alles perfekt und vollständig ist. Es handelt sich eben nur um eine Alpha. Inzwischen kann man auch auf Deutsch und andere Sprachen umschalten: Es sollen noch viele dazukommen, Chinesisch ist schon dabei ;-)

Snap! in der jeweils aktuellen Version in Deinem Browser starten hier:

Die Build-Versionenübersicht findest du hier:

Jens nummeriert seine Builds einfach durch, ohne ein Datum daran zu schreiben.
Um mal einen Bezug zu haben:

  • Build 121127 aktuelle Version am 28.11.2012
  • Build 130118 aktuelle Version am 20.01.2013
  • Build 130221 aktuelle Version am 21.02.2013
  • Build 130517 aktuelle Version am 23.05.2013
  • Build 130730 aktuelle Version am 31.07.2013
  • Build 130917 aktuelle Version am 17.09.2013
  • Build 140110 aktuelle Version am 21.01.2014
  • Build 140718 aktuelle Version am 19.07.2014
  • Build 141008 aktuelle Version am 09.10.2014
Start with v4.0.1
  • Build 150626 aktuelle Version am 16.05.2015
  • Build 151007 aktuelle Version am 15.11.2015


Jens Mönig (User-Foto auf Github)

Zugriff auf alle aktuellen Source-Dateien + Doku + Archive hier:

Die offizielle Webseite von Snap! und BYOB findest du hier:

Auf Github ist Snap! hier verortet:

https://github.com/jmoenig/Snap--Build-Your-Own-Blocks

Screenshots

Snap bietet neben dem klassischen an Scratch 1 angelehnten Design auch ein alternatives "Flat"-Design an.

Screenshots der Alpha-Version von Snap!

Für eine Vergrößerung bitte auf das jeweilige Bild klicken.

Hintergründe zu Snap!

Weblinks



Code zum Einbinden ins Forum:
[wiki=de:Snap!]Snap![/wiki]