Programmieren

Auf den ersten Blick erscheint "Programmieren" nicht wirklich attraktiv. Robotik, Drohnen, Lichter, Action sind auf den ersten Blick viel interessanter. Aber auch diese Dinge funktionieren nur, wenn jemand dem Computer sagt, was er tun soll und muss. Computer sind (noch) nicht soweit auch diese Arbeit uns abzunehmen. Programmieren ist aber gar nicht schwer und kann schon in der Grundschule anfangen.

Was ist Programmieren?

Lernen soll Spaß machen und daher solltet ihr nicht gleich ein ein Spiel oder eine App entwickeln wollen und euch unter Druck setzen, dass ihr das vielleicht verkaufen könnte. Auch ein 100m Läufer hat als Kleinkind mit krabbeln angefangen. Und genauso ist es beim Programmieren. Zuerst gilt es die Grundbegriffe zu verstehen. Dazu gehört:

  • Arbeiten mit Variablen und Speicher
    Irgendwo muss der Computer ja sich etwas "merken" um später wieder darauf zugreifen zu können. Wisst ihr noch, wie ihr das kleine 1x1 gelernt habt?. So mit den 10 Fingern eurer Hände?. Das ist für Menschen der erste "Speicher". Später konntet ihr euch immer mehr im Kopf "merken" oder auf einem "Schmierzettel" aufschreiben.
  • Anweisungen und Ein/Ausgaben
    Das Rechnen von "1+2" ist einfach eine Anweisung, die der Computer ausführt. Auch die Ausgabe eines Zeichens auf dem Bildschirm oder Drucker, das Einlesen einer Eingabe von der Tastatur, Maus oder selbst dem Touchscreen sind Basisfunktionen jedes Computers
  • Schleifen, Abfragen
    Die nächsten Elemente sind Abfragen auf Bedingungen und Reaktionen darauf. Letztlich baut darauf die "Intelligenz" des Computerprogamms auf. Um sich das Leben zu vereinfachen, können wiederkehrende Aktionen in Schleifen verpackt werden.
  • ...

Und so gibt es viele Elemente in der Programmierung, die quasi überall immer gleich sind. Wenn du die einmal verstanden hast, dann kannst du zwar nich nicht programmieren aber die nächsten Schritte angehen.

Es gibt nämlich gleich mehrere Programmiersprachen und jede hat irgendwo ihre Stärken und Schwächen. Viele sehen auch "sehr ähnlich", so dass es meist einfach ist, einen Code in einer anderen Sprache zu lesen. Beim Schreiben kann es kniffliger sein, da man schon genau die richtige Syntax einhalten muss.

Wenn du nun die Grundbegriffe kennst und mindestens eine Sprache "sprichst", dann kommt das eigentliche Problem: Vielleicht sollte ich besser sagen, "Du hast eine Aufgabenstellung, die du kösen willst". Das ist nun die eigentliche Herausforderung am Programmieren: Man muss eine Aufgabenstellung so umsetzen, damit ein Computer sie spielt sehr oft und viel schneller Lösen kann, als man es selbst dann je mals könnte. Im Prinzip bist du nun der "Lehrer" und muss dem Computer beibringen, wie er zu arbeiten hat.

Programmieren mit Block-Code

Je nach deinem Alter kannst du natürlich gleich eine "richtige" Programmiersprache lernen (und per Tastatur schreiben). Daher ist es aktuell immer noch wichtig, gut mit der Tastatur umgehen zu können. Für die jüngeren Einsteiger gibt es aber auch andere Alternativen, die einen sehr einfachen Zugang erlauben, in dem du einfach vorbereitete Blöcke zusammenfügst. Aber das auch genau so programmieren. Ich finde Scratch hier sehr gelungen. Das MIT - Massachusetts Institute of Technology , eine große bekannte Universität in den USA hat auf ihrer Seite dazu sehr viel Informationen zusammen getragen. Auch auf Deutsch.

Hier werden "visuell" durch Zusammensetzen von Codeblöcken die Aufgaben gelöst. Schauen Sie sich einfach mal das Video auf deren Webseite an und vielleicht den ein oder anderen Code. Installiert werden muss gar nicht, da alles im Browser läuft. Übrigens gibt es Scratch auch für kleine Unix-Rechner wie den RaspberryPI, den kleinen Ein-Platinen-Computer für <30€. Es muss also gar nicht Papas teurer Notebook sein.

