Schlechte Noten für Basic als Schulprogrammiersprache?

18.09.1981

Basic gerät als Programmiersprache im Schulunterricht zunehmend ins Schußfeld. Denn: Basic zwingt nicht zur strukturierten Programmierung. Demgegenüber steht der Wunsch der Schüler, schnell Ergebnisse zu sehen. Aus diesen "Aha"-Erlebnissen schöpfen sie den Mut weiterzuarbeiten. Dies scheint auch der Grund für die weite Verbreitung dieser Sprache zu sein. Aber Basic allein ist noch keine Datenverarbeitung. Offensichtlich hängt es zum großen Teil vom Lehrer ab, die Anfänger aus Engpässen herauszuführen. Er muß konsequent und folgerichtig vorgehen. Dadurch könnte ein gute Basis für die Weiterführung in Fortran, Cobol und Pascal geschaffen werden.

Professor Dr. Dietrich Goldenbaum, Fachhochschule Rheinland-Pfalz, Mainz

Zunächst muß geklärt werden, welche Funktion eine Programmiersprache in der Ausbildung hat. Sie kann ein methodisches Werkzeug des Lehrenden (neben Tafel, Overheadprojektor, Fallstudie) oder selbst Gegenstand der Lehre sein. Ich möchte mich hier auf den ersten Aspekt beschränken.

Als methodisches Werkzeug gibt es für eine Programmiersprache eine Fülle von Einsatzbereichen. In den meisten Fällen ist sie ein Baustein neben anderen im computerunterstützten Unterricht, so daß ein System von unterstützenden Programmen und Kommandosprachen in die Betrachtung miteinbezogen werden muß. Als Beispiel sei hier auf die Einrichtungen zum Erstellen, Ändern, Testen und Ausführen von Programmen im Dialog verwiesen. Sie bestimmen die Einsatzmöglichkeit einer Programmiersprache als Unterrichtshilfe weitgehend mit.

Ich möchte mich im folgenden auf einen Einsatzbereich der Programmiersprache beschränken, der hauptsächlich von der Sprache selbst und weniger von der Programmierumgebung bestimmt wird: Das Durchschaubarmachen und Lösen vorgegebener Aufgaben (Probleme). Aus dieser Sicht sind folgende Anforderungen an eine Programmiersprache zu stellen: sie soll problemgerecht, leicht erlernbar und leicht anwendbar sein insbesondere soll dies auch für "Gelegenheitsprogrammierer" gelten, welche die Sprache nur dann anwenden, wenn ein geeignetes Problem auftritt.

Eine problemgerechte Sprache muß in ihren Sprachelementen-Umfang dem Problem angemessen sein, um unnötige Erschwernisse durch das Programmieren in einer ungeeigneten Sprache zu vermeiden. Ähnliche Aufgabenstellungen können dabei verschiedene Programmiersprachen als besonders geeignet erscheinen lassen. Ist zum Beispiel das Sortieren von Datenbeständen auf externen Speichern Teil einer Aufgabenstellung, so kann einmal ein Assemblerprogramm - wenn das Sortieren selbst Gegenstand des Interesses ist -, ein anderes Mal die Sort-Anweisung der Cobol-Sprache - wenn das Sortieren nur ein Schritt in einem organisatorischen Ablauf ist - geeignet sein.

Die Forderung nach der leichten Erlernbarkeit (und Wiederauffrischung für Gelegenheitsprogrammierer) bedeutet, daß die Sprache in ihren Sprachelementen, ihrem Sprachumfang und ihrer Syntax dem Lernenden angepaßt sein muß. Dies führt oft dazu, daß für die gleiche Aufgabenstellung verschiedene Sprachen eingesetzt werden. So sprechen Basic, Fortran, und Cobol "Nicht-Mathematiker" mehr an als Algol Pascal oder APL trotz der unbestreitbaren Vorzüge dieser Sprachen. Das liegt wohl auch mit daran, daß die erstgenannten Sprachen die Vorgehensweise beim Erarbeiten der Lösung einer relativ einfachen Aufgabenstellung stärker unterstützen als die zuletzt genannten Sprachen. Deren Stärken kommen erst bei komplexen Aufgabenstellungen zum Tragen.

