Scratch (Programmiersprache)
# Scratch (Programmiersprache)

Scratch ist eine erstmals 2007 veröffentlichte bildungsorientierte blockbasierte visuelle Programmiersprache für Kinder und Jugendliche inklusive ihrer Entwicklungsumgebung und einer eng verknüpften Online-Community-Plattform.

## Zielsetzung

Ihr Ziel ist es, Neueinsteiger – besonders Kinder und Jugendliche – mit den Grundkonzepten der Programmierung vertraut zu machen. Unter dem Motto imagine, program, share („Ausdenken, Entwickeln, Teilen“) wird die kreative und explorative Erstellung eigener Spiele und Multimedia-Anwendungen, verbunden mit dem gegenseitigen Austausch darüber, als Motivation genutzt. Kostenlos und werbefrei können die Ergebnisse in einer internationalen Online-Community mit dem Scratch-Player abgespielt, diskutiert und weiterentwickelt werden. Außerdem gibt es einige Beispiele, die Anregungen für Einsteiger schaffen und das Prinzip des Programmierens näher bringen.

## Namensherkunft

Der Name Scratch leitet sich von der DJ-Scratchtechnik ab. Die Gemeinsamkeit zum musikalischen Scratchen ist die leichte Wiederverwendbarkeit von Versatzstücken: In Scratch können alle interaktiven Objekte, Grafiken und Töne leicht von einem in ein anderes Scratch-Projekt übertragen und dort neu kombiniert werden (siehe: Remixingkultur). Dadurch erhalten Anfänger sehr schnell Erfolgserlebnisse, die motivieren, sich vertieft mit der Materie auseinanderzusetzen.

## Entwicklung und Implementierung

Das erstmals 2007 veröffentlichte Scratch wurde unter der Leitung des US-amerikanischen Professors für Lernforschung Mitchel Resnick von einem kleinen Forschungsteam, der Lifelong Kindergarten Group, am MIT Media Lab entwickelt und größtenteils von der National Science Foundation und freiwilligen Spenden finanziert.
Als Schüler des Mathematikers und Psychologen Seymour Papert entwickelt Resnick, basierend auf konstruktionistischen Lerntheorien, mithilfe digitaler Technologien Lern- und Experimentierumgebungen, die die kreativen Potentiale von Kindern und Jugendlichen fördern.
Die erste Implementierung der Scratch-Entwicklungsumgebung basierte auf Squeak (Scratch 1.0 im Jahr 2007 bis Scratch 1.4 im Jahr 2009), der Scratch-Web-Player zunächst auf Java, seit 2011 wahlweise auch auf Flash. Die Version Scratch 2.0 erschien am 9. Mai 2013 und basierte komplett auf Flash. Es gibt Scratch-Player für Squeak (Offline), Java und Flash (Online).
Das aktuelle Scratch 3.0 basiert auf JavaScript, Python, ActionScript und Shell. Die gesamten Scratch Ressourcen sind frei verfügbar unter GitHub. Unterstützung für Touch-Bedienung gibt es für Mobile Chrome und Safari.
Die „Scratch-App“ ist ein Offline-Editor, mit dem Scratch-Projekte offline erstellt werden können. Installations-Voraussetzungen sind Windows 10+, macOS 10.13+, ChromeOS oder Android 6.0+.

## Entwicklungsumgebung, Internetplattform, Scratch-Player
### Scratch bis Version 1.4

Die Entwicklungsumgebung kann kostenlos aus dem Internet heruntergeladen werden. Da sie mit dem plattformunabhängigen Smalltalk-Entwicklungssystem Squeak erstellt ist, gibt es Versionen für Windows, macOS und potentiell für weitere Betriebssysteme. Die mit Scratch erstellten Programme können direkt aus der Entwicklungsumgebung in einen persönlichen Benutzerbereich der Scratch-Website hochgeladen werden. Dort können die Programme von anderen Mitgliedern der Scratch-Community genutzt, kommentiert und zum Lernen und zur Weiterentwicklung heruntergeladen werden. Zur Ausführung direkt im Webbrowser dient ein Java-Interpreter, der sogenannte Scratch-Player.

### Scratch ab Version 2.0

Die Entwicklungsumgebung ist auf der Scratch-Website direkt lauffähig und wie der neue Scratch-Player komplett in Flash erstellt. Download und Installation sind daher nicht mehr erforderlich. Eine Offline-Version zum Herunterladen für Mac OS, Windows und einige Linux-Versionen (32 bit) ist ebenfalls verfügbar, erfordert aber Adobe AIR. Da Scratch-Web-Player auf Java oder Flash basieren, welche auf den mobilen Geräten von Apple (iPhone/iPad/iPod) nicht unterstützt werden, lassen sich Scratch-Projekte und die Scratch 2.0 Entwicklungsumgebung dort nicht ausführen. Eine eigenständige Scratch-Player-App für diese Geräte war bereits im App-Store gelistet, so dass man dort alle Scratch-Projekte ausführen konnte, wurde jedoch von Apple nach einigen Monaten wieder verbannt. Eine Alternative wird die Scratch-Modifikation BYOB 4.0/Snap! darstellen, deren Web-Player und Entwicklungsumgebung auf HTML5-Canvas und JavaScript basieren, die aber bisher erst im Betastadium und noch nicht voll kompatibel zu Scratch vorliegt.

