Ich habe mich lange Zeit schwer damit getan, eine „passende“ Programmiersprache zu finden, um meinen Kindern programmieren verständlich zu machen. Auch wenn ich schon früh von „Scratch“ gehört hatte, habe ich die Sprache aber bisher nicht ernst genommen.
Wenn Dein einziges Werkzeug ein Hammer ist, wirst Du jedes Problem als Nagel betrachten.
Wie in Mark Twains Zitat ist mein Blick als Programmierer auf Programmiersprachen, ein Blick darauf, was man mit der Sprache machen kann. Es ist der Blick eines Handwerkers in seinen Werkzeugkasten um zu entscheiden, mit welchem Werkzeug er das aktuelle Problem am besten lösen kann. Doch die Wahl des Werkzeugs fällt um so schwerer, je ungenauer die Vorstellung von dem Problem ist. Genauergesagt: da ich nicht weiß, das ein Kind machen will, kann ich keine Sprache empfehlen.
Durch das Coder Dojo habe ich einen anderen Blick gelernt. Beziehungsweise, eine andere Herangehensweise:
- Die zu lösenden Probleme werden vom Lehrer/Mentor vorgegeben
- Die Kinder haben keine Werkzeug-Wahl vor die Sie gestellt werden müssen
Es geht nämlich gar nicht darum ein Problem zu lösen, sondern darum, anhand einer, auf die Kinder zugeschnittenen Problemstellung, überhaupt erst einmal Grundlagenwissen über Programmierung zu vermitteln!
Kinder starten from scratch, also ganz von Anfang an, und müssen erst einmal ein Verständnis dafür gewinnen, was ganz grundsätzliche Konstrukte in jeder Prorammiersprache sind: Init, Schleifen, Bedingugnen, Operationen, Datentypen, Funktionen, Methoden, …
Eines der grundlegendesten Paradigmen ist die „Schleife“. Eine fotlaufende Wiederholung von Anweisungen in immer der gleichen Reihenfolge. In Scratch läuft im Grunde immer alles in einer Schleife. Es gibt ein Init-Ereignis, ein „Setup“ und dann läuft das Programm fotlaufend in einer Schleife. Stellen wir uns also einen Blumentopf vor, der eine Bodenfeuchtigkeit besitzt, die per durchlauf eine Einheit abnimmt. Ein „Sensor“ misst jeden Durchlauf die Bodenfeuchtigkeit und wenn der Wert der Bodenfeuchtigkeit kleiner als ein Grenzwert ist, dann wird durch eine bedingte Anweisung die Bodenfeuchtigkeit wieder aufgefüllt.
Das Beispiel mit der Bewässerung ist in Scratch in wenigen Minuten, von einem Erwachsenen, der weiß was er macht, zusammengeklickt. Für Kinder dauert das 'ne halbe oder dreiviertel Stunde mit Erklärungen und Denkanstäßen.
Und dann ist der Schritt in die „echte“ Hardware auch nicht mehr so groß. Wenn die Kinder vestanden haben, was eine Schleife ist, dann kann man auch schon ein Arduino[1] programmieren. Wie in Scratch wird auch im C / C++ auf dem Arduino eine Endlosschleife initialsiert, und ein analoger Bodenfeuchte-Sensor[2] abgegriffen. Auch wenn es bei so einem einfachen Programm nicht „notwendig“ ist, ist es beim Arduino sinnvoll, den verwendeten Pin als Variable zu benennen, damit man beim Hardware-Wechsel (z.b. von UNO r3 auf nano) die Programme einfacher portieren kann:
int sensorPin = 0; // An welchem Pin wird der Sensor abgelesen
int feuchtigkeit = 0; // In dieser Variable wird der Sensor-Wert gespeichert
void setup() {
// declare the ledPin as an OUTPUT:
Serial.begin(9600);
}
void loop() {
// read the value from the sensor:
feuchtigkeit = analogRead(sensorPin);
delay(1000);
Serial.print("sensor = " );
Serial.println(feuchtigkeit);
}
Ich werde das Projekt auf jeden Fall mal mit unseren Kids umsetzten und hier weiter berichten. stay tuned …