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.

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)!

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 :
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.
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
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.
@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...
Kommentar veröffentlichen