### Scratch ab Version 3.0

Seit Januar 2019 ist Scratch in der auf HTML5 und JavaScript basierten Version 3.0 verfügbar. Diese Version bietet nicht nur einige neue Blöcke und Funktionen, sondern kann erstmals auch auf mobilen Geräten wie dem iPad im Standard-Browser genutzt werden. Auf Smartphones ist der Scratch-Editor allerdings nicht sinnvoll einsetzbar, da der Bildschirm zu klein ist.
Systemvoraussetzungen:
Unterstützte Browser: Desktop (Chrome 63+, Edge 15+, Firefox 57+, Safari 11+, Internet Explorer wird nicht unterstützt); Tablet (Mobile Chrome 63+, Mobile Safari 11+);
Unterstützte Betriebssysteme für den Scratch-App-Editor: Windows 10+, MacOS 10.13+, iOS 10+ (nur Tablets), Android 7.0+ (nur Tablets)

## Verbreitung und Nutzung

Seit 2007 breitete sich die Scratch-Idee u. a. durch den Netzwerkeffekt rasch aus. So entstand eine weltweit wachsende Gemeinschaft von Programmieranfängern, Schülern, Studenten, Pädagogen und Hobbyisten, die sich gegenseitig motivieren und unterstützen. Daraus resultierten lokale Gruppen, Ereignisse, Kurse, Übersetzungen, Beispiele, Unterrichtsmaterialien und vieles mehr, um Programmieranfängern zu helfen, ihre Kreativität und Kenntnisse zu entwickeln. Befördert wurde dies durch die intuitive Bedienung und leichte Übersetzbarkeit sowohl der Scratch-Entwicklungsumgebung als auch der Scratch-Website. Hinzu kommt eine erfolgreiche Kommunikation und Medienarbeit des MIT-Scratch-Teams (u. a. dem weltweiten Scratch Day, der Ausbilder-Plattform ScratchEd, dem Scratch-Wiki sowie vielen wissenschaftlichen Publikationen, Interviews und Beiträgen in verbreiteten US-Medien).

### Internationalität und Übersetzbarkeit von Scratch

Die Internationalität dieser Benutzergemeinde wird durch die leicht zugängliche Mehrsprachenfähigkeit aller Scratch-Plattformen gefördert, mit der die Online-Community die Entwicklungsumgebung, die Webplattform und auch die Programmierbefehls-Bausteine selbst in alle Sprachen übersetzt, womit Scratch u. a. auch komplett in Deutsch zur Verfügung steht. Auch in Ländern mit nicht auf lateinischen Buchstaben basierenden und von rechts nach links zu schreibenden Sprachen kommt Scratch zum Einsatz, denn bestehende Scratch-Projekte lassen sich per Knopfdruck auch in solche Sprachen umschalten. Bei der Übersetzung wird mit lokaler und/oder serverbasierter Pootle-Technologie gearbeitet.

### Scratch Anwender-Zahlen

Von den Anfängen im März 2007 bis Ende 2012 legten mehr als 1.300.000 Anwender – mit einem Altersschwerpunkt zwischen 8 und 16 Jahren – ein Scratch-Onlinekonto an, von denen über 400.000 in dieser Zeit insgesamt mehr als 3.000.000 selbstentwickelte Scratch-Projekte ins Netz stellten und über 1.380.000 Posts schrieben (in 13 englischsprachigen und 17 internationalen Scratch-Community-Foren). Da mit Scratch auch ohne Benutzerkonto gearbeitet werden kann und die aktuelle Scratch-Entwicklungsumgebung in vielen Unterrichtsformen ohne Webeinsatz genutzt wird, beträgt die Anzahl der Scratch-Anwender wahrscheinlich ein Vielfaches der angemeldeten Benutzer. Mittlerweile sind mehr als 89.000.000 Accounts auf Scratch registriert und es wurden mehr als 102.000.000 Projekte veröffentlicht.

### Scratch an Erziehungseinrichtungen

Scratch wird weltweit in verschiedensten Schulformen und Unterrichtsveranstaltungen eingesetzt. Schulen in Deutschland, Schweiz, Österreich und Luxemburg nutzen Scratch zunehmend. Auch an Universitäten werden Scratch oder das auf Scratch basierende Snap! (BYOB) zur Einführung in die Programmierung verwendet, etwa an der Universität Berkeley für Nicht-Informatiker oder an der Universität Hildesheim für Studierende des Lehramts.

### Scratch als Hobby

