Bildungsorientierte Programmiersprache

Lerninstrumente für Programmieranfänger

Bildungsorientierte Programmiersprachen sind als Lerninstrumente für Programmieranfänger konzipiert. Zu ihnen gehören speziell die Programmiersprachen, mit denen sich bereits Kinder im Vorschul- und Schulalter spielerisch mit der Funktionsweise und den Prinzipien der Entwicklung von Software vertraut machen können,[1] aber auch Programmiersprachen für fortgeschrittene Schüler und für die Erwachsenenbildung, die komplexere Aspekte berücksichtigen. Neben dem Einsatz in Bildungseinrichtungen wird die Verbreitung von vielen freien Organisationen vorangetrieben, die sich in Sammelbewegungen wie der deutschen Initiativen Jeder kann programmieren, Roberta – Lernen mit Robotern oder der amerikanischen Code.org darstellen.

Jugendlicher beim Arbeiten mit der visuellen Programmiersprache Scratch für Kinder an einer E-Tafel

Merkmale und Entwicklungsgeschichte

Bearbeiten

Bildungsorientierte Programmiersprachen sind regelmäßig fest in eine vollständige integrierte Entwicklungsumgebung (IDE) eingebettet, die es dem Benutzer ermöglicht, Programmcode menügeleitet zu erstellen, sodass Programmierfehler theoretisch nicht gemacht werden können. In manchen IDEs wird die Schriftsprache komplett durch Icons ersetzt, sodass sie bereits von Kindern benutzt werden können, die noch nicht alphabetisiert sind (z. B. Baltie, Kodu, Scratch). Andere verwenden, um den Benutzern das Eingeben von Code zu ersparen, das Prinzip Programming by demonstration (Stagecast Creator). Einige der in diesem Artikel behandelten Minisprachen wurden aber auch als Propädeutika für „erwachsene“ Programmiersprachen wie Pascal oder Python geschaffen (z. B. Karol the Robot, Guido van Robot).

Auch im Bereich der Erwachsenenbildung kommen bildungsorientierte Programmiersprachen zum Einsatz (siehe z. B. Snap!). In mehreren Fällen gingen Programmiersprachen für den professionellen Einsatz auch aus ursprünglich als bildungsorientiert konzipierten „Anfänger-Programmiersprachen“ hervor (siehe z. B. BASIC und Pascal).

Die meisten der heute existierenden bildungsorientierten Programmiersprachen wurden in Forschungslaboren in den Vereinigten Staaten entwickelt. Im Unterricht amerikanischer Middle und Highschools sowie in außerschulischen Bildungsprogrammen wie z. B. der First Lego League werden solche Sprachen bereits umfänglich eingesetzt. Inzwischen wurden Programmiersprachen für Kinder auch in Indien (CiMPLE) oder Europa (Guido van Robot, RoboMind, Baltie, E-Slate) entwickelt. In deutschen Sprachversionen liegen u. a. AgentCubes, Karel the Robot, RoboMind, Scratch, BYOB und Baltin vor.

Für Kinder konzipierte Programmiersprachen

Bearbeiten

Turtle-Grafik: Logo, KTurtle, LibreLogo und Python Turtle

Bearbeiten

Als die älteste kindgerechte Programmiersprache gilt die von Seymour Papert 1967 auf der Grundlage von Lisp entwickelte Programmiersprache Logo, die trotz ihrer hohen Leistungsfähigkeit äußerst leicht erlernbar war, sich gegenüber anderen „Anfängerprogrammiersprachen“ wie BASIC aber nicht durchsetzen konnte und heute oft nur noch aufgrund der Turtle-Grafik bekannt ist, einer von 1969 an entwickelten Plotterfunktion, bei der eine virtuelle Schildkröte über den Bildschirm kriecht und dabei eine farbige Linie hinter sich herzieht. Papert war ein Vorkämpfer des pädagogischen Konstruktivismus, der davon ausgeht, dass der Lernende sein Wissen nicht absorbiert, sondern selbst aufbauen muss; Papert hoffte, dass Kinder durch Instrumente wie Logo nicht nur das Rechnen und Programmieren erlernen, sondern zu kompetent Handelnden in einer zunehmend von Technologie geprägten Welt heranwachsen würden. In den USA wird Logo als Lern-Programmiersprache für Kinder bis heute verwendet.[2][3]

Als „KTurtle“ ist die Turtle-Grafik auch ein Bestandteil eines vom KDE Education Project entwickelten und 2008 veröffentlichten Softwarepakets.[4]

Als LibreLogo ist die Programmiersprache in Libreoffice integriert und über eine Symbolleiste erreichbar.[5]

Eine weitere Fassung ist die von Ram Rachum als Propädeutikum für die Programmiersprache Python konzipierte und 2009 herausgebrachte Minisprache PythonTurtle.[6] Python selbst bringt mit dem Modul turtle eine eigene Bibliothek für Turtle-Grafik mit.