Die leichte Anwendbarkeit einer Sprache zielt auf die Programmierumgebung und ist eine Punktion des Betriebssystems. Den unbestreitbaren Vorzügen des Programmierens im Dialog stehen oft das Erlernen einer zusätzlichen Kommandosprache und das Aufrufen verschiedener Betriebssystemkomponenten gegenüber. Hier sind diejenigen Sprachen und Betriebssysteme für den Einsatz in der Ausbildung besonders geeignet, die Kommandosprachelemente in die Programmiersprache integriert haben und mit der Hardware für den Benutzer eine Einheit bilden. Die vorwiegend in der Stapelverarbeitung eingesetzten Sprachen wie Cobol, Fortran, Algol oder PL/1 zeigen hier deutliche Schwächen gerade bei den oft als Gelegenheitsprogrammierer auftretenden Lernenden.

Wir setzen zur Zeit in der kaufmännisch-betriebswirtschaftlichen Ausbildung unserer Abteilung die Sprachen Cobol (im Stapelbetrieb) und Basic (auf Personal Computern) ein. Beide Sprachen decken den Einsatzbereich hinsichtlich Umfang und Komplexität der Aufgabenstellungen ab. Der Aufwand zum Erlernen der Sprachen ist dem Schwierigkeitsgrad der Aufgabe angemessen. Ein Ersatz von Basic durch APL wäre erwägenswert für den Einsatz der Sprache und die (noch?) geringe Verbreitung in der Wirtschaft.

Thomas Stier, Geschäftsführender Gesellschafter der GeMITmbH, Köln, und Dozent an der Universität Köln

Setzt man voraus, daß ein von Datenverarbeitung bisher unberührt gebliebener Zeitgenosse Interesse an der Anwendung von Computerleistung findet, so gilt es, ihm die Grundprobleme der EDV so anschaulich darzustellen, daß dieses Interesse erhalten bleibt. Es beginnt mit der theoretischen Erläuterung der Funktionen eines Rechensystems. Bald sollte der Beginner in die Lage versetzt werden, die Steuerung dieser Funktionen auch praktisch zu handhaben. Hierdurch wird erreicht, daß der Computer von ihm als Werkzeug angesehen wird, das kein Eigenleben führt. Um ein System steuern zu können, bedarf es zunächst keiner eigentlichen Programmiersprache. Es genügt ein beschränkter Satz von Makrobefehlen, die über eine leicht durchschaubare Sprachsyntax miteinander verknüpft werden.

Bald ist den Interessen durch praktische Erfahrung klar, daß sie ein komplexeres Problem auf dieser Art nicht lösen können. Nach dieser Erkenntnis setzt das eigentliche Programmieren erst an, wobei viele "programmieren" mit "codieren" verwechseln. Um eine Aufgabe in den Griff zu bekommen, muß sie zunächst analysiert und aufgegliedert werden. Ein Programmierneuling erkennt den Sinn dieser Vorbereitung - gleichgültig nach welchem Verfahren vorgegangen wird - zunächst nicht. Die Anfänger möchten schnell Ergebnisse sehen und schöpfen aus diesen Erfolgserlebnissen den Mut um weiterzuarbeiten. Genau hier ist die Erklärung für den inzwischen großen Verbreitungsgrad von Basic zu finden .

Dabei ist zunächst völlig unerheblich, daß diese Sprache anerkannte Mängel aufweist, angefangen vom Laufzeitverhalten bis zur Dokumentationsunfreundlichkeit. Die bestechenden Vorteile des interaktiven Betriebs mit einem Interpreter, der in lesbarer Sprache ohne langwierige Definitionen eine schnelle Erfolgskontrolle erlaubt, sind für den Lernenden so motivierend, daß die durch die Sprachsyntax vorhandenen Einschränkungen verdrängt werden

