Scratch ist ein vom MIT1 entwickeltes und weltweit verbreitetes digitales Baukastensystem, ein pädagogisch wertvolles und auf (nicht nur) mathematische (Grund-)Ausbildung ausgelegtes Programmierungstool, das schon Kinder und Jugendliche in die Lage versetzt, selbst Computerprogramme und -spiele sowie interaktive Kommunikationsmittel zu entwickeln. Scratch funktioniert wie ein Lego-Baukasten und fördert auf spielerische Weise das logische, mathematische, analytische und algorithmische Denken.

Der Anwendungsbereich von Scratch ist dabei keineswegs auf das Gebiet Mathematik/Computer beschränkt: Scratch ermöglicht es unter anderem,

  • interaktive Geschichten zu erzählen (Sprachunterricht),
  • geometrische Kunstformen, ähnlich der Op-Art, zu erzeugen,
  • Musikstücke zu komponieren und zu instrumentieren (Musikunterricht),
  • Modelle und Simulationen zu programmieren (Naturwissenschaften, Gesellschaftswissenschaften).

Diese ‑ im anglo-amerikanischen Sprachraum entwickelten ‑ Lehr- und Lernkonzepte (game based learning, meaningful play, serious games) spielen in der internationalen Diskussion um schulische und außerschulische Bildung aktuell eine große Rolle2.

1 Das „Massachusetts Institute of Technology“. Eines der renommiertesten Institute dieser Universität ist das von Nicholas Negroponte gegründete „MIT Media Lab“. Innerhalb des Media Lab entwickelte Mitchell Resnick mit seiner Forschungsgruppe „Lifelong Kindergarten Group“ die graphische Programmierumgebung Scratch.

2 Allein im Jahr 2016 finden auf US-amerikanischem Boden zwei bedeutende Konferenzen zum Thema statt, die „Serious Play Conference“ im Juli in North Carolina und die „International Academic Conference of Meaningful Play“ im Oktober in Michigan, beide nach derzeitigem Kenntnisstand ohne deutsche Beteiligung auf dem Podium.

 

Und weiter?

Scratch ist (nur) der Anfang, allerdings ein ganz schön mächtiger. Mit Scratch kann man moderne Programmiertechniken erlernen und anwenden: Parallelismus, Objekt-Orientierung, Ereignissteuerung, Prototyping, Messaging … So lassen sich mit Scratch bereits recht komplexe Programme erzeugen, zum Beispiel ein „Mandelbrot Set Explorer“, der die bekannte fraktale Apfelmännchen-Menge graphisch darstellt und eine endlose Zoom-Funktion bereitstellt, mit der man in die Graphik hineinfahren kann.

Aber selbstverständlich hat Scratch, das ja als visuelle Lern-Sprache entwickelt wurde, seine Grenzen. Die allerdings sind, wenn man mit Scratch grundlegende Programmier-Erfahrungen gesammelt hat, schnell zu überwinden:

Wer Scratch kann, kann auch Snap!

Snap! Ist der erwachsene Bruder von Scratch. Snap! Sieht Scratch unglaublich ähnlich, alle wesentlichen Elemente von Scratch sind auch in Snap! enthalten – mit Ausnahme der „spielerischsten“ Elemente wie umfängliche Graphik-Unterstützung, Darsteller-Bibliotheken Drum-Computer und Sythesizer. Dafür bietet Snap! Eine solche Fülle komplexer Programmier-Pradigmen (First-Class-Objekte, Metaprogrammierung, frei definierbare Daten- und Kontrollstrukturen), dass es an der renommierten University of Berkeley als Lehrsprache im Computer Science Departement eingesetzt wird.

Scratch und Snap! haben gegenüber herkömmlichen Programmiersprachen einen enormen Vorteil: die weite Kluft zwischen Idee und fertigem Code entfällt, die „Klötze“, aus denen diese visuellen Programmier-Umgebungen bestehen, sind auf der einen Seite anschaulich wie Ablaufdiagramme, auf der anderen Seite sind sie unmittelbar lauffähig. 3

3 „Theorie der Klötze“, Keynote von Jens Mönig, dem Chefentwickler von Snap!, auf der 16, Tagung der Fachgruppe „Informatik-Bildung in Berlin und Brandenburg“ der Gesellschaft für Informatik, Potsdam 2017.

 

Diesen Vorteil geben wir allerdings aus der Hand, wenn wir uns von den visuellen Programmier-Umgebungen aus den textbasierten Programmiersprachen zuwenden. Python, eine der am häufigsten eingesetzten Sprachen, ist in seinen Kontrollstrukturen Snap! (und damit auch Scratch) so ähnlich, dass es direkte Zuordnungen gibt, wie aus Scratch-Blöcken Python-Befehle werden.

 

 

 

Wer Scratch gelernt hat und mit Snap! entwickelt hat, der kann auch Python!