Im Internet sind gelegentlich auch Online-Versionen zu finden.[7]

 
Guido van Robot, Screenshot

Virtuelle Roboter

Bearbeiten

Karel the Robot/Niki – der Roboter

Bearbeiten

Die von Richard E. Pattis an der Stanford University entwickelte und 1981 herausgebrachte Minisprache Karel, die heute auch in einer deutschen Sprachversion vorliegt (Niki – der Roboter), bereitet auf das Erlernen der „erwachsenen“ Programmiersprache Pascal vor. Kinder im Vor- und frühen Grundschulalter können damit einen virtuellen Roboter durch ein rechtwinklig angelegtes Netz von Straßen und Querstraßen lenken.

Robot Karol

Bearbeiten

Robot Karol ist eine Programmierumgebung für eine gleichnamige in einfachem Deutsch gehaltene Programmiersprache. Sie wurde entwickelt, um Schüler mit Hilfe der Programmierung von einfachen virtuellen Robotern an die Algorithmik heranzuführen.

Guido van Robot

Bearbeiten

Ebenfalls bereits für sehr junge Kinder konzipiert ist Guido van Robot, eine nach Guido van Rossum benannte und 2009 herausgebrachte Minisprache, die das Erlernen der „erwachsenen“ Programmiersprache Python vorbereitet. Die Spielidee ist dieselbe wie bei Niki – der Roboter.[8]

RoboMind

Bearbeiten

Eine weitere Minisprache, mit der Kinder im Vor- und frühen Grundschulalter einen virtuellen Roboter programmieren können, ist das auch in einer deutschen Sprachversion erhältliche Programm RoboMind.[9]

Der Marienkäfer Kara soll einen Einstieg in die Grundideen der Programmierung vermitteln: In einer einfachen grafischen Umgebung muss Kara verschiedene Aufgaben lösen, z. B. Kleeblätter einsammeln.[10]

Neben der Version mit grafischem Programmeditor existieren auch Versionen, die den Übergang zu realen Programmiersprachen bilden können, wie z. B. RubyKara, PythonKara und JavaKara. Alle Versionen sind Freeware und auf den meisten javafähigen Plattformen lauffähig. Auf der offiziellen Website des Projekts findet sich auch weiteres Begleitmaterial.

Hamster-Modell

Bearbeiten

Analog zu Kara geht es beim Hamster-Modell darum, einen Hamster durch eine virtuelle Umgebung zu steuern und Körner sammeln zu lassen. Programme können hierbei in verschiedenen textuellen Programmiersprachen, wie Java (imperativ, objektorientiert, parallel), Ruby, Python, Scheme und Prolog sowie visuellen Programmiersprachen, wie endliche Automaten, Programmablaufpläne, Nassi-Shneiderman-Diagramme/Struktogramme und Scratch entwickelt werden.[11]

Open Roberta Sim

Bearbeiten
 
Open Roberta Sim, eine 2D Simulationsumgebung

In der online verfügbaren Simulationsumgebung Open Roberta Sim (siehe auch Open Roberta) kann ein zweirädriges Differentialgetriebe, in einem zweidimensionalen Robotermodell programmiert werden. Das 2D-Modell ist zusätzlich zur Odometrie mit weiteren Sensoren ausgestattet:

  • Ultraschallsensor
  • Farbsensor
  • Berührungssensor

Open Roberta Sim wird mit der von Fraunhofer IAIS entwickelten, grafischen Programmiersprache NEPO programmiert. Im Gegensatz zu anderen virtuellen Umgebungen simuliert Open Roberta Sim das Verhalten (Signalverarbeitung) eines echten, physikalischen Roboters, verzichtet dabei allerdings auf eine sogenannte Physik-Engine.

Programmieren ohne Worte

Bearbeiten

Stagecast Creator

Bearbeiten

Eine Besonderheit der graphischen Lern-Programmiersprache Stagecast Creator besteht darin, dass sie auf der Technik des Programming by demonstration basierend auf dem Konzept der „Graphical Rewrite Rules“ entwickelt in der ersten Version von AgentSheets beruht. Anstatt Code zu schreiben, demonstriert der Benutzer das Verhalten, das der Computer ausführen soll. Dies geschieht beim Stagecast Creator, indem der Benutzer Icons auf dem Bildschirm bewegt. Auf diese Weise können bereits von Kindern im Vorschulalter Simulationen, Animationssequenzen und Spiele erzeugt werden. Das System, das unter Java läuft und im Forschungslabor von Apple entwickelt wurde, kam als Erstversion 1996 heraus und trug zunächst den Namen Cocoa.[12]

 
Baltie 3, Screenshot