Der nächste Schritt vom Codieren zum Programmieren kann in Basic ablauforientiert leicht vonstatten gehen. Dabei ist entscheidend, daß für den Lernenden anschaulich ein Ablaufplan in ein Programm umgewandelt werden kann. In älteren Sprachen, wie Cobol, ist dies durch den Definitionsüberbau und die Mächtigkeit mancher Befehle wesentlich schwieriger zu erkennen. Genau an diesem Punkt scheiden sich die Geister, da viele erfahrene Informatiker zu Recht auf die strukturierte Programmiermethode verweisen. Ich bitte jedoch zu bedenken, auf welchem Weg diese Erkenntnis erlangt wurde. So bin ich fest davon überzeugt, daß die meisten Praktiker am Anfang die ablauforientierte Denkweise nachvollzogen haben, und dann erst im Laufe der Zeit durch die Erfahrung mit komplexen Strukturen eine Kehrtwendung stattgefunden hat. Warum sollten wir den heutigen Anfängern diesen anschaulichen Weg verweigern?

Ich halte es für wesentlich sinnvoller, einen Schritt nach dem anderen zu tun, und für den Programmierneuling hierdurch die Anfangshemmschwelle so gering wie möglich zu halten. Um dies zu erreichen, halte ich die Verwendung von Basic für geeignet. Der erfahrene Seminarleiter hat es in der Hand, aus den Engpässen, die diese Sprache zweifelsohne hat, herauszuführen, und andere Möglichkeiten zum Beispiel mit Pascal aufzuzeigen. Der interessierte Programmieranfänger erkennt ohne äußeren Zwang schnell, daß strukturiertes Vorgehen bei komplexen Aufgaben einfacher und schneller zum Ziel führt. Das ist der richtige Augenblick, um ihn durch Vermittlung geeigneter Instrumente zu unterstützen. Der Lerneffekt ist größer, und die Frustrationsrate sinkt.

Zu einem sinnvollen Programmierkurs gehört also nicht das simple Vermitteln von Syntaxregeln zum fehlerfreien Codieren, wie es leider heute noch üblich ist, sondern die Erklärung und Einübung der notwendigen Techniken, um letztendlich auch komplexere Probleme erfolgreich lösen zu können. Die Programmiersprache Basic ist hierbei ein relativ kleiner Teil des Ganzen. Sie spielt jedoch für die Lernmotivation und das Grundverständnis von Lösungsmöglichkeiten eine durch die Praxis belegbare nicht unerhebliche Rolle .

Bernhard Fucyman, Lehrgangsleiter Programmierung/Systemanalyse,Control Data Institut, Frankfurt

Die Frage, ob Basic als Programmiersprache im Schulunterricht geeignet ist, kann nur zögernd mit ja beantwortet werden.

Basic ist ohne Zweifel eine sehr einfache und weitverbreitete Programmiersprache und nahezu jeder Mini verfügt über Compiler oder Interpreter für Basic. Durch die ausgeprägte Problemorientiertheit und den relativ geringen Formalismus bekommen Schüler sehr schnell ihre "Aha-Erlebnisse". Es gibt ohne viel Definition schnell ein testbares und lauffähiges Programm. Der Schüler kann das Programmieren als Spiel erleben, indem er die Statements wie Bauklötze zusammenfügt. Aber Basic alleine ist noch keine Datenverarbeitung.

Vom Programmierer erwartet man heute, daß er seine Aufgaben ingenieurmäßig angeht. Die Möglichkeiten von Basic verleiten ihn zu einem unorthodoxen und individualistischen Arbeitsstil, der seit den siebziger Jahren vorbei sein sollte. Die Länderbegrenzung der Variablennamen verhindert bereits die Ansätze einer Dokumentation der Daten im Sourcecode. Selbst die Kommentar-Funktion REM wirkt sich erschwerend aus, da man diese drei Zeichen und die Zeilennummer bereits für einfachste Dokumentationen benötigt. Es wird sogar von einigen Anbietern von Minis empfohlen auf "REM" zu verzichten, da diese Kommentare Speicher belegen. Als besonderer Nachteil muß der Mangel an sauberen Strukturierungsmöglichkeiten angesehen werden.