Damit lassen sich auch schon ersten Spiele programmieren!

Übrigens gibt es z.B. mit dem Calliope eine Plattform, bei der ihr einen kleinen Bastelcomputer genau so programmieren könnt.

OpenHPI: Wie programmiere ich meinen ersten Mini-Computer?
https://open.hpi.de/courses/mikrocontroller2019?locale=de
ESP32 per Ardublockly als Schüler programmieren

Animation/StopMotion

Was machen aber Kinder, die mit sowohl mit Mathematik/Physik aber auch mit Spielen nicht viel am Hut haben? Vielleicht sind ja Rollenspiele o.ä. interessanter für euch. Auch hier gibt es fertige kostenfreie Programme, mit denen relativ einfach Animationen erstellt werden können. Leider ist auch mein Kandidat da nur auf Englisch verfügbar, aber das ist ja nur ein weitere Grund etwas besser in Englisch aufzupassen oder ?. Kleiner Hinweis: Ich hab Englisch in der Schule auch nicht "geliebt" und die Noten-Kurve" war dann auch 2-3-4-4-5-4 und so weiter). Wer also in "Technik" und "Sprachen" nicht gleichzeitig gut ist, sollte sich trotzdem nicht von englischen/amerikanischen Webseiten nicht abschrecken lassen, sondern es eher als sportliche Herausforderung sehen.

Dying 47-Year-Old Professor Gives Exuberant ‘Last Lecture’
http://video.google.com/videoplay?docid=-5700431505846055184

Beim "Rollenspiel" bestimmen Kinder, wie Figuren handeln und auf andere Personen reagieren. In übertragenem Sinne ist auch das "Programmieren": das Vorgeben von Anweisungen und Reaktion auf Events und Abfragen.

Programmieren für Kinder - Small Basic

Etwas weniger Abstrakt ist das ebenfalls kostenlose Small Basic von Microsoft. Alle können vermutlich das "Hello World"-Beispiel, welches schon "ewig" alle Neueinsteiger begleitet. Aber ein schnöder Text auf dem Bildschirm ist noch kein echter Erfolg. Interessanter wird es mit Grafiken und Mustern. Kann jemand mit dem Begriff "Turtle-Basic" was anfangen ?. Turtle steht für "Schildkröte" und schon früh konnte man damit quasi eine virtuelle Schildkröte über den Bildschirm krabbeln und eine Linie malen lassen. Natürlich nicht per Maus, sondern per "Steuerbefehl":

 

Dieses einfache Skript malt ein Quadrat auf den Bildschirm. Nicht sonderlich spektakulär aber es zeigt die Basis aus der Abfolge von Befehlen. Nun können wir das effektiver machen. Das Hilfsmittel sind "Schleifen":

Deutlich kürzer, schneller getippt, lesbarer und das gleiche Ergebnis. Und nun passen wir das etwas an.

 oder

Mit der Angabe der Geschwindigkeit "Speed" läuft die Schildkröte schneller und mit 100 Durchläufen mit 95 Grad Winkeln ergibt sich diese Rosette. Reduziert man hingegen die Schrittweite (100-i*5) mit jedem Durchlauf, dann kommt eine kleine Schleife heraus. Man kann auch zwei Schleifen miteinander verschachteln, so dass sich die Schrittweite als auch der Drehwinkel anpassen lässt:

Welche Figuren könnt ihr virtuell basteln ? Dreht einfach an den Zahlen, addiert ein paar Befehle und versucht es. Ach ja ihr braucht ja noch die passende "ProgrammierUmgebung". Versucht es mal mit Small Basic. (Wenn ihr in Englisch noch nicht fit seid, dann fragt einfach eure Eltern.). Bei der Installation kann dann auch Deutsch ausgewählt werden. Übrigens gibt es auch hier einen riesigen "Beispielpool" mit Programmen, wie z.B. eine Tetris-Lösung

Programmieren für Kinder - TouchDevelop

Microsoft hat zusammen mit Firmen eine Einführung in Programmieren veröffentlicht. Das Handbuch steht kostenfrei zum Download zur Verfügung und auch die Programmierumgebung ist im Internet offen zugänglich. Im Dezember 2014 wurde mit einigen Schulen angefangen und angeblich das System immer weiter verbessert.