Die erste Version der objektorientierten Programmiersprache Baltie wurde 1996 von der tschechischen Firma SGP Systems entwickelt. Sie war die Fortentwicklung einer bereits 1993 entstandenen Sprache namens Balthazar und basierte auf C. Eine Besonderheit dieser Lern-Programmiersprache liegt darin, dass der Code nicht aus Text, sondern aus Icons zusammengesetzt wird. Die Spielidee besteht darin, dass ein virtueller kleiner Zauberer verschiedene Operationen ausführt und u. a. Grafiken auf den Bildschirm „zaubert“.[13]

Inzwischen liegt die in zahlreichen Sprachfassungen erhältliche Version 4 vor, die auf C# basiert, einen Compiler und Debugger enthält und in der Lage ist, .exe-Dateien zu erzeugen, die auch außerhalb der IDE lauffähig sind. Fortgeschrittene Lernende können in Baltie 4 auch mit Text anstatt mit Icons programmieren.[14]

Seit 2003 finden mit Baltie internationale Ausscheidungswettbewerbe in verschiedenen Alterskategorien (ab 5 J.) statt.[15]

Auch die IDE von Kodu, einer 2009 herausgebrachten Entwicklung von Microsoft Research, ist vollständig Icon-basiert. Kinder können damit Spiele entwickeln.[16]

Die von einem griechischen Team in den 1990er Jahren entwickelte Bildungssoftware E-Slate ermöglicht es Kindern ohne Programmiervorkenntnisse, mit einer auf Logo basierenden Minisprache vorgefertigte Elemente zu vielfältigen Mikrowelten zusammenzusetzen. Die auf Java aufbauende Freeware ist als griechische und englische Sprachversion erhältlich.[17]

Squeak ist eine bei Apple entwickelte und 1996 in erster Version veröffentlichte Implementierung der objektorientierten Programmiersprache Smalltalk. Die Software unterstützt u. a. Simulationen und wird in den USA von Kindern der mittleren Klassenstufen aufwärts verwendet, die bereits grundlegende Programmierkenntnisse haben.

 
Beispiel für die beschriebene Autosimulation

Für programmierunerfahrene Kinder von 9 bis 12 Jahren konzipiert ist die objektorientierte Lern-Computersprache Etoys, die von Alan Kay bei Disney Imagineering Research entwickelt wurde und 1996 herauskam. Die Benutzer können damit 2- und 3-dimensionale Grafiken, Bilder, Text, Präsentationen, Webseiten, Videos, Ton und Musik programmieren und ihre Arbeiten der Etoy-Community im Internet vorstellen. Das mehrsprachige System basiert auf Squeak und hatte starken Einfluss u. a. auf die Entwicklung von Scratch.[18]

Open Roberta

Bearbeiten
 
Die Online-Programmierumgebung Open Roberta Lab

Open Roberta ist ein von Fraunhofer IAIS initiiertes Projekt, das den Einstieg in die Programmierung ermöglicht. Open Roberta ist von Scratch inspiriert und basiert auf der quelloffenen Bibliothek blockly. Im Rahmen von Open Roberta hat das Fraunhofer IAIS eine Online-Programmierumgebung – Open Roberta Lab – und eine eigene (Meta-)Programmiersprache namens NEPO entwickelt. Open Roberta nutzt das Konzept der Initiative Roberta – Lernen mit Robotern, in dessen Kern die Konstruktion und Programmierung von Robotern steht. Open Roberta wird unter der Apache-Lizenz 2.0 als open-source Projekt entwickelt und ist somit komplett kostenfrei nutzbar. Durch die online-basierte Programmierumgebung kann Open Roberta plattformunabhängig mit gängigen Webbrowsern genutzt werden. Open Roberta wird von einer open-source community unter Leitung des Fraunhofer IAIS kontinuierlich weiterentwickelt.

Ab der Version Beta 1.3.0 steht ein zweidimensionales Roboter-Modell zur Verfügung, das den Einstieg in die Programmierung auch ohne physikalisches Roboter-System möglich macht. Durch die Verwendung des identischen Programmierparadigmas und der Programmblöcke ist ein reibungsfreier Übergang von der Simulation zum realen Roboter-Objekt möglich.

Das 2007 veröffentlichte Scratch ist eine unter der Leitung von Mitchel Resnick am MIT Media Lab entwickelte interpretierte, objektorientiert, dynamische, ereignisorientierte und vor allem visuelle Programmiersprache incl. ihrer Entwicklungsumgebung und der eng verknüpften Online-Community-Plattform.[19] Scratch soll Neueinsteiger – besonders Kinder und Jugendliche – motivieren, die Grundkonzepte der Programmierung möglichst spielerisch und explorativ zu erlernen.[20] Kostenlos und werbefrei können unter dem Motto „imagine, program, share“, eigene Spiele und Multimediaanwendungen erstellt und in einer internationalen Online-Community mit dem Scratch-Player gespielt, diskutiert und ausgetauscht werden.