Neben dem Einsatz in Bildungseinrichtungen wird die Verbreitung von vielen freien Organisationen vorangetrieben, die sich in Sammelbewegungen wie der deutschen Initiative Jeder kann programmieren oder der amerikanischen Code.org darstellen. So kommt Scratch auch außerhalb von Schulen in Hobby und Familie zum Einsatz. Viele Jugendliche entdecken Scratch selbstständig auf der Suche nach Möglichkeiten, wie sie selber leicht ein Computerspiel entwickeln und es anderen präsentieren können. Speziell Eltern mit IT-nahen Berufen nutzen Scratch häufig, um ihren Kindern schon in jungen Jahren einen motivierenden Einblick in die IT-Welt vermitteln zu können. Zunehmend entwickeln sich auch im deutschsprachigen Raum Clubs oder Vereine für MINT-begeisterte Jugendliche, oder auch zur Förderung von MINT-Erziehungs-benachteiligten Kindern aus bildungsfernen Haushalten (z. B. Computer-Clubhouse-Bewegung in den USA), die ebenfalls Scratch einsetzen. Neben solchen physischen Hobbygemeinschaften haben sich auch viele virtuelle Onlinegruppen von Hobbyisten gebildet, die gemeinsam Projekte realisieren und dazu regelmäßig online zusammenkommen, um sich über ihr Hobby auszutauschen.

### Scratch Week

Der seit 2009 jährlich stattfindende Scratch Day (jetzt Scratch Week) trägt mit vielen lokalen Aktionen stark zur Verbreitung der Scratch-Idee bei, im deutschsprachigen Raum zuletzt am 13. Mai 2017 an der Alpen-Adria-Universität in Klagenfurt. Der vom MIT-Scratch-Team ausgerufene erste weltweite „Scratch Day“ am 16. Mai 2009 dokumentiert dies: Auf der dazugehörigen Website trugen sich innerhalb von wenigen Wochen weit über 100 regionale Organisationen, wie Schulen oder Computerclubs, ein, die eines der lokalen Scratch-Day-Ereignisse organisierten. Zum ersten deutschen Scratch Day 2009 kamen in Bochum Scratch-Experten aus ganz Deutschland zusammen, um Scratch für Kinder, Eltern, Lehrer und Wissenschaftler unter verschiedensten Aspekten vorzustellen.

### Scratch@MIT-Konferenz

Scratch@MIT ist eine Konferenz für Lehrer, Professoren, Forscher, Entwickler und alle, die sich mit Scratch oder dem Unterrichten von Kindern beschäftigen. Bei der Konferenz können Erfahrungen und Geschichten ausgetauscht, Workshops besucht und Vorträge angehört werden. Die Konferenz findet alle zwei Jahre (2008, 2010, 2012, 2014) am MIT Media Lab in Cambridge, Massachusetts, USA, statt und folgt jeweils einem ausgewählten Motto. Die Scratch-Konferenz am MIT bildet ein Äquivalent zur neu eingeführten europäischen Scratch-Konferenz (2013), die immer in den Jahren zwischen den Scratch@MIT-Konferenzen stattfindet. Die Scratch@MIT-Konferenz 2014 fand vom 6. bis zum 9. Juli unter dem Motto „Projects, Peers, Passion, Play“ statt.

### Europäische Scratch-Konferenzen

In den Jahren 2008, 2010 und 2012 konnten Interessierte an der Scratch-Konferenz im MIT Media Lab in Cambridge, Massachusetts, teilnehmen. Mitglieder der europäischen Scratcher-Gemeinschaft fanden, dass es auch für Scratcher, die nicht die Möglichkeit haben, in die USA zu reisen, eine Gelegenheit zum Treffen mit anderen Scratchern geben sollte. Scratch Connecting Worlds 2013 in Barcelona war die erste europäische Scratch-Konferenz. Sie fand von 25. bis 27. Juli in von der Citilab Barcelona zur Verfügung gestellten Räumlichkeiten statt. Erzieher, Forscher, Entwickler und andere Mitglieder der weltweiten Scratch-Gemeinschaft nutzen die Gelegenheit um die kreativen Möglichkeiten von Scratch zu feiern und zu teilen.
Die insgesamt siebente internationale Scratch-Konferenz hat den Titel Scratch2015AMS – Creative communities und findet in Amsterdam vom 12. bis 15. August 2015 statt.

### ScratchEd

ScratchEd ist eine englischsprachige Online-Community für Lehrer und andere Ausbilder, die mit Scratch arbeiten. Dort haben die Mitglieder einige hundert Materialien, Quellen und Tipps für die Bildungsarbeit mit Scratch eingestellt. Außerdem können sich die Anwender über die Website austauschen und miteinander in Kontakt treten. Die Hauptsprache ist Englisch aber auch in vielen anderen Sprachen, u. a. Deutsch, wurden bereits für den Unterricht nützliche Materialien hinterlegt. Das Angebot umfasst Anfang 2013 u. a. 193 Storys (d. h. Berichte über Veranstaltungen) und einige hundert Ressourcen, deren Anwendungsbereich vom Kindergarten bis zur Hochschule und über alle Fachbereiche geht.

