Weiter: Die Versprechen der objektorientierten Programmierung | Übersicht: Die Rahmenbedingungen | Zurück: Der technisch-finanzielle Rahmen |
Programmieren im Informatik-Unterricht hat inzwischen eine lange Geschichte, auch an unserer Schule. Häufig wird ein bottom-up-Ansatz verfolgt, bei dem einzelne Anweisungen einer Sprache eingeführt und schließlich zu umfangreicheren Programmstrukturen zusammengesetzt werden. Die inzwischen klassische Einführung in die Programmiersprache C von Kernighan und Ritchie [10] legt diesen Ansatz nahe. Wenig bekannt ist eine Vorarbeit von Kernighan/Plauger, Software Tools [9], deren didaktischer Ansatz sich für den Anfängerunterricht hervorragend eignet.
Im Bezug auf die funktionale Programmierung verwenden
Abelson/
[0]Sussman/
[0]Sussman in
Struktur und Interpretation von
Computerprogrammen [1] einen ähnlichen
Ansatz, der auch von Ferguson u.a. [6] und selbst von
Friedman/Felleisen [7] verwendet wird.
Alternativen zu diesem Ansatz sind der inzwischen obsolete Einstieg über die Maschinensprache und den Assembler oder die Verwendung von in Anwendersystemen eingebetteten Programmiersprachen. Letztere haben die Nachteile, dass sie oft schlecht entworfen sind und sich als ,,Denkwerkzeuge`` im späteren Informatik-Unterricht kaum eignen.
Wir gehen also beim Programmierunterricht in der Jahrgangsstufe 11 von Anweisungen aus, kommen zum Begriff der Variablen (den wir mit dem der Mathematik vergleichen), gehen weiter zur Ablaufsteuerung und kommen am Ende des Jahres zu Unterprogrammen und damit zur Modularisierung als wichtiges Mittel zur Abstraktion. Damit verbinden sich folgende Probleme:
Dagegen setzen wir ein arbeitsteiliges Vorgehen nach [9] und erhalten am Ende ein einfaches Rechtschreibprüfungsprogramm, das auch erlaubt, die Grenzen der Programmierbarkeit zu erahnen. Von Zeit zu Zeit können Schülerinnen und Schüler nach der Expertenmethode ihre Kenntnisse austauschen.
Wir haben versucht, diesen Schülern eine ihnen bisher unbekannte (funktionale) Programmiersprache anzubieten oder eine Programmentwurfsmethode (objektorientiert), die sie in stärkerem Maße fordert. Beide Ansätze nivellieren die Unterschiede in den Vorkenntnissen und tragen so zur Notengerechtigkeit bei.
Um dem zu begegnen, haben wir mit syntaxarmen, funktionalen Sprachen experimentiert. Die Reflexion über diesen Ansatz kann bei anderer Gelegenheit nachgeliefert werden. Es zeigt sich, dass eine Programmiersprache dann für den Einsatz in der Schule gut geeignet ist, wenn sie wenige syntaktische Konstruktionen und wenige grundlegende Konzepte hat, aber zulässt, diese auf viele verschiedene Weisen zu kombinieren.
Wir haben den Schülern gegenüber begründet, dass wir hier Grundstrukturen der Programmierung vermitteln wollen, dass uns folglich die Gestaltung von Benutzeroberflächen von den wesentlichen Fragen ablenkt. Klar strukturierte und einfach programmierbare Benutzeroberflächen würden aber diesen Einwand entkräften. Außerdem muss ein Programmkern, der unter einer graphischen Benutzerumgebung läuft, anders programmiert werden als ein monolithisches Stapelverarbeitungsprogramm. (Diese andere Programmiertechnik scheint auch andere Schülerpersönlichkeiten anzusprechen, siehe dazu auch [12].)
Im Folgenden soll erörtert werden, welchen Beitrag die objektorientierte Programmierung für den Anfängerunterricht Informatik leisten kann.
Weiter: Die Versprechen der objektorientierten Programmierung | Übersicht: Die Rahmenbedingungen | Zurück: Der technisch-finanzielle Rahmen |
Klaus Fueller