Die intuitive Bedienung und leichte Übersetzbarkeit, sowohl der Entwicklungsumgebung incl. ihrer Programmierbefehls-Bausteine als auch der Scratch-Website,[21] verbunden mit einer erfolgreichen Kommunikation und Medienarbeit des MIT-Scratch-Teams,[22] förderten eine schnelle globale Ausbreitung der Scratch-Idee: Von den Anfängen im März 2007 bis Ende 2015 meldeten sich über 8 Millionen internationale Nutzer – mit einem Altersschwerpunkt zwischen 8 und 16 Jahren an, die über 11 Millionen selbstentwickelte Scratch-Projekte ins Netz stellten.[23]

Die ersten Implementierungen der Scratch-Entwicklungsumgebung basierten auf Squeak (1.0 in 2007[24] bis 1.4 in 2009[25]), der Scratch-Web-Player zunächst auf Java,[26] seit 2011 auch wahlweise auf Flash.[27] Scratch 2.0 erschien im Mai 2013 und basiert komplett auf Flash.[28]

Seit 2014 gibt es mit ScratchJr auch eine Scratch-Variante für das iPad, die für Kinder im Grundschul- und Kindergartenalter konzipiert ist[29] sowie mit dem JavaScript-basierten Snap! (BYOB) eine Variante, die erfolgreich für die Hochschul- und Erwachsenenbildung eingesetzt wird.

Am 2. Januar 2019 erschien die aktuelle Version 3.0, welche vollständig auf Webtechnologien im Umfeld von HTML5 basiert.[30] Die interaktiven Elemente wurden in JavaScript implementiert und nutzen WebGL, Web Worker und Web Audio.[31] Diese Version ist nicht mehr auf Flash angewiesen und läuft plattformübergreifend in modernen Webbrowsern. Das ermöglicht u. a. auch die Nutzung auf mobilen Endgeräten, wie Smartphones und Tablets.

Alice und Mama

Bearbeiten
 
Alice, Screenshot

Mit der an der University of Virginia und der Carnegie Mellon University entwickelten und 1999 veröffentlichten objektorientierten Programmiersprache Alice können Kinder der mittleren Klassenstufen eine virtuelle Welt mit animierten 3D-Objekten und -Personen (u. a. Charaktere aus Alice im Wunderland) bevölkern. Von der IDE, die als Freeware angeboten wird und die eher zum Erzählen von Geschichten als zu formalisierten technischen Spielereien anregt, sollen sich insbesondere Mädchen angesprochen fühlen.[32]

Die objektorientierte Lern-Programmiersprache Mama wurde von Eytam Computer Science entwickelt und 2010 herausgebracht. Die IDE der kommerziellen Software basiert auf der von Alice und unterstützt ebenso wie diese die Entwicklung animierter 3D-Objekte und -Personen.[33]

AgentSheets & AgentCubes

Bearbeiten
 
AgentCubes zum Erstellen von 3D-Spielen und -Simulationen

AgentSheets ist eine hoch leistungsfähige, objektorientierte Sprache zur Programmierung von Simulationen und Videospielen, die sich aufgrund ihrer sehr einfachen Erlernbarkeit auch als Lernprogrammiersprache für Schüler von den mittleren Klassenstufen an durchgesetzt hat. Die von Lisp, Logo und Smalltalk beeinflusste Sprache wurde von Alexander Repenning entwickelt und 1991 in erster Version veröffentlicht. Neben der englischen liegen inzwischen auch einige andere Sprachfassungen vor.[34]

AgentCubes ist eine 3D-Programmierumgebung.[34] Dank des integrierten „Inflatable-Icons“-Werkzeugs können Benutzer selbst beliebige 3D-Objekte kreieren, indem sie zuerst 2D-Bilder zeichnen und diese dann in 3D-Objekte durch Aufblasen verwandeln.

AgentCubes online[35] ist die auf HTML5/WebGL basierende Online-Version von AgentCubes, die Benutzern als erste Programmierumgebung erlaubt, 3D-Welten in einem Webbrowser zu bauen und zu programmieren.

AgentSheets, AgentCubes und AgentCubes online werden benutzt als Werkzeuge des Scalable Game Design Projektes.[36] Scalable Game Design ist die größte US-Informatik-Bildungs-Studie mit über 10.000 Schülern mittlerer Jahrgänge aus den USA. Untersucht wird, ob Schüler sogenannte „Computational-Thinking“-Konzepte durch das Kreieren von Spielen erlernen und später zum Bau von Simulationen anwenden können.

Robotik und eingebettete Systeme

Bearbeiten

Fischertechniks grafische Programmiersprache ROBOPRO ist eigens für das Robo Interface entwickelt worden und bietet Möglichkeiten von Variablen über Unterprogramme (Methoden) bis zu vereinfachter Bitprogrammierung. Die Programmierumgebung unterstützt Debugging, Simulation, Download zum Interface, Updates und Testen.