### Scratch-Wiki

Das Scratch-Wiki ist ein freies, gemeinschaftlich geschriebenes Wiki auf MediaWiki-Basis, das Informationen über die Programmiersprache Scratch, deren Websites, Geschichte und begleitende Phänomene enthält. Das Wiki wird vom Scratch-Team unterstützt, ist aber im Wesentlichen von Scratchern geschrieben. Das Scratch-Wiki ist eine beliebte Quelle für Informationen über Skripte und Anleitungen die ständig weiter wächst, weil es Scratcher als ihre erste Informationsquelle nutzen. Das erste internationale Schwester-Projekt ist das ebenfalls vom Scratch-Team unterstützte DACH-Scratch-Wiki in deutscher Sprache. Das englischsprachige Scratch-Wiki wurde am 6. Dezember 2008 gegründet und enthält über 1400 Artikel, das deutschsprachige Scratch-Wiki wurde am 8. Februar 2012 gegründet und enthält über 750 Artikel. Mittlerweile existieren Wikis auf Französisch, Niederländisch, Russisch, Ungarisch, Japanisch und Indonesisch.

### Remixingkultur

Ein wesentlicher (namensgebender, s. o.) Aspekt von Scratch ist es, dass sich die Nutzer von vorhandenem Medien-Material inspirieren lassen, daraus lernen, es neu kombinieren, verändern und ergänzen, um eigene Werke daraus zu schaffen. Diese werden dann wiederum anderen zur Verfügung gestellt. Die Entwicklungsumgebung bringt dafür bereits einen großen Fundus an Beispielprojekten, Spielfiguren, Grafiken und Sounds mit, der für erste Einsteigererfahrungen umfangreiches Ausgangsmaterial liefert. Dieses wird erweitert durch selbstgemachte oder aufgezeichnete Bild- und Tondateien, sowie den Multimediaelementen oder ganzen Spielfiguren und Programmen, die aus bereits veröffentlichten Scratch-Projekten anderer entnommen werden können. Das Wiederverwenden der Spielfiguren in anderen Projekten wird gefördert, indem sie komplett mit allen ihren Kostümen, Klängen und Programmen aus Projekten als Datei exportiert und in andere importiert werden können, was häufig ohne größere Anpassungen zu lauffähigen Kombinationsprojekten führt. Das Herunterladen fremder Projekte, anschließendes Ändern und Erweitern und Hochladen als eigenes Projekt wird in Scratch als Remixing bezeichnet und ist eine beliebte und positiv bewertete Vorgehensweise. Remixing wird daher nicht als Plagiat oder Ideendiebstahl gesehen, sondern als Gemeinschaftserfahrung und als eine Ehre für denjenigen, dessen Material verwendet wird. Remixing wird unterstützt, indem ein Projekt seine Herkunft mit sich trägt und der Weg des Remix auf der Scratch-Website bis zum Ursprungsautor rückverfolgbar ist. Auf der Scratch-Website entstehen so durch eine spezielle Visualisierungsseite Remixing-Ketten und -Bäume, die durchaus hunderte von Projekten umfassen können.

## Prinzipien von Sprachumfang und Bedienung