Die Verschachtelung von "IF" ist nicht beliebig möglich, eine saubere Schleifensteuerung wie durch "WHILE" und "REPEAT UNTIL" ist nicht gegeben. Der Programmieranfänger ist förmlich zur chaotischen Programmgestaltung verleitet.

An unserem Institut haben wir uns entschlossen, die ersten Gehversuche in der Programmierung in Basic zu machen. Dabei wird besonders großer Wert darauf gelegt, daß vor der eigentlichen Kodierung moderne Methoden des Programmdesigns eingesetzt werden. Problemlösungen werden aus der Datenstruktur zum Struktoprogramm entwickelt. Danach wird gezeigt, wie dieses in einem Programmablaufplan umgesetzt werden kann, der wiederum in Basic kodiert wird. Der durch diesen Zwischenschritt bedingt erhöhte Aufwand wird sicher gerechtfertigt, wenn man die Einfachheit der Programmierung mit modernen Programmentwurfsmethoden kombinieren möchte. Mit etwas Übung wird es dem Schüler auch gelingen, Struktoprogramme direkt zu kodieren, ohne den Umweg über den Programmablaufplan zu machen. Struktoprogramme eignen sich auch besser zum Dokumentieren .

Wenn der Lehrer dafür sorgt, daß konsequent und folgerichtig vorgegangen wird, kann man den Einsatz von Basic zum Kennenlernen der Programmierung akzeptieren. Damit ist eine gute Basis geschaffen für die Weiterführung der Programmierung in Fortran, Cobol oder gleich in Pascal.

Dipl.-Hdl. Walter Bleicher, Abteilungsleiter im Bereich Betriebswirtschaft-Datenverarbeitung Technische Akademie Wuppertal

Die Frage, ob Basic als Schu|programmiersprache geeignet ist, ist höchst aktuell. Sie wird nicht nur in der DV-Literatur neuerdings diskutiert, sondern auch in der schulpädagogischen Literatur oder auf dem 19. Symposium der Didakta.

Die ganze Diskussion scheint darum zu gehen, ob Basic geeignet sei, bei der Einführung in die Welt des Programmierens die Weichen der Denkdisziplin genügend eindeutig auf strukturiertes, nicht-chaotisches Programmieren zu stellen. Denn: Basic bietet keinen Zwang zur strukturierten Programmierung. Ebensowenig allerdings wie Cobol oder Fortran, die man dann vermutlich also auch nicht als Einstiegs- oder Schulsprache verwenden dürfte. Wer sich aber einmal Einstiegs-Programme in Basic angesehen hat, der weiß um das Tohuwabohu.

Als Ausweg werden dann Algol-Derivate empfohlen: Pascal und Ada. Und hier gärt es. In der Micro-Szene ist Pascal sehr gut verbreitet und es scheint so, als werde nach Pascal mit Ada bald ein Doppelschritt getan sein. Auch Elan und andere werden empfohlen.

Zugespitzt ist das Problem vielleicht so zu sehen:

- Ist die umstrukturierte Sprache automatisch Grundstein zur unkultivierten Programmierung?

- Ist die "Algol-Struktur" ausreichend für eine gewisse Programmierkultur?

- Oder vielleicht identisch: Wer Ada oder Pascal programmiert und zusätzlich Assembler lernt und verwendet, steht der etwa in Gefahr, die Programmierkultur zu verwässern oder zu verlieren?

- Sind gewisse Elemente aus Basic (Fortran) so attraktiv, daß sie automatisch zum chaotischen Programmieren verleiten?