Im Gegensatz zu Scratch wird hier "richtig" programmiert, d.h. nicht mit Blockdiagrammen sondern schon mit einem Art "Code". Die Abstraktion ist höher und die Kinder lernen schon, dass Programmieren eine Art "Sprache" ist. Durchaus ein interessanter Ansatz für 10 Jahre und älter.

Handbuch
http://www.code-your-life.org/Lehrmaterial/mediabase/pdf/2058.pdf

Programmieren mit Hour of Code: Flappy

Einen eigenen kleinen Abschnitt möchte ich den "Hour of Code" -Beispielen widmen. Sie sind sehr gelungen. Ganz besonders möchte ich das Beispiel "Flappy" erwähnen. Viele Kinder werden "Flappy" vielleicht noch kennen. Ein Entwickler in Vietnam hat es für Smartphones geschrieben und es war Ende Januar 2014 das am meisten heruntergeladene kostenfreie IOS-Spiel. Der Entwickler verdiente da bis zu 50.000 US$ pro Tag durch die Werbung. In 10! Schritten schreibt ihr Kind allein mit einem Browser das Spiel selbst noch einmal.

Wenn das kein Anreiz ist.

Mittlerweile gibt es auch von Unity eine kostenfreie 2D-Plattform

Gatter und Computer simulieren

Computer sind elektronische Schaltungen und es gibt ein paar Grundschaltungen wie OR, AND, NAND, NOR etc., die man geschickt verschalten kann um z.B. einen Addierer zu erhalten. Genau genommen sind Prozessoren eine riesige Ansammlung solcher Grundschaltungen. Da kann es schon einmal ganz spaßig sein die ersten Bausteine zusammen zu setzen. Aber freuen Sie sich nicht z früh. Die ersten paar Übungen sind noch einfach aber die Komplexität wächst stetig an

Wer dann Appetit bekommen hat, kann sich auf der Webseite von Noam Nisan und Shimon Schocken die Software einer Computersimulation herunter laden. Genauer ist es die Software zu ihrem Buch, in dem ein Computer stück für Stück von der Pike auf entwickelt und simuliert wird. Es ist vielleicht etwas trocken und anstrengend aber hilft natürlich wirklich zu verstehen wie Computer ticken.

App-Entwicklung

Ich habe bislang noch keine App entwickelt, aber wenn ich den verschiedenen Plattformen und Videos glauben darf, ist es nicht schwerer als eine Entwicklung für Windows oder Linux. Hier daher ein paar Links zum Einstieg.

Programmieren für Fortgeschrittene

Irgendwann hat sich auch die ausdauerndste Schildkröte müde gelaufen und es darf etwas "trockener" sein. Aber dann seid ihr vielleicht schon bereit, etwas formaler in eine Programmiersprache einzusteigen. Leider gibt es da auch wieder sehr viele verschiedene Sprachen und dahinter stehen auch wieder der ein oder andere Hersteller oder Anwendungsfall. Es ist schon ein unterschied, ob man Treiber für ein Betriebssystem entwickeln will, eine Spiel, eine Webanwendung oder eine Windows-Applikation. Aber das schöne am Programmieren ist, dass die Grundprinzipien überall vergleichbar sind und sich die Schlüsselworte und die nutzbaren Bibliotheken verändern. Wenn ihr aber mit Programmieren gerade anfangt, dann könnt ihr einfach damit loslegen, was ihr am einfachsten Erreichen könnt. Hier mal ein "Hello World" in den drei unterschiedlichen Sprachen:

  • Java

  • C#

  • Visual Basic

Insofern sieht das alles erst mal sehr ähnlich aus. Aktuell dürfte Java oder C# der wahrscheinlich beste Start darstellen, da Java oft in Schulen genutzt wird und Microsoft mit C# auf Windows natürlich eine sehr gute EntwicklungsUmgebung (quasi Word für Programmierer) als auch umfangreiche kostenfreie Informationen bereit stellt.

Weitere Links

Leider gibt es auch bei Microsoft viele gute Aktionen und Programme, die aber nach einige Zeit einfach wieder verschwinden.