Bei Sprachumfang und Bedienung wurde hohe Priorität auf den intuitiven Zugang und auf die Vermeidung von hoher Komplexität oder Abstraktion gelegt. Mächtigen Funktionen wie Multimediaelementen und Multitasking stehen starke Einschränkungen in Peripherienutzung und Sprachumfang gegenüber. Alle Elemente, die den intuitiven Einstieg behindern könnten, wurden in empirischen Studien identifiziert und eliminiert. Alles, was den Einsteiger motiviert, sein Verständnis erleichtert und zur explorativen Entwicklung ermutigt, wurde betont. Spielerisches Lernen steht im Vordergrund. So können bereits Grundschulkinder erste Anwendungen erstellen und Jugendliche schnell hochmotivierende Ergebnisse erhalten. Aber selbst erfahrene erwachsene Programmierer haben sich der Scratch-Community angeschlossen. Sie reagieren – trotz der starken Einschränkungen – positiv darauf, wie schnell und intuitiv Ergebnisse zu erreichen sind, und betrachten die Beschränkung als Herausforderung ihrer Programmierkünste.
Scratch unterstützt folgende Programmierparadigmen bzw. Eigenschaften, die einem solchen ähnlich sind:
* visuell – Alle Elemente, aus denen ein Scratch-Projekt im Wesentlichen per Drag and Drop zusammengebaut wird, werden durch ihre intuitiv verständliche grafische Darstellung repräsentiert, wie z. B. Programmierbefehle durch Bausteinbilder, Sounds durch ein Aufnahme-Abspiel-Gerätebild und Objekte durch ihr Kostüm-Bild.
* bildungsorientiert – Scratch entstand nicht am Reißbrett, sondern es wurde in jahrelangen Untersuchungen erforscht, welche Konzepte von Programmieranfängern intuitiv aufgenommen werden können. Alles weniger Eingängige wird so lange vermieden, bis auch hierfür eine eingängige Herangehensweise gefunden ist.
* imperativ – Ein einzelnes Programmskript aus Scratch-Programmierbausteinen ist imperativ. Es besteht aus einer Folge von Befehlen, die vorgeben, in welcher Reihenfolge was vom Computer getan werden soll. In der Sprache Scratch gibt es diese Kontrollstrukturen: Sequenz (Blockstruktur), Bedingte Anweisung und Verzweigung und drei verschiedene Schleifenformen.
* objektorientiert – Scratch entspricht dem Programmierparadigma der Objektorientierung bezüglich Datenkapselung und polymorphem Nachrichtenversand, besitzt aber weder Klassen noch Vererbung oder Prototyping. Eine sehr einfache Objektorientierung ist damit für Programmieranfänger begreifbar: Objekte sind die Spielfiguren, die quasi nur sich selber als einzige Instanz besitzen, der Austausch von Nachrichten erfolgt mit den Bausteinen „sende X an alle“ oder „sende X an alle und warte“ und den Kopfbaustein „wenn ich X empfange“. Der objektorientierte Aspekt von Scratch tritt also erst im Zusammenspiel mehrerer Scripte und/oder mehrerer Objekte (Spielfiguren) auf.
* ereignisorientiert – Jedes Scratch-Skript, aus denen die Programmierung eines Scratch-Projektes besteht, startet, sobald das in seinem Kopf-Baustein definierte Ereignis eintritt. Zusätzlich kann mit einem Baustein „Warte bis“ der Programmfluss unterbrochen werden, bis ein Ereignis eintritt.
* parallelitätsunterstützend – Eine erstaunliche Eigenschaft von Scratch ist, dass das eigentlich komplexe Programmierparadigma der parallelen Programmierung quasi nebenbei eingeführt wird. Im Gegensatz zu traditionellen erziehungsorientierten Programmiersprachen wird dieses in Scratch auch von Anfängern intuitiv sofort genutzt, so dass sie sich später gegebenenfalls wundern, dass andere Programmiersprachen zunächst nur sequentiell arbeiten.
* dynamische Typisierung – Der Datentyp von Variablen wird in Scratch nicht vereinbart und kann sich während der Ausführung ändern. Allerdings stehen oberflächlich nur wenige Typen zur Verfügung, nämlich Zahlen und Zeichenketten, wobei nicht näher zwischen INTEGER, DECIMAL, CHAR oder STRING unterschieden wird. Neben Programmierbausteinen für diese Variablen gibt es in Scratch die Liste, die jedoch über separate Bausteine angesprochen wird. Die Länge von Listen wird nicht vereinbart und ihre Elemente sind wiederum Zahlen, Wahrheitswerte oder Zeichenketten.

## Programmier-Erfahrung
### Kein Tippen – Keine Syntaxfehler

Scratch ist so konzipiert, dass bereits junge Kinder und Erwachsene ohne Computerkenntnisse mit Scratch motivierende Programmiererfahrungen machen können. Da es auf einer nahezu rein grafisch gehaltenen Oberfläche basiert, werden potentielle Frustfaktoren wie viel Tipparbeit, komplizierte Sprachsyntax und diesbezügliche Fehler ausgeschlossen.

### Intuitives Lernen

Die Erstellung von Scratch-Projekten soll sich beim Zusehen und Ausprobieren leichter erschließen lassen als durch eine schriftliche Anleitung, da neben Textmetaphern (wie Bühne, Spielfigur, Kostüm, Baustein) viele intuitiv verständliche Form- und Farbordnungen verwendet werden, die von Anfängern einfach benutzt werden können, ohne dass darüber bewusst nachgedacht werden muss. Da die Funktion vieler Elemente intuitiv klar wird, spielen ihre genauen Bezeichnungen beim Verständnis keine wesentliche Rolle, zumal diese Bezeichnungen – durch die beliebig austauschbaren Sprachdateien – willkürlich sind. Man nutzt bei Scratch das Programmieren mit „Blöcken“. Das bedeutet, dass man nicht wie bei Logo z. B. alles eintippen muss, sondern man zieht die Blöcke einfach in das Programmierfeld. Man kann außerdem eigene Blöcke erstellen.

### Das Scratch-Projekt

