Programmieren mit Scratch

Programmieren lernen als Kind oder Jugendlicher

Möchte man in der heutigen Zeit als junger Mensch in die Welt der Programmierung einsteigen, ist es trotz der Menge an Onlineangeboten und Büchern sehr schwer Fuß zu fassen. Wenn man im Internet zum Beispiel nach Spielprogrammierung fragt, bekommt  man antworten wie: „Geh erstmal studieren“, „Kauf dir ein C++-Buch“ oder „Einfach geht das das nicht, da muss man jahrelang Erfahrung haben“. Ist doch klar, das Kinder und Eltern bei solchen Antworten frustriert und überfragt sind. 

Ob Kinder direkt Spiele programmieren wollen, überlassen wir mal den Kindern. Fakt ist, dass Kinder neue Themen spielerisch lernen wollen und das geben heutige Fachbücher und Onlinekurse einfach nicht her. Das MIT Media Lab(Link) der Universität Massachusetts Institute of Technology (bekannt unter dem Namen MIT) hat bereits 2007 unter der Leitung von Mitchel Resnick eine grafische Programmiersprache entwickelt, die Kindern das Programmieren spielerisch beibringt.
Diese Sprache ist so einfach zu bedienen wie LEGO-Blöcke ineinander zu stecken. Mit dem Unterschied, dass jeder dieser Blöcke ein Befehl ist und etwas im Computer „macht“. Somit kann man mehrere Befehle zu einem Programm zusammenstecken und damit auch schon als kleiner Programmierer Spiele entwickeln. Jugendliche und Erwachsene, die früher schon gerne mit LEGO gespielt haben, sollten wenigstens einmal Scratch ausprobieren. Innerhalb von ein paar Minuten kann man ein kleines Spiel programmieren und ruck zuck sind 3 Stunden vergangen, ohne auf die Uhr zu gucken.
Was Scratch genau ist, wie man damit programmieren lernen kann und ob Scratch eventuell einen Einfluss auf die Softwareentwicklung in den nächsten Dekaden hat , möchte ich in diesem Artikel beleuchten.

Was ist Scratch?

Die Einleitung hat es bereits erwähnt, mit Scratch zu programmieren ist wie mit LEGO etwas zusammenzubauen.
Mit Scratch kann man seit 2007 auf der Webseite des MIT, kleine Projekte programmieren und der digitalen Welt zur Schau stellen und zwar kostenlos. Scratch ist somit eine erziehungsorientierte Programmiersprache. Diese hat das Ziel, Menschen die Prinzipien der Software-Entwicklung beizubringen.
Besucht man die Seite von Scratch sieht man direkt eine Menge an Projekten von anderen „Scratchern“. Man kann diese Projekte einfach ausprobieren, aber auch direkt in deren Quellcode hinein schauen (Open Source im wahrsten Sinne des Wortes). Scratch an sich besteht aus einem Editor. Dort hat man eine Bühne auf der Objekte bzw. Figuren abgelegt werden können. Auf dieser Bühne können die Objekte sich bewegen, miteinander agieren und alles das tun, was man den Objekten mittels Blöcken einprogrammieren kann.
Die Programmierung erfolgt in einem Skriptbereich. Zur Auswahl stehen verschiedene Befehlsarten:
  • Bewegung: Befehle dienen zur Fortbewegung und Drehung von Objekten
  • Aussehen: Objekte können einen Text anzeigen, das Kostüm wechseln
  • Klang: Jedes Objekt kann Klänge von sich geben
  • Malstift: Mit einem Stift kann man auf der Bühne etwas malen, ja genau: programmgesteuert.
  • Steuerung: Um die Befehle nach bestimmten Bedingungen oder wiederholt laufen zu lassen, gibt es die gelben  Steuerungsstrukturen
  • Fühlen: Objekte können z.B. fühlen ob sie andere Objekte berühren.
  • Operatoren: Sie sind dazu da, Werte miteinander zu kombinieren oder zu berechnen.
  • Variablen: Punktzahl oder Lebenspunkte abspeichern und verwenden.
  • Eigene Blöcke: Damit die Programme etwas an Übersichtlichkeit gewinnen kann man eigene Blöcke mit Befehlen erstellen, diese Blöcke lassen sich dann einfacher verwenden.

Warum Scratch?

Scratch ist so einfach weil derjenige, der es benutzt, sich nicht um das Eintippen von Befehlen kümmern muss. Klassische Probleme von Anfängern sind das fälschliche Eintippen von Befehlen. Rechtschreibung und Grammatik sind in Programmiersprachen zwingend einzuhalten. Als Programmierneuling vertippt man sich gerne und merkt nach stundenlanger Suche, dass man eine Klammer oder ein Semikolon falsch oder gar nicht gesetzt hat. Alleine Groß- und Kleinschreibung in Quelltexten kann Anfänger komplett frustrieren.
Bei Scratch dagegen kann man kaum Fehler machen. Man schiebt  die Befehle hin und her und wenn der Befehl in oder an einen  anderen Befehl passt, rasten diese automatisch ein. Die verschiedenen Formen und Farben erkennt man intuitiv – jeder Mensch lernt schon im Babyalter das ein Rechteck nicht in eine kreisrunde Form passt (hoffentlich). Und wenn Du dich grad wunderst? Ja es funktioniert wirklich so einfach.
Befehle haben oben eine kleine Kerbe und unten eine kleinen Hubbel. So passt ein Befehl unter den anderen:
2 Befehle, die nacheinander ausgeführt werden
2 Befehle, die nacheinander ausgeführt werden
Die Orientierung an Objekten bzw. Figuren macht das Ganze für den Benutzer greifbar. Der Nutzer führt keine Befehle aus oder rechnet mit Operationen. Er dreht und bewegt Figuren. Die Figuren interagieren miteinander. Bei Werten und Variablen kann es dann schon etwas komplizierter werden. Aber mit genug Neugier und Trial and Error, lernt das Kind auch das zu verstehen. Spätestens, wenn das Kind Gleichungen in der Schule hatte und weiß wie man mit „Buchstaben“ rechnet, sind Variablen kein Problem. Zusammengefasst, der Einstieg in die Welt der Programmierung ist mit Scratch nicht nur für Kinder „kinderleicht“.

