Als ich 1987 von der Haupt- an die Berufsschule in eine Wirtschaftsklasse wechselte, gab es dort (endlich!) auch einen richtigen Informatik-Unterrricht, in dem Programmieren gelehrt wurde. (In meiner vorherigen Schule gab es zwar eine „Computer-AG“, in der wurden allerdings lediglich an C64-Computern mit Bernstein-Monitoren BASIC-Listings aus dem Benutzerhandbuch abgetippt). Nun, an der Berufsschule, sollte die Sache aber ernst werden. Dazu hatte man in einem EDV-Raum ein Master-Slave-System, bestehend aus Olivetti M20 und M24 aufgebaut. Das Betriebssystem, das auf den Geräten lieft, hieß EUMEL und die Programmiersprache, die unterrichtet wurde, war ELAN … Gestern habe ich nun günstig ein ELAN-Handbuch erstanden und gleich einmal angefangen, darin herumzulesen.
ELAN ist eine strukturierte Programmiersprache, die sich konzeptionell an die ALGOL-Familie anlehnt und die Mitte der 1970er-Jahre u.a. an der TU Berlin entwickelt wurde. Die Entwicklung wurde im Rahmen der Initiative „Arbeitskreis Schulsprache“ (ASS) durch die DFG gefördert, die damit Programmierunterricht an Universitäten und Schulen forcieren wollte. Bei der Konstruktion von ELAN (Elementary Language) und später dem darauf zugeschnittenen Betriebssystem EUMEL (Extendable Multi User Microprocessor ELAN-System) wurden bewusst einige Konzepte ignoriert/ausgelassen, die das Programmieren [lernen?, S.H.] erschweren:
Nicht vorhanden sind (z.B. im Vergleich zu ALGOL60)
- GOTO-Anweisungen
- explizite Compound Statements
- Blöcke
- geschachtelte Prozeduren (S. 6)
Insbesondere die GOTO-Kontroverse hatte sich ja nicht nur an ALGOL, sondern vor allem an BASIC entbrannt: GOTOs unterminieren Versuche strukturierten Programmierens und erzeugen „Spaghetticode“. Die GOTO-Anweisungen in BASIC sollten den „beginners“ in Dartmouth ja nicht bloß das Programmieren vereinfachen, weil Sprungziele durch Zeilennummern im Programm direkt sichtbar waren; sie stellen überdies auch eine leicht zu compilierende/interpretierende Adressierungsweise dar, denn die GOTOs der höheren Programmiersprachen sind den Jump-Anweisungen der verschiedenen Assembler (die dann nicht auf Zeilennummern, sondern Speicher-Adressen zielen) sehr ähnlich! Wer BASIC lernt, lernt also bereits eine recht maschinennahe Art der Programmierung (erst recht, wenn dieses BASIC dann auch noch über POKE- und PEEK-Befehle verfügt) – ganz im Gegensatz zu Sprachen, die auf hardware-ähnliche Sprung-Konzepte (GOTOs) verzichten, wie ELAN.
Dass man bereits Mitte der 1970er-Jahre, also gerade zu der Zeit, als die Mikrocomputer die Privathaushalte zu erobern begannen, damit in der schulischen Ausbildung ein massives informatisches Gegengewicht zum „Hobby-Programmieren“ mit BASIC auf die Beine stellen wollte und dies sogar mit Forschungsgeldern und Drittmitteln realisieren konnte, zeigt das Auseinanderklaffen der Schere zwischen Sichtweisen auf Computerbeherrschung recht deutlich. Programmieren zu lernen/lehren und dabei die Hardware möglichst weit in den Hintergrund zu rücken, um mit intellektualistischen Sprachkonzepten eigentlich Informatik zu lehren, scheint mir eine mögliche Wurzel für den heutigen Zustand des EDV-Unterrichts in Schulen zu sein (wo man ja eigentlich nur noch den Umgang mit GUI-Betriebssystemen und Anwenderprogrammen lernt).
Die Front gegen BASIC wird im „ELAN-Handbuch“ sogar explizit aufgemacht: „Der ASS empfahl in seinem Abschußbericht, auf die Verwendung von BASIC zu verzichten, und empfahl stattdessen die Verwendung von ELAN und PASCAL als Schulsprachen.“ (12)* Und wirft man einen Blick auf die Entwurfskriterien von ELAN, zeigt sich, wie diese Schulsprache im Detail gedacht war. Dort heißt es (u.a.): „Das Hauptanwendungsgebiet der Programmiersprache ELAN liegt also auf der Ausbildung. ELAN ist daher keine ‚Allzwecksprache‘ [vgl. „Beginner’s All-purpose Symbolic Instruction Code“ = BASIC, S.H.] Wichtige bekannte Sprachkonzepte wurden absichtlich nicht mit in die Programmiersprache aufgenommen. […] Nach unserer Meinung muß [..] bedacht werden, daß auch neue Programmiersprachen nicht in jeder Hinsicht ‚vollkommen‘ sein können und bei der Entwicklung immer Kompromisse geschlossen werden müssen. Eine kritische Haltung gegenüber Programmiersprachen ist daher nicht nur erwünscht, sondern notwendig.“ (13)
ELAN hat sich als Lehrsprache nicht durchsetzen können. Es gab zwar offenbar Überlegungen, die Sprache auch für 8-Bit-Mikrocomputer (sogar für den Z80) zu portieren, doch dafür hätten sich zu jener Zeit wohl genauso viele (junge) Programmierer interessiert, wie für die vergeblichen Versuche FORTH oder COMAL auf Heimcomputern beliebt zu machen. Was ich da in der zweiten Hälfte der 80er im EDV-Unterricht gelernt habe, war marginal – ich konnte wesentlich besser BASIC programmieren und wurde vom Informatik-Lehrer deshalb schon bald aus der ermüdenden Entwicklung von „l’art pour l’art“-Algorithmen in ELAN abgezogen, um für ihn eine Datenbank-Anwendung in GWBASIC zu schreiben, mit der er später seine Unterrichtsplanung machen konnte. Für solche Anwendungen war ELAN offenbar nicht „All-purpose“ genug. Fragt sich, was man damit dann eigentlich lernen sollte …
Wie sich beim Googlen nach ELAN zeigt, gibt es heute noch eine marginale Beschäftigung damit. Hier versucht jemand mehr über vorhandene Compiler und das Betriebssystem EUMEL zu erfahren. Hier gibt es sogar noch einen recht komplexen Überblick über die Weiterentwicklung der Sprache und des Betriebssystems für verschiedene Hardware-Umgebungen.
* „Im Informatikunterricht an Schulen müssen moderne Programmiersprachen verwendet werden. Numerisch/mathematisch orientierte Konzepte wie Basic oder Maschinensprachen sin[d] nicht geeignet. Sie bieten keine Garantie dafür, daß Problemlösen, Umgehen mit Daten und Algorithmen sowie die Informationsverarbeitung angemessen erlernt werden kann.“ (Quelle)
Hallo Stefan Höltgen,
habe früher mal in der GMD gearbeitet (noch zu den Zeiten von EUMEL und ELAN).
Da ich nun nach einer Runde Hamster-Modell, das für gängige BS zur Verfügung steht, gerne mit ELAN weitermachen möchte, um meine Hauptschüler ein paar Grundlagen der Programmierung kennen lernen zu lassen, frage ich mich, ob es noch Implementierungen (z.B. las ich von einer für MS-DOS, zugegeben auch nicht der letzte SChrei, aber verfügbarer als EUMEL oder irgendein Linux) für diese tolle Sprache gibt.
Wissen Sie weiter?
viele Grüße aus Köln
Georg Jünger
Hallo,
die einzigen Implementierungen von ELAN bzw. seinen Nachfolgern (aktuell „L4“), die mir bekannt sind, finden sich hier:
http://os.inf.tu-dresden.de/L4/
Da ist unter anderen eine Version für Linux zu finden: http://os.inf.tu-dresden.de/L4/LinuxOnL4/
S. H.
Pingback: Hardware-Nachlese | SimulationsRaum
Auf http://www.spam-filter.de/ausgefiltertes/eumel gibt es alte Eumel-Disketten (HGs, Handbücher, etc).
Irgendwann werde ich das mal im Qemu auf Linux installieren…
Hi Georg,
deine Anfrage ist zwar schon ein bisschen her, aber im Vergleich zum Alter von ELAN ja praktisch nur ein Augenblick. Hier gibts einen ELAN-Compiler: http://www.cs.ru.nl/elan/ Unter Linux hab ich ihn ausprobiert, funzt!
—
Thomas
btw, Implementationen für Z80 gabs tatsächlich. Habe das System auf nen Sharp MZ821 am rennen gehabt. War ne coole Sache!