Die Scratch-Entwicklungsumgebung bearbeitet immer jeweils ein Scratch-Projekt, das aus mehreren Multimedia-Elementen (Bilddateien, Klangdateien) und Programmen besteht. Ein Scratch-Projekt wird als eine einzige Datei abgespeichert oder eingelesen, die alle Multimedia-Elemente, Programme und Startwerte enthält (in Scratch 1.4). Außerdem kann das Projekt per Klick auf der Scratch-Website veröffentlicht werden (Veröffentlichen/Share) oder von dort in die Entwicklungsumgebung geholt werden. Ab Scratch 2.0 ist keine lokale Installation mehr notwendig, auch die Entwicklungsumgebung ist online.

### Spielfiguren und Bühne

In einem Scratch-Projekt agieren beliebig viele Spielfiguren (Objekte/Sprites) auf einer Bühne (Hintergrund/Stage). Die Spielfiguren haben Ähnlichkeit mit der Schildkröte in der Programmierlernsprache Logo, jedoch wesentlich mehr Fähigkeiten und Eigenschaften. Spielfiguren und Bühne können wechselnde Kostüme (Grafiken) anziehen und Geräusche, Schlagzeugklänge oder Noten abspielen. Die Spielfiguren können sich auf der Bühne bewegen, drehen, ihre Größe ändern, sich – beeinflusst von verschiedenen grafischen Effekten – zeigen oder verstecken, Malspuren und Stempel-Abdrücke hinterlassen, sprechen und denken (Sprech-/Denkblasen).

### Werte und Variablen

Die Spielfiguren haben Werte (X, Y, Ausrichtung, Größe, Lautstärke, Tempo, Stifteinstellungen, …) und zusätzlich erstellbare lokale Variablen und Listen, die bei Bedarf auf der Bühne dargestellt werden können. Neben diesen lokalen können auch globale Variablen und Listen angelegt werden, die in allen der Spielfiguren und der Bühne gelten. Die Werte und Variablenbelegungen im Zeitpunkt des Abspeichern oder Veröffentlichen eines Programms sind Teil desselben und definieren den Startzustand.

### Programmier- und Abspielmodus

Im Abspielmodus der Entwicklungsumgebung und im Internet-Player sieht man vom fertigen Scratch-Projekt nur noch die Bühne. Im Programmiermodus der Entwicklungsumgebung kann das Projekt ebenfalls uneingeschränkt abgespielt werden, jedoch kann dabei jederzeit ändernd eingegriffen werden und die Bühne belegt nur einen Teil des Scratch-Fensters, das dann in vier Bereiche unterteilt ist:
Die Bühne (links oben, vor Version 2 rechts oben), die Spielfiguren-Auswahl (links unten, vor Version 2 rechts unten) und die in acht farbige Fächer eingeteilte Bausteinkiste (rechts, vor Version 2 links), sind drei konstante Bereiche, während sich der vierte Programme/Kostüme/Klänge-Bereich anhand der Spielfiguren-Auswahl ändert. Dieser mittlere Bereich zeigt stets die Programme, Kostüme, Klänge und Werte der ausgewählten Spielfigur oder der ebenfalls auswählbaren Bühne. Im Programme/Kostüme/Klänge-Bereich kann mittels Laschen zwischen den Elementen der gewählten Spielfigur bzw. der Bühne geblättert werden.

### Skripte aus Bausteinen (Blöcken)

In die Lasche „Programme“ werden die Programmier-Bausteine der Farbe des aktuell gewählten Baustein-Faches gezogen und dort zu Programmen zusammengebaut, die dann frei nebeneinander auf der Fläche liegen. Bausteine, die nicht gebraucht werden, können ohne Funktion liegenbleiben, oder durch Herausziehen weggeräumt werden.
Viele Bausteine haben Bedienelemente, bzw. Öffnungen, in die andere Bausteine, Listenauswahlen, Zahlen, Buchstaben oder Farben (mit Bildschirmpipette auswählbar) eingesetzt werden. Die Form dieser Bedienelemente zeigt ihre Verwendung an, bzw. deutet darauf hin, welche Bausteine zusammen passen. Nur was passt, lässt sich „einklinken“, nur existierende Elemente können in den Listen gewählt werden. Dadurch werden viele Fehler automatisch vermieden. Die Farben der Bausteine entsprechen den „Farb-Fächern“ der Bausteinkiste, die ihren Einsatzbereich symbolisieren.

### Farb-Kategorien der Scratch-Blöcke