Lego Mindstorms

Bearbeiten
 
Ein Lego Mindstorms NXT, hier mit einem Berührungssensor und Greifwerkzeug ausgestattet

Lego Mindstorms ist eine Produktserie des Spielwarenherstellers Lego, die neben Elektromotoren, Sensoren und Lego-Technik-Bausteinen eine programmierbare Einheit (RCX/NXT/EV3) umfasst. Das inzwischen ausgereifte EV3 System ist seit 2013 auf dem Markt. Mit dem System können u. a. Roboter konstruiert und programmiert werden. Im Lieferumfang enthalten ist die auf LabVIEW basierende und mit einer grafischen Oberfläche ausgestattete Programmiersprache NXT-G; entwickelt wurde diese Software von der amerikanischen Firma National Instruments. Für die Programmierung des NXT steht inzwischen jedoch eine ganze Bandbreite weiterer grafischer und textbasierter Programmiersprachen zur Verfügung, die ein flexibleres Programmieren als mit NXT-G erlauben und gelegentlich sogar einen Debugger haben (z. B. Robotc).[37]

Tuxminds

Bearbeiten

Eine grafische (symbolische) Programmierumgebung für diverse Robotermodelle (Lego Mindstorms NXT, Lego RCX, ASURO und deren Abkömmlinge) für Linux. Innerhalb der durch die verwendeten Robotermodelle gegebenen Beschränkungen sind die Programme portabel d. h. ein ursprünglich für ein NXT-Roboter erstelltes Programm kann recht einfach auf einem Roboter des Types „ASURO“ ausgeführt werden. Tuxminds ist um beliebige Robotermodelle erweiterbar für die allerdings ein C-Compiler für Linux verfügbar sein muss. Tuxminds ist „Open Source“ und steht damit jedermann kostenlos zur Verfügung. Ursprünglich wurde Tuxminds für den Einsatz an Schulen entwickelt.

Ebenfalls für Kinder mit Interesse an Robotik und eingebetteten Systemen konzipiert ist CiMPLE, eine auf C basierende visuelle Programmiersprache, die von ThinkLABS am Indian Institute of Technology Bombay entwickelt wurde und mit der das iPitara-Roboter-Bausystem gesteuert werden kann.[38][39]

Phrogram

Bearbeiten

Phrogram ist eine kommerzielle Lern-Programmiersprache, die von dem bei Seattle niedergelassenen Unternehmen Phrogsoft entwickelt und 2006 in erster Version herausgebracht wurde. Phrogram unterstützt Grafik und Ton und wird in den USA von Kindern der mittleren Klassenstufen aufwärts zum Entwickeln von Spielen und anderen unterhaltsamen Lernanwendungen benutzt. Die IDE hat Ähnlichkeit mit Microsoft Visual Studio und Eclipse und bereitet Anfänger, die bis dahin keine oder nur wenig Programmiererfahrung haben, auf professionelle Entwicklungsumgebungen vor.[40]

Lern-Programmiersprachen für fortgeschrittene Schüler und für die Erwachsenenbildung

Bearbeiten

KidsRuby und Hackety Hack

Bearbeiten

Mit der von Steve Klabnik entwickelten und 2010 veröffentlichten Ruby-basierten IDE Hackety Hack (Freeware) können Teenager erste Programmiererfahrungen sammeln.[41]

KidsRuby[42] ist von Hackety Hack beeinflusst und benutzt ebenfalls Ruby als Programmiersprache. Die meisten Hackety Hack Programme laufen auch in KidsRuby. KidsRuby enthält wie Hackety Hack eine Turtle-Grafik, mit der man farbige Bilder zeichnen kann. Bei KidsRuby kann man zusätzlich eine Bibliothek für die Entwicklung von 2D Spielen einbinden.

GameKit ist eine anspruchsvolle objektorientierte Lern-Programmiersprache mit IDE (Freeware), die von Morgan McGuire an der Brown University entwickelt wurde. Ihre Syntax ähnelt der von Java und die Sprache kann zur Entwicklung einer großen Bandbreite von Anwendungen genutzt werden; besonders geeignet ist sie für die Entwicklung von Spielen.[43]

Snap! (BYOB)

Bearbeiten

BYOB (englisch Abk.: „Build Your Own Blocks“, deutsch: „Bau deine eigenen Blöcke“) ist eine von Scratch inspirierte bildungsorientierte visuelle Programmiersprache inklusive ihrer Entwicklungsumgebung für fortgeschrittene Schüler und für die Erwachsenenbildung. Sie erweitert die vom Lifelong Kindergarten Group am MIT Media Lab entwickelten Sprache Scratch um komplexere und abstraktere Konzepte der Programmierung, die in Scratch zugunsten der Kindertauglichkeit bisher fehlten. BYOB ist Open-Source und kommt im Sekundarstufen- I und II -Unterricht an deutschen Schulen und an amerikanischen und deutschen Universitäten zum Einsatz.

