Freitag, 3. Februar 2012

Interesse am Computer wecken und fördern

Was ist es eigentlich, was mich an Computern, insbesondere der Programmierkunst interessierte und bis heute begeistert? Diese Frage stellte sich mir, als für meinen Sohn das Thema "Informatik an der Schule" aufkam. Was hat mich damals, als ich als Vierzehnjähriger in die Gedankenwelt der Informatik eintrat, besonders an ihr fasziniert? Was könnte auch heute für Schüler in diesem Alter wirklich interessant sein?

In den späten siebziger Jahren, lange vor dem Erfolg des PC, waren Computer noch nicht so omnipräsent wie sie es heute sind. Um sie kennenzulernen, musste man sich selbst zu ihnen hinbewegen. Ein heutiger Lehrer, der in mittleren Schulklassen die Informatik unterrichten soll, sitzt dagegen vor Schülern, die fast alle einen Facebook- und Twitter-Account haben, die in den Pausen nicht mehr gummitwisten oder Fussball spielen, sondern, wenn sie es dürfen, auf ihren Smartphones Filmchen anschauen und Mails, Kurznachrichten und Kommentare lesen und schreiben. Schüler, für die die Benutzung eines Computers ganz selbstverständlich ist.

Einige dieser Schüler dürften mit mir gemeinsam haben, dass sie die blosse Bedienung eines Computerprogramms uninteressant finden. Das sind die Schüler, denen ich mich nahe fühle. Sie wollen etwas herausfinden, grübeln, forschen, eine Idee wirklich werden lassen, eine nach Regeln ablaufende Ordnung in Gang setzen - nicht ein Programm bedienen.

Vielleicht haben oder hatten sie einmal eine Game-Phase, in der sie sich freiwillig in die Regeln einer künstlichen Welt hineinbegeben, die ein Programmierer sich für sie ausgedacht hat. Aber diese Phase wird aufhören, sobald sie die Unfreiheit erkennen, in der sie sich als Gamer befinden. Ein paar Knöpfchen zu drücken, ein paar ausprogrammierte, vorgedachte Tricks herauszufinden, die ein anderer ersonnen hat: Das stillt nicht auf Dauer die wissenschaftliche Neugier, den Erkenntnisdurst und den gerade in der Pubertät mächtig aufkommenden Wunsch, sich von Fremdbestimmung zu emanzipieren, sich von Grenzen zu befreien, die andere einem auferlegen. Nein - viel mehr Spass macht es doch, sich frei seines eigenen Verstandes zu bedienen und sich den Computer anzueignen – ihn nach eigenen, selbst erdachten Vorstellungen für das einzusetzen, was er gut kann: Systematisch Dinge abarbeiten oder durchsuchen, einen Status überwachen, Ereignisse melden, etwas berechnen, Geräte oder mechanische Vorgänge steuern.

Was mich damals in diese Richtung bewegte, war der Wunsch, die Arbeitsweise des Computers zu durchdringen und kennenzulernen. Natürlich waren damalige Rechner im Vergleich zu heutigen geradezu niedlich. Der Einplatinenrechner KIM-1 wäre mein erster Computer geworden, wenn meine Eltern ihn mir geschenkt hätten. Die Schaltkreise lagen offen. Er hatte einen sehr guten Mikroprozessor, den 6502[1], 1 KByte Arbeitsspeicher, eine Tastatur mit den Hexziffern 0 bis 9 und A bis F, und als Ausgabemedium reichten sechs Siebensegmentanzeigen: Vier für den aktuellen Speicherplatz und zwei für den Inhalt. Unter Bastlern waren auch seine Schnittstellen zur Aussenwelt sehr beliebt, an die man Fotozellen, Thermometer, Lautsprecher, Steuerungen für kleine Modelle mit Elektromotoren, Modelleisenbahnen und anderes anschliessen konnte.

Bis heute gibt es Fans und Nostalgiker, die für diesem Prozessortyp Assembler und Emulatoren schreiben. Die beeindruckende Seite visual6502.org kann sogar für jeden Taktzyklus des zu durchlaufenden Assemblerprogramms die Potentiale der einzelnen Leiterbahnen darstellen (die sich die Autoren der Seite in wochenlanger Detektivarbeit durch Microphotographie des Chips erschlossen haben)!

Ich war sehr neugierig auf Computer und wollte vor allem wissen, wie sie eigentlich funktionieren. Ich gehörte zu den Käufern der allerersten Nummer der Computerzeitschrift CHIP (Sept. 1978), weil mich der Titel ansprach: Der Computer, das unbekannte Wesen. Die Artikel gingen ziemlich tief ins Detail und eröffneten mir eine faszinierende Gedankenwelt. Durch die Beschäftigung mit den dort besprochenen Rechnern und Assemblerprogrammen wurde mir langsam die Funktionsweise eines Computers klar: Was ist der Datenbus, was ist der Adressbus, wie wird Speicher angesprochen und ausgelesen, welche (logischen) Bestandteile hat die CPU selbst, wie erfolgt die Kommunikation mit der Aussenwelt, d.h. den Peripheriegeräten? Dadurch, dass ich die Bestandteile des Computers näher kennenlernte, wuchs mein Interesse, den Computer zu betreiben - und das hiess für mich: zu programmieren.