Die zur Programmierung verwendeten Blöcke sind in Scratch zur besseren Übersichtlichkeit in verschiedene, farblich unterschiedliche Kategorien aufgeteilt:
| Bereich | Farbe | Programmier-Bausteine (Beispiele) |
| Bewegung | Blau | gehe, drehe, zeige Richtung, gehe zu, gleite in Sekunden zu, setze X/Y … |
| Aussehen | Lila | ziehe Kostüm an, sage " ", denke " ", ändere Effekt, ändere Größe… |
| Klang | Violett | spiele Klang, spiele Schlagzeug, spiele Pause, spiele Note, setze Instrument, setze Lautstärke, setze Tempo… |
| Ereignisse | Dunkelgelb | wenn Start, wenn Taste, wenn Objekt geklickt, sende, wenn ich empfange, … |
| Steuerung | Braun | warte, wiederhole x mal, wiederhole fortlaufend, wiederhole bis <Bedingung>, falls <Bedingung> dann, falls <Bedingung> dann sonst, warte bis, stoppe alles |
| Fühlen | Hellblau | Maus X, Maus Y, Maustaste gedrückt, wird " " berührt, wird Farbe berührt, Stoppuhr, Entfernung von, Wert von Objekt, Lautstärke, Wert von Sensor… |
| Operatoren | Hellgrün | +, -, *, /, Zufallszahl von bis, <, =, >, und, oder, nicht, mod, gerundet, Funktion von… |
| Variablen | Orange/Rot | setze auf, ändere um, zeige, verstecke, füge hinzu, erstelle Variablen... |
| Meine Blöcke | Pink | hier können eigene Blöcke implementiert werden |
| Malstift | Grün | mit den Figuren malen/zeichnen |
| Text zu Sprache | Grün | Figuren sprechen lassen (in Zusammenarbeit mit Amazon Web Services) |
| Musik | Grün | mit Figuren Musik machen |
| Videoerfassung | Grün | erfasse Bewegungen mit der Webcam |
| Übersetzung | Grün | Texte übersetzen (In Zusammenarbeit mit Google) |
Darüber hinaus können in Scratch integrierte Erweiterungen für das Programmieren wie Musik, Malstifte, Übersetzer und externe Geräte wie dem PicoBoard oder Lego WeDo verwendet werden.

### Knöpfe und Menüs

Neben den oben beschrieben Fensterbereichen der Scratch-Entwicklungsumgebung gibt es noch einige Knöpfe, Menüs und Kontextmenüs (rechte Maustaste) und damit verbundene Auswahlboxen und Editoren zum Laden, Speichern, Kopieren, Erstellen und Beeinflussen von Spielfiguren, Medien und Projekten. Die wichtigsten sind die grüne Startflagge und das rote Stoppschild, mit denen alle Programme eines Projektes gestartet und gestoppt werden.

### Kopfbausteine, Multitasking und Ereignissteuerung

Programme beginnen immer mit einem der vier Kopfbausteine aus dem gelben Fach Steuerung, der angibt, durch welches Ereignis sie gestartet werden (Klick die Start-Flagge, Mausklick auf ihre Spielfigur, Druck einer bestimmten Taste oder Empfang einer bestimmten Nachricht). Indem ein Programm eine Nachricht an alle sendet, kann es andere Programme starten, die auf diese bestimmte Nachricht warten. Multitasking und Ereignissteuerung sind so selbstverständliche Konzepte, die vom Programmier-Anfänger nebenbei erfasst werden.

### Laufzeit, Programmierzeit, Debuggen

Laufzeit und Programmierzeit gehen fließend ineinander über: Während ein Projekt mit seinen Programmen läuft, kann weiterprogrammiert werden, bzw. wenn es nicht läuft, können Programme durch Anklicken gestartet und so ausprobiert werden, womit die erforschende spielerische Herangehensweise gefördert wird. Laufende Programme sind mit weißem Rand hervorgehoben und Ausführungsfehler (zum Beispiel Division durch 0) mit rotem Rand. Im Einzelschrittmodus werden auch die jeweils ausgeführten Bausteine hellgelb hervorgehoben.

### Drag and Drop

Programme, Grafiken und Töne können durch Ziehen auf andere Spielfiguren übertragen werden und Spielfiguren und Programme können per Knopf oder Kontextmenü kopiert werden. So kann zum Beispiel nur durch das Erstellen einer einzigen Spielfigur, die mehrfach kopiert wird, eine komplexe Simulation geschaffen werden, bei deren Ausführung die Kopien deterministisch aber dennoch unvorhersehbar interagieren.

## Weiterentwicklungen von Scratch

Neben der offiziellen Weiterentwicklung durch das Scratch-Team, deren letzter bisheriger Sprung die komplette Neuimplementierung mit Scratch 3.0 als Javascript-Anwendung darstellte, existieren eine Vielzahl von Scratch-Modifikationen. Die inoffiziellen Erweiterungen wurden von Mitgliedern der Community (meist basierend auf dem offenen Squeak-Smalltalk-Quellcode von Scratch 1.4) erstellt.
Sie umfassen sowohl lehrorientierte als auch rein anwendungsorientierte Neuerungen von extrem unterschiedlicher Qualität und Ernsthaftigkeit. Einige offizielle Scratch-Weiterentwicklungen lassen sich auch auf Einflüsse aus Modifikationen zurückführen. So wurden beispielsweise die sogenannten Listen (eindimensionale Felder) von Chirp/BYOB übernommen, das sich inzwischen von einer Modifikation zu einer eigenständigen Programmiersprache mit von Scratch unabhängiger Technologiebasis weiterentwickelt hat.

