Snap!

Letzte Vorletzte Woche Vor drei Wochen habe ich in München einen Workshop zur graphischen Programmiersprache Snap! gehalten, beim Tag der Informatiklehrerinnen und Lehrer, organisiert u.a. vom geschätzten Kollegen Herrn Rau.

„In zwei Stunden von der Grundschule ins Informatikstudium“ war das Motto, d.h. es ging mir darum, den Teilnehmern in kurzer Zeit einen Einblick über die das breite Spektrum von Themen zu geben, die man mit Snap! abdecken kann — angefangen mit dem Zeichnen einfacher geometrischer Figuren (à la LOGO und Scratch) bis hin zu Lambda-Ausdrücken und dem Programmieren eigener Kontrollstrukturen*.  indexIch bin v. a. deshalb von Snap! so angetan, weil man auch komplexe Konzepte wie Rekursion oder first-class Funktionen ganz ohne Syntaxbarriere vermitteln kann.

Wer schon einmal mit Scratch gearbeitet hat, weiß, wie sehr das „Zusammenpuzzeln“ von Programmen die Schüler zum schnellen Experimentieren einlädt. Snap! geht in dieser Hinsicht nochmal einen kleinen Schritt weiter, denn um losprogrammieren zu können, muss nun nicht einmal mehr eine Software installiert werden:   Snap! läuft komplett im Browser, d.h. man braucht als Benutzer nichts zu installieren, sondern geht einfach auf http://snap.berkeley.edu/snapsource/snap.html (oder sucht im Web nach „run snap“) und legt los.

Selber loslegen sollten auch die Teilnehmer des Workshops; deswegen habe ich versucht, ihn so interaktiv wie möglich zu gestalten.  Das kann ich in einem Blogartikel so natürlich nicht machen.  Ich habe aber hinterher meine Präsentation so überarbeitet, dass sie — hoffentlich — auch für sich allein einigermaßen lesbar ist.  V.a. enthält sie nun ganz viele Links zu meinen Beispielprogrammen in der Snap!-Cloud. Einfach einen Programmlink anklicken, Programm ausprobieren und dann das Symbol mit den beiden Pfeilen drücken, um den Source-Code anschauen.

Zur Präsentation

Zum Beispiel findet ihr dort diesen hübschen Baum und diese Animation (bitte Maus im Fenster bewegen). Und noch vieles mehr… also viel Spaß bei Lesen und Mitprogrammieren!

In der Nacht vor dem Workshop fiel mir noch ein schönes Beispiel ein… was dazu führte, dass ich mich um 2 Uhr früh in München nochmal an einen fremden Rechner gesetzt und programmiert habe. (Dabei war es natürlich ganz großartig, dass ich weder die Software noch meinen eigenen Code auf dem Laptop oder einem Stick dabeihaben musste.) Was mir da einfiel, war der Quicksort-Algorithmus, das klassische Beispiel für ein Divide-and-Conquer-Verfahren.**

qs

Wer mag, darf sich als Hausaufgabe gern selbst an der Umsetzung in Snap! oder der Programmiersprache seiner Wahl versuchen.  Eine (erste) Snap!-Lösung findet ihr in der Präsentation.  Ich werde das Quicksort-Beispiel noch sehr ausführlich in einem weiteren Artikel diskutieren, in dem es um die Expressivität von Programmiersprachen für die Schule geht.

Für heute soll’s hiermit aber gut sein! Ich weiß selbst noch überhaupt nicht, ob und wie ich Snap! weiter einsetzen werde.  Vieles daran ist orthogonal zu den Lehrplänen, nach denen ich unterrichten werde, und vielleicht auch manchmal zu dem, was Schüler und spätere Arbeitgeber von Informatikunterricht erwarten.

Was denkt ihr? Wie findet ihr Snap!? Würdet ihr es im Unterricht einsetzen?*** Ich freue mich sehr über (positive wie kritische) Rückmeldungen zu Snap!, dem Workshop und den Materialien.

* Versucht das mal in Java!

** Wir haben das damals noch im Grundkurs Informatik, Klasse 13, nach 2 Jahren Informatikunterricht gelernt. Kommt mir heute durchaus anspruchsvoll vor. Und ist natürlich auch so gar nicht objektorientiert…

*** Das Thema „Snap! und Objektorientierung“ haben wir im Workshop diskutiert. Hier nur ganz kurz: In der aktuellen Version von Snap! kann man durchaus objektorientiert programmieren, es ist aber alles andere als natürlich im Vergleich zu Sprachen, die explizit für OOP entworfen wurden.  Dass es überhaupt geht, ist ein Beweis für die Ausdrucksstärke der Sprache (Zitat aus dem Reference Manual: „Snap! is Scheme disguised as Scratch“).  Ich kann überhaupt die Lektüre dieses Manuals nur empfehlen.  Ihr werdet mit den Ohren schlackern!

Advertisements

3 Gedanken zu „Snap!

  1. Danke für die Einführung und die Materialien. Im Moment nutze ich Scratch für den schnellen Einstieg und wechsle recht bald zu einer textbasierten Form der Programmierung. Ich habe Angst, dass sich meine Schüler zu schnell an diese Form der Programmierung gewöhnen und Quelltext später als unnatürlich empfinden.

    • Ja, habe ich genauso gemacht, nur jetzt beim zweiten Mal noch ein ganz kleines bisschen Snap! um die Idee der „eigenen Blöcke“, d.h. Funktionen/Prozeduren, einzuführen. Vorteil: Spiralprinzip (aus Snap Bekanntes in der neuen Programmiersprache Java nochmal wiederholen). Nachteil: Kostet doch ordentlich Zeit, die woanders fehlt. Und ja, die Schüler haben sich auch bei mir z.T. gegen den Quelltext gesträubt bzw. hätten gerne bis zum Schluss Snap! weitergemacht. Aber das kann doch kein Argument *gegen* eine solche visuelle Sprache sein! Im Idealfall macht man ihnen klar, dass trotz unterschiedlicher Syntax die gleichen Ideen dahinterstecken und dass manches eben mit Quelltext doch schneller/einfacher geht. Was mir aber dabei so klar geworden ist, wie nie zuvor: Syntax matters!

  2. Pingback: Mehr Expressivität wagen | Zurück in die Schule

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s