Trotz der spielerischen Anmutung, die es sich aus seiner Scratch-Herkunft bewahrt hat, werden umfassende Konzepte geboten, die über die Möglichkeiten vieler traditioneller Programmier-Lern-Sprachen hinausgehen. Dies sind Optionen wie das Erstellen von Blöcken, First-Class Funktionen oder Prozeduren (ihre mathematischen Grundlagen werden auch als „Lambda-Kalkül“ bezeichnet), First-Class-Objekt-Listen (einschließlich Listen von Listen) und First Class Sprites. Mit Prototypenbasierte Programmierung wird in BYOB Objektorientierung ohne abstraktes Klassenkonzept ermöglicht: Neue Objekte entstehen als Kopie vorhandener Objekte („cloning“).[44][45][46][47][48]

Die ersten BYOB-Vorstufen wurden unter dem Namen Chirp als Modifikation von Scratch 1.2.1 ab 2008 publiziert.[49] BYOB 4.0 befindet sich im Prerelease-Stadium (Stand Januar 2013) und wird den neuen Namen Snap! erhalten. BYOB und Snap! wurden von dem deutschen Juristen und Softwareentwickler Jens Mönig zusammen mit dem Berkeley-Dozenten Brian Harvey entwickelt, der seine Ideen zum Sprachdesign und die Dokumentation beisteuerte.

In Deutschland wurde 1976 die Lehr-Programmiersprache ELAN (Educational LANguage) entwickelt und bis in die 1990er-Jahre an Schulen gelehrt.

Früher Einstieg in professionelle Programmiersprachen

Bearbeiten

Auf BASIC basierende Ansätze

Bearbeiten

Die Programmiersprache BASIC wurde als leicht zu erlernende Programmiersprache konzipiert. Sie und ihre Varianten wurden – außer der Lernsoftware Learn to Program BASIC[50] – jedoch nicht speziell für Kinder entwickelt, werden aber an amerikanischen Schulen von den mittleren Klassenstufen an im Unterricht eingesetzt. Der Lernweg führt über einfache, auch für Kinder geeignete Varianten wie Small Basic, Basic-256 oder SiMPLE hin zu professionellen Varianten wie Visual Basic oder Gambas.[51]

Pascal war zunächst als Lehrsprache für die strukturierte Programmierung konzipiert. Bis in die späten 1980er Jahre war Pascal die an amerikanischen und europäischen Universitäten am umfänglichsten gelehrte Anfängersprache. In den USA wurden Pascal-Kurse für Kinder im Middle-School- und High-School-Alter angeboten.[52] In Deutschland wurde Pascal in den 1980er Jahren an Gymnasien gelehrt.

Auf Lisp basierende Ansätze

Bearbeiten

1975 erschien die auf Lisp basierende Lern-Programmiersprache Scheme, die aufgrund ihrer sehr einfachen Syntax ebenfalls für Kinder im Middle-School- und High-School-Alter eingesetzt wird.[53][54]

Auf Python und Ruby basierende Ansätze

Bearbeiten

Aufgrund ihrer einfachen und gut lesbaren Syntax eignen sich auch die höheren Programmiersprachen Python und Ruby als Lernsprache. Beide Sprachen sind multiparadigmatisch und ermöglichen den Einstieg z. B. sowohl in die objektorientierte als auch in die strukturierte Programmierung. Beide Sprachen bieten darüber hinaus mit einem mitgelieferten interaktiven Interpreter eine sehr gute Möglichkeit zum Ausprobieren und Testen. In den USA werden Python- bzw. Ruby-Kurse für Kinder vom Middle-School-Alter aufwärts angeboten.[55][56][57][58]

Auf Java basierende Ansätze

Bearbeiten

Greenfoot und BlueJ, zwei Lern-IDEs für die Programmiersprache Java, werden in den USA von Schülern der High School und auf College-Niveau verwendet. Für die dritte Lernstufe wird die NetBeans BlueJ Edition und für die vierte die bereits professionelle Netbeans-IDE empfohlen.[59]

Eine ebenfalls elegante, stark vereinfachte Kapselung für die Programmiersprache Java stellt Processing dar. Processing ist vor allem für Gestalter, Künstler und Programmieranfänger geeignet, lässt sich aber aufgrund der einfachen Syntax auch für Teenager einsetzen. Ein einfacher Würfel (box) lässt sich bereits mit wenigen Zeilen realisieren:

size(500, 500, P3D);
lights();
fill(255, 2, 2);
translate(250, 250);
rotateY(2);     // in radians, d. h. Kreis von 0 bis 2 PI
rotateX(0.5);
box (130);

Es ist leicht möglich, diesen Würfel nun als Animation um die Y-Achse rotieren zu lassen. Die Prozedur „setup()“ bereitet dabei einmalig die gedachte Leinwand vor, die Prozedur „draw()“ löscht diese und zeichnet den Würfel. Die Prozedur „draw()“ wird automatisch immer wieder aufgerufen:

float Winkel = 0;  // in radians, d. h. Kreis von 0 bis 2 PI

void setup() {
  size(500, 500, P3D);
  background(111);
}

void draw() {
  background(111);
  lights();
  fill(255, 2, 2);
  translate(250, 250);
  rotateY(Winkel);     // um die Senkrechte rotieren
  rotateX(.5);         // um die Waagerechte rotieren
  box (130);
  Winkel = Winkel + 0.02;
}

Auf C# basierende Ansätze

Bearbeiten

Für den frühen Einstieg in die Programmiersprache C# eignet sich das Programmierspiel AntMe!, bei dem es darum geht, einem Ameisenvolk eine künstliche Intelligenz zu programmieren. Die Befehle sind überwiegend auf Deutsch.

Computerspiele mit Programmieroptionen

Bearbeiten

Gelegentlich bestehen zwischen Computerspielen und Programmieren fließende Übergänge. ComputerCraft zum Beispiel, ein Mod des Open-World-Spiels Minecraft, erlaubt es dem Spieler, virtuelle Computer und Roboter zu konstruieren, die in der Skriptsprache Lua programmiert werden können.[60] Das Mod RedPower 2 bietet Bauelemente für 6502-ähnliche virtuelle Computer, die in den Sprachen 6502 Assembly oder Forth programmiert werden können.[61] Kinder, die sich in der Welt von Minecraft auskennen, lernen das Programmieren hier spielerisch.

Alternativen: Programmierspiele ohne Computer

Bearbeiten

Ein alternativer Zugang sind Programmier-Rollenspiele, wobei z. B. Hilfspersonen die Aufgabe von Robotern oder Computerbauteilen übernehmen und ein (von Kindern geschriebenes) Programm in Papierform ausführen.[62]

Literatur

Bearbeiten

Einzelnachweise