Ohne dass ich zum damaligen Zeitpunkt etwas von Dingen wie "Turingmaschinen" wusste (den Begriff lernte ich erst sehr viel später kennen), stellte ich mir einen laufenden Computer vor, wie er sich Byte für Byte durch den Speicher durcharbeitet und versucht, die Inhalte, als Befehle zu interpretieren und auszuführen. Das ist ein bedeutendes gedankliches Modell, das auch in der mathematischen Grundlagenforschung eine Rolle spielt - man kann mit einer solchen Maschine als rein gedanklichem Modell schwierige theoretische Fragen wie das Entscheidungsproblem behandeln. Es ist der Kontaktpunkt, bei dem ein "auskristallisierter" Gedanke schliesslich Realität in Form einer Sequenz von einzelnen Schritten wird, die so klar sind, dass sie auch eine Maschine ausführen könnte.

Die Kernfrage eines Computerkurses könnte ganz schlicht sein:

Wie funktioniert ein Computer?

Natürlich wäre Assembler für einen durchschnittlichen Schüler, der normalerweise nicht so viel Interesse an diesem Thema hat, eine viel zu tiefgehende Angelegenheit. Aber wenn die Schüler nach Absolvieren des Kurses ein Grundverständnis davon haben, wie eigentlich ein Computer arbeitet, dann wäre doch schon viel erreicht! Mehr - viel mehr - als wenn sie nur gelernt hätten, ein bestimmtes heute gängiges Computerprogramm zu bedienen, also Tastenkombinationen oder Menüpunkte zu erlernen, die sich irgendein Programmierer ausgedacht hat. Die Bedienung von Büro-Software erlernt man nebenbei später im Beruf sowieso. Es wäre m.E. zu schade, die wertvolle Zeit eines Schulkurses über Computer damit zu verbringen.

Aber um die Idee einer Turingmaschine kennenzulernen, reicht schon ein einfaches Simulationsprogramm. Das folgende

Turing Scrapbook

ist ein solches Simulationsprogramm. Man könnte diese Webseite ins Deutsche übersetzen und leicht anpassen, dann könnte sie eventuell etwas für den Unterricht sein. Man kann mit "load" ein Programm in das Textfeld unten links laden und dieses mit "step" schrittweise ausführen. Aber vor allem: Man kann in das Textfenster auch ein eigenes "Programm" für die Turingmaschine eingeben und ausführen.

Vorstellbar wäre auch eine Mini-Prozessor-Simulation: Ein Prozessor könnte zwei Arbeitsregister haben, sowie Befehle, um Bytes vom Speicher in diese Register zu laden, etwas mit ihnen zu machen (z.B. die beiden Register zu addieren und das Ergebnis in das erste Register zu schreiben), die Registerinhalte in Speicheradressen zu schreiben und bedingte bzw. unbedingte Verzweigungen, die also den Befehlszeiger verändern. Gerade der 6502-Prozessor ist für solche Vorhaben ideal geeignet.

