Bisher erschöpft sich die Unterstützung der Lehrerinnen und damit der Schülerinnen für die Vorbereitung zum Zentralabitur im Wesentlichen in dem Angebot einiger weniger grundlegender Vorgaben, Beispielaufgaben und Schnittstellen. Der Blick in die veröffentlichten Beispielaufgaben ließ im vergangenen Jahr erhebliche Fehler deutlich werden. Diese wurden offensichtlich, als ich Lösungen für die Aufgaben in Python implementieren wollte: www.die.informatik.uni-siegen.de/pipermail/gi-fg-informatische-bildung-nrw/2005-August/000090.html Die Lösungen wurden unter ddi.uni-wuppertal.de/humbert.in.hagen.de/ddi/ (unten auf der Seite) veröffentlicht.
Auch im Jahr 2006 (ein Jahr nach meiner dezidierten Kritik) wird
weiterhin als Beispiel von offizieller Seite
www.learn-line.nrw.de/angebote/abitur-gost/download/if-datentypen-objekto-ansatz-delphi.pdf
die Klasse TList (Seite 9–11) angegeben. Wer
erinnert sich noch, woher das »T« kommt? Es wurde vor langer Zeit für
Implementierungen in Pascal eingeführt, um selbstdeklarierte Typen(!) zu
bezeichnen – müsste jetzt nicht »K« für Klasse gewählt werden
–?
Da z.B. Standarddatentypen nicht über ein Präfix verfügen, sollten sich
die Autoren m.E. von dieser überholten und didaktisch umstrittenen
Präfixnotation verabschieden. Eher sollte über eine vereinbarte
Schreibweise (Gross für Klassen - klein für Objekte) sichergestellt
werden, was eine Klasse ist, denn über ggf. mehrdeutig interpretierbare
Präfixe.
Es wird eine Klasse angegeben, die mit vierzehn
Methoden ausgestattet ist. Übliche, d.h. in der Informatik
bekannte Schnittstellen zur Listenverwaltung enthalten (je nach
Implementierung) ca. sechs Methoden, um den notwendigen
Funktionsumfang zur Verfügung zu stellen. Ich fragte die Autoren
öffentlich, wie sie auf diese Schnittstelle gestossen sind. Ich erhielt
auf meine Anfrage
www.die.informatik.uni-siegen.de/pipermail/gi-fg-informatische-bildung-nrw/2005-August/000090.html
keine Antwort. Sobald Klassen deklariert werden, sollte dafür Sorge
getragen werden, dass sie minimal festgelegt sind. Es
ist jeder informatischen Strukturierung abträglich, wenn (wie in diesem
Fall) mehrere Methoden zur Erledigung einer Aufgabe verwendet werden
können. So etwas sollte nicht veröffentlicht werden (selbst wenn es
Bestandteil einer Klassenbibliothek ist).
Erst recht kann eine solche Schnittstelle nicht zum Vorbild erklärt
werden. Jedes von mir konsultierte Standardwerk der Informatik zeigt auf,
wie die Datenstruktur Liste implementiert werden kann, ohne einen
derartigen Wildwuchs an Methoden bereitzustellen.
Ich schlage vor, statt dieser Schnittstelle zum Beispiel die folgende Schnittstelle zu verwenden.
Sie findet sich in der Standardliteratur an Stellen, die sich mit der
effizienten Implementierung von Listenstrukturen beschäftigen. Darüber
hinaus wird üblicherweise in der deutschsprachigen Informatikliteratur
mit deutschen Bezeichnern gearbeitet, wenn Datenstrukturen beschrieben
werden. Als Beispiel sei auf die Standardeinführung in die Informatik von
Helmut Balzert verwiesen. Im einführenden »Lehrbuch Grundlagen der
Informatik« wird in Kapitel 17 ausführlich zu Listen gearbeitet.
Auch Balzert scheut sich nicht, auf andere einführende Werke zu verweisen
und gerade bei der Listendarstellung differenziert auf die Seiteneffekte
einer an der effizienten Implementierung orientierten Datenstruktur
hinzuweisen.
Maßgabe jeder informatischen Modellierung muss eine möglichst klare und verständliche Schnittstelle sein. Gerade für häufig benutzte Schnittstellen werden darüber hinaus gewisse Anforderungen an die Effizienz und Eleganz der Implementierung gestellt.
In dem o.g. Dokument wird durchgängig ein Begriff benutzt, der fachlich falsch ist: »Benutzerschnittstelle« (ab Seite 30ff). Vor ca. 20 Jahren wurde in der Informatik erkannt, dass dieser Begriff durch Benutzungsschnittstelle zu ersetzen ist. Es ist sehr ärgerlich, wenn solche Fehlleistungen öffentlich publiziert werden.
Wenn Sie sich bis zu dieser Frage vorgearbeitet haben und diesen
Artikel nicht als beleidigend empfinden, werden Sie sich gewiss die in
der Zwischenüberschrift gestellte Frage gestellt haben. Das zentrale
Problem besteht darin, dass Pascal eine stark typisierte Sprache ist und
nicht erlaubt, dass im Nachhinein Daten eines anderen Typs verwendet
werden, als bei der Deklaration festgelegt. Daraus resultiert, dass alle
Elemente, die in einem Graphen, einer Liste, etc. organisert werden,
letztlich von einer vorher festgelegten Klassen abzuleiten sind. Da die
Mehrfachvererbung nicht erlaubt ist, schränkt diese Festlegung aller
streng typisierten Sprachen die Möglichkeiten, beliebige Objekte in einer
solchen Datenstruktur zu organisieren, ganz erheblich ein.
Hier bieten schwach typisierte Sprachen einen grossen Vorteil, da sich
jederzeit beliebige Strukturen miteinander verzahnen lassen. Dennoch kann
an kritischen Stellen über eine Typprüfung erreicht werden, dass die
Typsicherheit (wenn sie gefordert ist) gewährleistet werden kann.
Die nächste Frage betrifft die Möglichkeit, vordefinierte Typen zu erweitern. Dies ist in streng typisierten Sprache üblicherweise nicht vorgesehen. Dabei wird deutlich, dass Mischsprachen, die imperativen Ursprungs sind, für die objektorientierte Implementierung aus didaktischer Sicht nicht gut geeignet sind, da sie mit Restriktionen aufwarten, die aus objektorientierter Sicht mit nicht orthogonalen Einschränkungen verbunden sind. Das Orthogonalitätskriterium ist für die didaktische Bewertung der Eignung einer Sprache ein hartes Kriterium und sollte nicht ohne schwerwiegende Gründe mißachtet werden.