Bearbeiten
  1. Lernen und Medien Open Roberta – a Web Based Approach Visually Program Real Educational Robots
  2. Kent Paul Dolan: Programming language Logo. In: well.com. 4. Mai 2003, archiviert vom Original am 25. Februar 2016; abgerufen am 11. Juli 2023 (englisch).
  3. Gary S. Stager: Learning with Logo. In: stager.org. Abgerufen am 11. Juli 2023 (englisch).
  4. KDE Offizielle Website
  5. LibreLogo Toolbar – LibreOffice Help. Abgerufen am 7. Dezember 2017.
  6. PythonTurtle Offizielle Website
  7. MathsNet Turtle Logo Applet (Memento vom 14. Dezember 2011 im Internet Archive)
  8. The Guido van Robot Programming Language. Abgerufen am 11. Juli 2023 (englisch).
  9. RoboMind Offizielle Website
  10. Kara – Programmieren mit endlichen Automaten Offizielle Website
  11. Java-Hamster-Modell Offizielle Website
  12. Stagecast. In: stagecast.com. Archiviert vom Original am 3. August 2015; abgerufen am 11. Juli 2023 (englisch).
  13. Website von SGP Systems
  14. Workshop: SGP Baltie 4 C#. (PDF; 70 kB) In: rsei.umk.pl. Nikolaus-Kopernikus-Universität Toruń, archiviert vom Original am 4. März 2016; abgerufen am 11. Juli 2023 (englisch).
  15. Einstiegsseite des Wettbewerbsservers „Baltie.net“ auf Englisch abgerufen am 9. Dezember 2017.
  16. Kodu Microsoft Research
  17. E-Slate Offizielle Website
  18. Etoys Offizielle Website
  19. scratch.mit.edu: Informationen über Scratch (Memento vom 2. April 2013 im Internet Archive)
  20. Scratch – Das deutschsprachige Scratch-Wiki. Abgerufen am 7. Mai 2022.
  21. DACH-Scratch-Wiki: Übersetzung. Abgerufen am 7. Mai 2022.
  22. DACH-Scratch-Wiki: MIT-Scratch-Team. Abgerufen am 7. Mai 2022.
  23. scratch.mit.edu: Scratch Usage Statistics (Memento vom 27. Mai 2013 im Internet Archive) (englisch)
  24. DACH-Scratch-Wiki: Scratch 1.0 und früher. Abgerufen am 7. Mai 2022.
  25. DACH-Scratch-Wiki: Scratch 1.4. Abgerufen am 7. Mai 2022.
  26. Scratch-Wiki: Java Player. In: scratch.mit.edu. 17. Januar 2013, ehemals im Original (nicht mehr online verfügbar); abgerufen am 7. Mai 2022 (englisch).@1@2Vorlage:Toter Link/scratch.mit.edu (Seite nicht mehr abrufbar. Suche in Webarchiven)
  27. Scratch-Wiki: Flash Player. In: scratch.mit.edu. 17. Januar 2013, ehemals im Original (nicht mehr online verfügbar); abgerufen am 7. Mai 2022 (englisch).@1@2Vorlage:Toter Link/scratch.mit.edu (Seite nicht mehr abrufbar. Suche in Webarchiven)
  28. DACH-Scratch-Wiki: Scratch 2.0. Abgerufen am 7. Mai 2022.
  29. ScratchJr Offizielle Website
  30. 3 Things To Know About Scratch 3.0. In: medium.com. MIT-Scratch-Team, 5. April 2018, abgerufen am 11. Juli 2023 (englisch).
  31. Ernie Parke: Scratch 3.0 News from Scratch Conference. In: scratch.mit.edu. 24. Dezember 2016, abgerufen am 11. Juli 2023 (englisch).
  32. Alice Offizielle Website; zur Fortentwicklung des Programms siehe auch Storytelling Alice
  33. Eytam Computer Science. In: eytam.com. Shapes Robotics, archiviert vom Original am 8. August 2021; abgerufen am 11. Juli 2023 (englisch).
  34. a b AgentSheets Offizielle Website
  35. Hour of Code Website
  36. Scalable Game Design (Memento vom 10. März 2018 im Internet Archive) Offizielle Website
  37. NXT Programming Software; in den Teilnahmerichtlinien der First Lego League ist der Gebrauch anderer Programmiersprachen als NXT-G untersagt.
  38. CiMPLE (Memento vom 11. September 2010 im Internet Archive) Offizielle Website
  39. designingforchildren.net: Visual Programming Application for children to program Robotic Toys (Memento vom 11. September 2010 im Internet Archive; PDF; 1,52 MB) (englisch)
  40. Phrogram (Memento vom 20. August 2010 im Internet Archive) Offizielle Website
  41. Hackety Hack (Memento vom 7. Januar 2012 im Internet Archive)
  42. KidsRuby Offizielle Website
  43. GameKit Offizielle Website
  44. DACH-Scratch-Wiki: Build Your Own Blocks (Scratch Modifikation). Abgerufen am 7. Mai 2022.
  45. Eckart Modrow: OOP mit BYOB. (Memento vom 17. Juli 2018 im Internet Archive; PDF; 561 kB). In: LOG IN Heft Nr. 171, 2011
  46. Eckart Modrow: Visuelle Programmierung – oder: Was lernt man aus Syntaxfehlern? (Memento vom 14. Oktober 2013 im Internet Archive; PDF; 80,7 kB)
  47. Eckart Modrow, Jens Mönig, Kerstin Strecker: Wozu JAVA? (Memento vom 17. Juli 2018 im Internet Archive; PDF; 544 kB). In: LOG IN Heft Nr. 168, 2011
  48. Michael Heinelt: Spieleprogrammierung mit Scratch und BYOB (Memento vom 5. März 2016 im Internet Archive; PDF; 3,01 MB). Seminar Didaktik der Informatik 3. Semester, Wintersemester 2011/12
  49. Homepage von Chirp (Memento vom 25. April 2014 im Internet Archive), des Vorgängers von BYOB und Snap!, abgerufen am 28. Januar 2013.
  50. kidsdomain.com: Learn to Program BASIC, Jr. Edition (Memento vom 7. März 2011 im Internet Archive)
  51. computerscienceforkids.com: Microsoft Small Basic, Visual Basic, Visual C#, and Java Programming Tutorials for Middle School, High School and Homeschool Students (Memento vom 30. Januar 2011 im Internet Archive)
  52. Bilingual Technology Education for Middle School Students in Chicago’s Innercity (Memento vom 26. Juni 2010 im Internet Archive) (PDF; 24 kB)
  53. Environments for Teaching Kids to Program
  54. adelphi.edu: Why Scheme for Introductory Programming? (Memento vom 4. Oktober 2010 im Internet Archive)
  55. python.org: Computer Programming for Everybody (Memento vom 24. Dezember 2010 im Internet Archive)
  56. megasolutions.net: Minimum Age to learn Python (Memento vom 29. Mai 2013 im Internet Archive)
  57. Workshop to Teach Middle School-Age Girls (Ruby und Python) (Memento vom 7. Mai 2012 im Internet Archive)
  58. Fifth Grade Shoes (Ruby) (Memento vom 20. Mai 2012 im Internet Archive)
  59. NetBeans IDE BlueJ Plugin
  60. ComputerCraft
  61. minecraftgood.com: RedPower 2 Mod 1.4.7 for Minecraft 1.4.7 (Memento vom 1. Februar 2013 im Internet Archive)
  62. Dr. Techniko: How To Train Your Robot: how I teach kids to program without computers. Offbeat Families, 13. Dezember 2012, abgerufen am 13. April 2013 (englisch, Programmierung als Rollenspiel).