Sinnvoll in Hinblick auf die Grundfrage Wie funktioniert ein Computer? könnte dazu auch sein:
  • Bis zur Elektronik herunter zu verstehen, wieso man eigentlich mit zwei Transistoren einen Speicher bauen kann, der sich 1 bit merkt (Flipflop). Wie geht das eigentlich?

  • Man könnte einen einfachen Einplatinencomputer zusammenbauen, dabei seine Bestandteile diskutieren und kennenlernen und ihn schliesslich in irgendeinem Modell einsetzen. Das wäre etwas für eine Klasse, die besonders gern bastelt oder Modelle erstellt.

  • Mit dem Bit hat man das Kapitel Dualzahlen aufgeschlagen. Man könnte Rechnungen zur Basis 2 und 16 behandeln, dabei insbesondere die Hexadezimalziffern.

  • Vom Bit ausgehend, kann man das ganze Kapitel der Logik und insbesondere der Booleschen Algebra anreissen: Operationen mit Bits. UND, ODER, NICHT. Dass man etwa alle Operationen aus einer einzigen Operation herstellen kann, dem NAND (Nicht-Und). Die De-Morganschen-Theoreme. Wahrheitstafeln usw.

  • Wenn Interesse da ist, eine Programmiersprache zu erlernen, gibt es gute und weniger gute Wahlen. Eine gute Wahl wäre Logo (auch hier gibt es eine Webseite zum Üben: http://logo.twentygototen.org/ ). Denn Logo wurde genau für diesen Zweck - zum Kennenlernen: wie geht eigentlich Programmieren, wie fühlt es sich an? - konzipiert. Auch eine gute Wahl wäre Forth, da lernt man auch gleich etwas über die Datenstruktur des Stapels und wie diese nutzbringend eingesetzt werden kann. Eine schlechte Wahl wäre sicher Basic - in all seinen Varianten. Sprachen wie Java, C# oder C++ fallen vermutlich aus, da sie nicht schnell genug zu erlernen sind.


Ich bin kein Pädagoge. Daher weiss ich nicht, für welche Altersstufen welche der angerissenen Themen "richtig" sind. Ich bin mir aber sicher, dass die hier beschriebenen Wege vielen Schülern ein Interesse am Computer nahebringen dürften - viel eher als wenn man ihnen beibringt, Softwareprodukte wie Word und Excel zu bedienen. In letzterem Fall lernt man nicht wirklich etwas über Informatik, sondern macht nur einen Ausflug in das Hirn einiger Redmonder Programmierer.

Völlig abwegig finde ich auch das Argument "wirtschaftlicher Erfordernisse". Die Schule dient nicht wirtschaftlichen Interessen, sondern soll die geistige Entwicklung der Schüler begleiten und fördern. Es steht der von seinen persönlichen Interessen und Zielen motivierte Schüler im Vordergrund, den es bei diesen Interessen anzusprechen, zu fördern und dabei möglichst vielseitig auszubilden gilt. Dass davon auch die Wirtschaft profitiert, ist schön für sie, aber nur ein indirekter Effekt. Eine Einmischung steht ihr trotzdem nicht zu.

[1] Das Herz des KIM-1, der Mikroprozessor 6502 hatte neben dem Akkumulator nur zwei Register, glänzte dafür aber durch eine hohe Zahl von Adressierungsarten. Der Befehl LDA, um ein Byte in den Akkumulator zu laden, kennt z.B. nicht weniger als acht verschiedene Adressierungsarten (siehe http://www.obelisk.demon.co.uk/6502/reference.html#LDA).

4 Kommentare :

Enno hat gesagt…

Bei "uns" ist Programmierunterricht noch kein Thema... Ich denke aber auch, dass ein Wissen "von der Pike auf" sehr wertvoll wäre.
Interessant finde ich die LEGO-Mindstorms-Serie mit der Roboter gebaut werden können, die dann eben auch programmiert werden müssen.

Karl hat gesagt…

Mein ältester ist 8 Jahre und hat im Dezember einen Lego Mindstorms bekommen (nachdem er schon zwei Jahre auf dem Wunschzettel war).
Standardmäßig liefert Lego eine grafische Programmierumgebung mit. Mit einfachem Drag und Drop kann man Programme mit Schleifen und Verzweigungen erstellen. Leider erreicht man schnell die Grenzen. Ich habe jetzt die Entwicklungsumgebung Bricxcc runtergeladen mit der man unter NXC (not exactly c) "richtig" programmieren kann.
Bei meinem Sohn fällt das auf fruchtbaren Boden. Für ihn habe ich auch auf meiner Wii einen Atari XL Emulator installiert, weil ich den noch aus meiner Jugend kenne und ihm evt. ein paar Grundlagen (Funktion auf unterster Ebene) beibringen kann.
Mein jüngster Sohn (6) interessiert sich bislang nicht dafür. Ist auch gut. Ich werde ihn nicht drängen.
Teilweise nutzen einige Schulen die Lego Mindstorms Roboter im Unterricht.

Gruß

Karl

Rüdiger Plantiko hat gesagt…

Acht Jahre kommt mir persönlich für das Thema Computer ein bisschen arg früh vor. In meinem Artikel dachte ich eher an Klassenstufen von frühestens dem 8. Schuljahr aufwärts.

Aber für jedes Kind ist etwas anderes richtig.

Rüdiger Plantiko hat gesagt…

@Enno: Habe mir die Lego Mindstorms Webseite angesehen: Sie ist interessant und wäre speziell etwas für Kinder, die gerne Modelle basteln.

@Karl: Atari hatte ja auch einen 6502 Prozessor - ein Modell, das mir zum Kennenlernen von Maschinensprache sehr gut geeignet erscheint. Die Sachen aus den 70er/80ern haben ja auch den Vorteil, dass ihre Architektur noch viel einfacher ist, so dass die Grundideen klar erkennbar sind.

Um dagegen die Architektur eines heutigen i5 oder i7 auch nur ansatzweise zu verstehen (siehe z.B. http://www.realworldtech.com/page.cfm?ArticleID=RWT091810191937&p=1 ), müsste man schon (als Erwachsener mit IT-Kenntnissen) ein bis zwei Semester investieren...