Hier sind in der Tat pädagogische Fragen angeschnitten, psychologische Fragen, Fragen der Arbeitstechnik, die interessanterweise in der Schule selten eine dominierende Rolle gespielt haben. Aber auch bei strukturierten Sprachen kann es vorkommen, daß die Struktur formal eingehalten wird, inhaltlich aber gemischter Unsinn vorliegt. Andererseits betonen die meisten DV-Lehrer, daß auch mit Cobol und Fortran sich recht viel Programmierkultur verwirklichen lasse, wenn sie geschult wurde (auch ohne Einsatz von PET). Und dabei wird eine weitere Frage deutlich: Ist die trotz unstrukturierter Sprache im Unterricht erlernte Strukturierung genau so wertvoll, wie die automatisch durchgeführte Strukturieren? Ist das im Kampf Erlernte mehr wert als das schmerzlos angeeignete Wissen? Es ist zumindest gleichwertig. Das Problem ist nur, ob wirklich entsprechend gelehrt wird. In unseren Einführungsseminaren - allerdings nicht für Schüler - wird bereits im Basic-Grundkurs und nicht erst im Aufbaukurs das Thema begonnen. Hier wäre ein Test vorzuschlagen: In den Bibliotheken durchsuche man die Basic-Lehrbücher und fahnde nach irgend etwas, was den Lernenden vom chaotischen Programmieren abhielte - Fehlanzeige. Jedenfalls nach eigenen Recherchen.

Nun ist allerdings das Gesagte keineswegs ein vollständiges Argument, nicht etwa doch zum Beispiel auf Ada oder Pascal überzugehen, wenn ein Ziel dadurch leichter erreichbar wäre. Dazu zunächst eine andersgeartete Überlegung. Basic und sein Aufkommen ist historisch zu sehen. Die Notwendigkeit, bei kleineren Rechnern den Dialog zu forcieren, Fortran zu vermeiden und die Leichtigkeit der Sprache ("unmittelbar einleuchtend") hervorzuheben. Neu erschlossene Käuferschichten nicht gleich zu überfrachten, bei kleinem Speicher kleine Aufgaben, also überschaubare Programme - dann auch ruhig chaotisch - zu formulieren, war wohl historisch, ökonomisch gegeben und zunächst vertretbar. Das Problem tauchte dann erst als Problem richtig auf, als die Geräte leistungsfähiger wurden und aus kleinen Programmen (kommerzielle) Großpakete wurden.

Hier also verzweigt sich noch einmal der Gedankenpfad. Der Schüler bleibt beim kleinen Problem, das auf einen Kleinrechner gehört. Der Nutzer des großen Basic-Paketes sollte dieses eher kaufen oder richtiger Programmierer werden mit der entsprechenden Schulung.

Der Schüler, der gar nicht Programmierer werden will, sondern nur ein kleines Problem optimieren soll oder den Rechner kennenlernen will, hat auch mit Basic das Ziel ohne Abstrich erreicht. Es sei denn, das Unterrichtsziel sei weiter gesteckt. Historisch gesehen war und ist Basic also weniger als Sprache, denn als "Computer + Sprache-Kombination" zweifelsfrei ideal, auch weil in manchen Bundesländern eben nur Basic-Rechner angeschafft werden konnten. Auch heute noch ist Commodore für manche Bundesländer die einzige und damit beste Alternative. Als Zielvorgabe galt bisher auch, daß die schnell erlernte Sprache dem Schüler das schnelle Ergebnis am Bildschirm während des Unterrichts ermögliche, damit er ein Erfolgserlebnis habe.

Basic ist als Sprache für das Adhoc-Problem, das Wegwerf-Programm geeignet, das ohne den nie greifbaren Spezialisten selber erledigt wird - ursprünglich mit nur 16 Befehlen. So fehlt es zur Einführung von Strukturierungsmaßnahmen an den Kriterien Revision, Personenwechsel, Ausufern, späteres Wiederaufrollen. Es heißt hier: Laie, Einstieg, Kürze, temporär. Mit Strukturierungsmaßnahmen voreilig zu disziplinieren kann - je nach Situation - auch widersinnig sein, kann demotivierend wirken wie auch kreativitätshemmend.

Wenn es heute Minis gibt, die mit Pascal dasselbe Ergebnis bringen, so ist die Sprache im Ergebnis seltener von Belang. Es sei denn, das Unterrichtsziel gehe weiter.

Zusammenfassend sei gesagt: Es kommt auf die Ziele des Basic-Einsatzes im Unterricht an. Solange man nur Formeln berechnet, ist die Sprache relativ unerheblich. Die Strukturierung muß wirklich gelehrt werden.