Wie funktioniert Scratch genau?

Die Objekte sind der Hauptbestandteil von Scratch. Objekte haben Kostüme, also ein Aussehen, welches man wechseln kann. Auch Klänge können Objekte von sich geben. Der wichtigste Teil von Objekten ist, dass jedes Objekt programmiert werden kann. Aber auch die Bühne kann programmiert werden. Wählt man ein Objekt oder die Bühne aus, findet man im rechten Bereich die Befehlsarten und den Skriptbereich. Über simples Drag’n’drop können Befehle in den Skriptbereich gelegt werden. Ist man sich nicht sicher was ein Befehl ausführt also konkret macht, reicht ein simpler Klick darauf aus und schon wird der Befehl einmalig durchgeführt. Probiert man mal alle Befehle aus, kennt man die Bandbreite von Scratch und von nun an bestimmt die eigene Kreativität und das eigene Logikverständnis die Grenzen des Möglichen. Die grüne Fahne startet dabei das Hauptprogramm. Dieses kann man mit einer „grünen Fahne geklickt“-Ereignis (unter Ereignisse) programmieren. Mit dem roten Knopf wird das Programm gestoppt.
Oberfläche von Scratch
Oberfläche von Scratch

Vergleich zu anderen Programmiersprachen

Vergleicht man Scratch mit anderen, höheren Programmiersprachen, erkennt man wieder, dass es die selben Grundelemente gibt. Egal ob Skriptsprache, objektorientierte Programmiersprache, Pseudocode oder Scratch. Es gibt ein paar Grundelemente, die jeder Programmierer erlernen muss und irgendwann intuitiv beherrscht und Scratch beinhaltet diese ebenfalls:
  • Befehle und Befehlsabfolge
  • Werte und Operationen
  • Variablen
  • Bedingungen und Entscheidungen
  • Wiederholungen
  • Ereignisse
Somit könnte man behaupten, wenn man in Scratch diese Grundelemente intuitiv beherrschen kann, ist man in der Lage einfache Programme zu schreiben. Somit sollte jeder „Scratcher“ in der Lage sein, einfache Problemstellungen mittels einfachster Programmierlogik und Pseudocode lösen zu können.
Große, komplexe Anwendungen sind sicherlich auch mit Scratch machbar, allerdings würden die Skripte sehr umfangreich und unübersichtlich werden.
An die Entwickler unter den Lesern: Spannend wäre sicherlich eine Mischung aus CleanCode und Scratch, dann müsste sich Quellcode lesen können wie eine Bilderbuchgeschichte *hust*
Auch wenn durch die Objekte das objektorientierte Verständnis in Scratch gefördert wird, bei der Objektorientierung hört Scratch dann auf. Eigene Klassen oder Objekte desselben Typs gibt es nicht. Es gibt die Möglichkeit, Objekte zu klonen und zu zerstören, was einem schon sehr viel Flexibilität bietet, aber hier ist dann auch dementsprechend viel Abstraktionsvermögen beim Lernenden gefragt. Was allerdings in Scratch super funktioniert, ist Parallelität. So einfach wie in Scratch kann man IMHO in keiner Sprache parallele Abläufe programmieren und dabei den Überblick beim Deduggen behalten. Hier können sich sicherlich heutige Programmiersprachen und Debugger in Sachen Übersichtlichkeit eine Scheibe abschneiden.

Links, Ressourcen und Lehrmaterial

Wer mehr über Scratch lernen möchte oder vielleicht direkt online eintauchen möchte sind folgende Links zu empfehlen:

Fazit

Wenn es darum geht, jungen Menschen programmieren beizubringen, hat sich Scratch als Einstieg in die Programmierwelt mehr als bewährt. Den Ansatz gibt es schon seit vielen Jahren, aber Scratch hat es geschafft, das Thema so interessant zu gestalten, dass sie damit ordentlich Aufmerksamkeit erzeugen. Nicht ohne Grund schlägt fast jedes CoderDojo vor, mit Scratch zu starten und bietet dieses Thema an. Und meiner Meinung nach eignet sich diese Sprache nicht nur für Kinder. Jeder Jugendliche und Erwachsene, der schon immer mal programmieren lernen wollte, aber nie den richtigen Einstiegspunkt gefunden hat, empfehle ich: gleich den Editor starten und loslegen. Wenn sich ein Anfänger für Scratch nicht begeistern kann, dann sollte er seine Entwicklerkarriere vielleicht überdenken.
Wie sieht es bei euch aus? Welche Erfahrungen habt ihr mit Scratch sammeln können? Ihr dürft uns auch gerne eure Projektlinks zu schicken. Kommentiert einfach unten, ich freue mich auf eine schöne Diskussion!