Scratch (Programmiersprache)
Scratch | |
---|---|
Datei:Scratch Logo.png | |
Basisdaten | |
Paradigmen: | Objektorientierte Programmierung, Erziehungsorientierte Programmiersprache |
Erscheinungsjahr: | 2007 |
Designer: | Mitchel Resnick |
Entwickler: | Mitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Tammy Stern, Amon Millner, Jay Silver, and Brian Silverman |
Aktuelle Version: | 1.1 (14. Mai 2007) |
Beeinflusst von: | Logo, Etoys, StarLogo, AgentSheets |
Betriebssystem: | Windows, Mac OS X, Linux (in Arbeit) |
Lizenz: | 3-Klausel-BSD |
http://scratch.mit.edu/ |
Scratch ist eine interpretierte dynamische visuelle Programmiersprache.
Ihr Ziel ist es, Neueinsteiger - besonders Kinder und Jugendliche - mit den Konzepten der Computerprogrammierung vertraut zu machen und ihnen die Erstellung eigener Spiele, Videos und Multimediaanwendungen zu ermöglichen. Scratch wurde von einem kleinen Forschungsteam der Lifelong Kindergarten Group am MIT Media Lab entwickelt.[1] Der Name Scratch wird sowohl für die Programmiersprache wie für die Entwicklungsumgebung verwendet und leitet sich von der DJ-Scratchtechnik ab.
Scratch wird weltweit in verschiedensten Schulformen und Unterichtsveranstaltungen eingesetzt. Durch die Internetplattform hat sich eine schnell wachsende, Scratch-Community von Programmieranfängern, Schülern, Pädagogen und Hobbyisten gebildet, die sich gegenseitig motivieren und unterstützen, ihre Kreativität und Programmierkentnisse zu entwickeln. Anhand des raschen Wachstumns dieser Community und deren Kommentare scheint Scratch ein erfolgreiches Mittel zu sein, bisherige reine Konsumenten von Multimediaanwendungen zu deren kreativen Gestaltung zu motivieren
Die Entwicklungsumgebung kann kostenlos aus dem Internet heruntergeladen werden und auf dem eigenen Rechner installiert werden. Da sie mit dem plattformunabhängigen Smalltalk-Entwicklungssystem Squeak erstellt ist, gibt es Versionen für Windows, Mac OS X, Linux (in Arbeit). Die mit Scratch erstellten Programme können direkt aus der Entwicklungsumgebung in einen persönlichen Benutzerbereich der Scratch-Homepage hochgeladen werden. Dort können die Programme von anderen Mitgliedern der Scratch-Community genutzt, kommentiert und zur Weiterentwicklung heruntergeladen werden. Zur Ausführung direkt im Internetbrowser dient ein Java-Interpreter, der sogenannten Scratch-Player.
Bei Sprachumfang und Bedienung wurde höherer Priorität auf den intuitiven Zugang als auf hohe Komplexität 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 eleminiert. 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 Bechänkung als Herausforderung ihrer Programmierkünste. Eine Stärke von Scratch scheint also in der Mächtigkeit bei gleichzeitiger Beschränkung zu liegen.
Die Programmierung erfolgt mit farbigen Blöcken die wie Puzzlesteine per drag&drop zu Unterprogrammen zusammengesetzt werden. Träger dieser Unterprogramme und weitere Eigenschaften sind die zwei einzigen Objektarten Sprite und Stage. Als dynamische Programiersprache erlaubt es Scratch, die Eigenschaften dieser Objekte und sogar ihres Programmcode während der Laufzeit interaktiv zu verändern. Dabei müssen nur wenige Elemente (Namen, Freitexte und Zahlen) mit der Tastatur eingefügt werden. Viele Bezeichner werden dabei automatisch vom System vorgeschlagen und brauchen nur bei Bedarf durch eigene Namen ersetzt zu werden. Damit fällt der Einstieg auch denen leicht, die noch nicht flüssig tippen können. Gleichzeitig sorgt die Puzzlestein-Analogie für die Syntaxüberprüfung - die Blöcke passen nur zusammen, wenn die Syntax stimmt. Einige Blöcke bieten zusätzlich Auswahllisten, in denen jedoch nur spezifische Bezeichner des aktuellen Projektes ausgewählt werden können, so dass auch hier die Syntax weitgehend automatisch eingehalten wird.
Jedes Scratch Program besteht ausschließlich aus zwei Objektarten, die Träger von Multimediaelementen und Unterprogrammen sein können:
- Stage die Bühne, dass den feststehenden Rahmen für jedes Scratchprogramm darstellt (fest beschränkt auf 480*360 Punkte).
- Sprites, die in beliebiger Anzahl als bewegliche Darsteller auf diese Bühne gesetzt werden und somit zusätzlich zu ihren Mutimediaelementen Orts- und Bewegungseigenschaften haben.
Die Multimediaelmenete sind importierbare oder selber zu erstellende Bilder und Töne, die mit einfachen Funktionen manipuliert werden können.
Die Unterprogramme werden durch Ereignisse gestartet und laufen gleichzeitig. Ereignisse sind:
- der Programmstart
- Peripherieeingaben (Tastatur, Maus oder das Scratch-Board)
- betimmmte eingetroffene Zustände (wie z.B. "ich berühre Sprite2" oder "meine Farbe rot ist über Farbe blau")
- oder Nachrichten (Messages die von anderen Unterprogrammen gesendet werden)
Mit einem einfachen aber wirkungsvollem Konzept wird ein intutiver Zugang zur Multitaskingprogrammierung ermöglicht. ""Nachrichten"" werden stets an alle gesendet und nur von den Unterprogrammen empfangen die auf dieses Ereignis warten. Komplexe gezielte Ansprache von Sprites und Aufruf von Unterprogrammen werden dabei vermieden, was eine starke Vereinfachung aber auch Beschränkung darstellt.
Der einzige Variablentyp ist die "Zahl" (ohne Beschränkung auf Ganzzahligkeit oder Größe), auf denen nur einfache mathematische Operationen möglich sind (+ , - , * /). Komplexe Funktionen wurden ebenso wie weitere Variablentypen oder gar mehrdimensionale Variablen vermieden. Es existieren als nicht einmal Textvariablen, was der Attraktivität der Scratch-Programme scheinbar kaum schadet. Viele attraktive Scratchprogramme kommen sogar ganz ohne explizite Variablendefinition aus, da sie auf automatisch definierte Variablenartige Eigenschaften der Sprites zurückgreifen (X-, Y- Koordinaten und Grafikeffekte).
Anmerkungen
Weblinks
- Scratch home page
- Open Directory: Programming: Languages: Scratch
- Lifelong Kindergarten Group - Entwickler von Scratch
Wissenschaftliche Beiträge zu Scratch:
- Maloney, J., Burd, L., Kafai, Y., Rusk, N., Silverman, B., and Resnick, M. (2004). Scratch: A Sneak Preview. Second International Conference on Creating, Connecting, and Collaborating through Computing. Kyoto, Japan, pp. 104-109.
- Resnick, M., Kafai, Y., Maloney, J., Rusk, N., Burd, L., & Silverman, B. (2003). A Networked, Media-Rich Programming Environment to Enhance Technological Fluency at After-School Centers in Economically-Disadvantaged Communities. Proposal to National Science Foundation.
- Peppler, K., & Kafai, Y. (2005). Creative coding: The role of art and programming in the K-12 educational context.
- Resnick, M., Maloney, J., & Rusk, N. (2006). Scratch and technological fluency (Powerpoint slide 2.5MB).