### Panther

Panther ist eine beliebte Modifikation der Scratch-Entwicklungsumgebung. Panther arbeitet mit Blöcken, hat zwei zusätzliche Kategorien und kann Projekte in ausführbare EXE-Dateien umwandeln. Die Panther-Website ermöglicht das Hochladen von Projekten.

### Programmieren mit der Maus

Programmieren mit der Maus ist ein etwas abgespecktes Scratch, das vom Westdeutschen Rundfunk (WDR) entwickelt wurde. So gibt es nur die Erweiterung „Musik“. Programmieren mit der Maus ist mit Bildern der Sendung mit der Maus ausgestattet.

### Scratch for Arduino

Scratch for Arduino (S4A) ist eine Scratch-Modifikation, die eine Programmierumgebung im Scratch-Design für den Arduino-Mikrocontroller zur Verfügung stellt.

### ScratchJr

Mit ScratchJr erschien am 20. Juli 2014 eine einführende visuelle Programmiersprache mit dem Ziel, jüngeren Kindern ab 5 Jahren mithilfe eines auf Scratch basierenden Systems einfach und spielerisch eigene interaktive Geschichten und Spiele zu programmieren. Die Kinder können grafische Programmblöcke aneinanderfügen und so Figuren bewegen lassen. In einem Editor lassen sich eigene Figuren erstellen und anpassen oder mit Stimmen und Geräuschen versehen, die in die Programmblöcke eingebunden werden können. Entwickelt wurde diese App von der Tufts University in Zusammenarbeit mit dem MIT Media Lab und Zuschüssen der National Science Foundation. ScratchJr ist als kostenlose App für Android, Apple iOS und Chromebook verfügbar.

### Snap! (BYOB)

Snap!, bis zu Version 3.1.1 unter dem Namen BYOB bekannt (englisch Abk. von Build Your Own Blocks deutsch: „Bau deine eigenen Blöcke“), ist eine auf Scratch aufbauende und von Scheme und damit auch Lisp inspirierte bildungsorientierte visuelle Programmiersprache inklusive ihrer Entwicklungsumgebung für fortgeschrittene Schüler und für die Erwachsenenbildung.

### Microsoft MakeCode

Microsoft MakeCode ist eine grafische Oberfläche für das Microsoft Programming Experience Toolkit (PXT), mit dem Entwicklungsumgebungen für erziehungsorientierte Einplatinencomputer (z. B. BBC micro:bit, Calliope mini) erstellt werden können. Diese Entwicklungsumgebungen sehen aus wie Scratch, laufen allerdings als JavaScript-Anwendung im Browser. Es kann darin außer mit den Blöcken auch mit JavaScript selbst programmiert werden.

### mBlock

mBlock von Makeblock basiert auf Scratch und erlaubt es, Roboter (mBot, mBot Ranger) grafisch einfach zu programmieren.

### NEPO

NEPO ist eine an Scratch angelehnte visuelle Programmiersprache, welche die freiverfügbare Blockly-Bibliothek nutzt.

### Cubi

Cubi ist eine an Scratch angelehnte visuelle Programmiersprache, welche vor allem für Kinder im Grundschulalter entwickelt wurde. Diese ist für die Arbeit im Klassenverband geschaffen und integriert Lehrinhalte direkt in die Programmieroberfläche. Cubi ist über den Webbrowser erreichbar und mittels PC oder Tablet nutzbar.

### TurboWarp

TurboWarp erlaubt es, Scratch-Projekte schneller auszuführen, indem sie in JavaScript kompiliert werden.

### forkphorus

forkphorus ist dasselbe wie TurboWarp und wurde vom selben Entwickler wie von TurboWarp erstellt.

## Pädagogische Effekte

Die Studienlage zu Scratch ist weitgehend positiv und es konnte oftmals eine Verbesserung der Erfolge beim Erlernen von Computerkonzepten festgestellt werden. Allerdings konnte auch empirisch nachgewiesen werden, dass einige Schüler Probleme mit Konzepten wie z. B. Variablen, gleichzeitigen Abläufen und Initialisierung haben.

### Scratch vs Karel

Eine Studie verglich den Erfolg von Karel und Scratch beim Unterricht von zwei 7. Klassen an einem Gymnasium, insgesamt waren 56 Probanden beteiligt. Dabei zeigte sich bei der Scratch-Gruppe eine höhere intrinsische Motivation, auch die Schüler vergaben an Scratch eine bessere Bewertung (der Unterschied ist „fast“ statistisch signifikant). Bei der abschließenden Prüfung zeigte sich zwischen den Leistungen der beiden Klassen kein nennenswerter Unterschied. Allerdings wird Karel als näher am „realen“ Programmieren wahrgenommen. Die Karel-Gruppe erkannte öfter, dass es einen Sinn hat, die Aufgaben zu erledigen.