Rainer Hahn, Hochschulrechenzentrum Universität Bielefeld

Warum immer wieder neue Programmiersprachen?

19.06.1981

Rainer Hahn, Hochschulrechenzentrum Universität Bielefeld

Warum immer wieder neue Programmiersprachen?

In den letzten Jahren wurden eine Vielzahl von höheren Programmiersprachen entwickelt. Die meisten dieser Programmiersprachen verschwanden wieder sehr schnell.

Was sind die Ursachen für die anhaltende Weiterentwicklung von Programmiersprachen? Warum werden immer wieder neue Programmiersprachen entworfen?

Anpassung an neue Anwendungen

Durch die Steigerung der Rechenkapazität moderner Rechner und der gleichzeitigen Kostensenkung können zunehmend mehr und neuartige Probleme mit Hilfe von Rechnern teilweise oder ganz gelöst werden.

Neue Anwendungsgebiete erfordern oft neue Programmiersprachen, mit deren Hilfe man die neuen Anwendungen besser programmieren kann. Diesem Trend zu Spezialsprachen steht jedoch die Entwicklung von allgemein verwendbaren Sprachen entgegen, die für die neuen Anwendungen ebenfalls angepaßt werden müssen.

Neue Anforderungen

In Programme werden erhebliche Mittel investiert. Die Erfahrung zeigt, daß umfangreiche Programme stark fehleranfällig sind und daher über lange Zeit "gewartet" werden müssen.

Seit einigen Jahren wird daher nach Sprachelementen und Methoden gesucht, die die Erstellung von Programmen von vornherein fehlerfreier und die Wartung beziehungsweise Modifikation von Programmen erleichtern sollen

Mangel an bestehenden Sprachen

Jede Programmiersprache weist gewisse Mängel auf. Es liegt in der Natur der Sache, daß es kaum gelingen kann, Sprachen ohne Mängel oder "eingebaute Fallen" zu entwickeln.

"Stand der Technik"

Es wurden teilweise erhebliche Fortschritte auf dem Gebiet des Entwurfs von Programmiersprachen gemacht. Sprachelemente, die für lange Zeit als grundlegende Elemente von Programmiersprachen betrachtet wurden, wie etwa die Sprung-Anweisung (GO-TO), sind in den Verdacht gekommen, zu schlechten und fehleranfälligen Programmen beizutragen. Ziel des modernen Sprachentwurfs ist, solche "eingebauten Fallen" in Sprachen zu eliminieren, ohne Programmierer unzulässig in der Anwendung der Sprache einzuschränken.

Bei älteren Sprachen (wie zum Beispiel Fortran) wurde versucht, diese durch neue Sprachdefinitionen den modernen Erkenntnissen anzupassen. Eine solche "Altbau-Sanierung" kann jedoch nur teilweise gelingen, weil die Grund-Struktur von älteren Sprachen einer Modernisierung oft widerstehen.

"lnnovationsdrang"

Bei dieser Aufzählung ist nicht zu vergessen, daß der Sprachentwurf einen sehr starken Reiz ausübt. Das heißt, es macht einfach Spaß, neue Sprachen zu definieren. Leider, oder vielmehr glücklicherweise, ist der Sprachentwurf eine sehr schwierige Aufgabe. Zum einen müssen bei den Sprachentwicklern ausreichend Kenntnisse über moderne Entwicklungen von Programmiersprachen vorhanden sein. Zum anderen kann heutzutage eine Sprache nicht "am Schreibtisch" entworfen, sondern muß einem intensiven Praxistest unterzogen werden, der viel Zeit benötigt.

Solche Gründe verhindern, daß Programmierer mit zu vielen neuen Sprachen konfrontiert werden, die zur "Einsatzreife" gelangen. Die Forschungen haben sich auf dem Gebiet des Sprachentwurfs in letzter Zeit überwiegend nicht auf das Entdecken völlig neuartiger Sprachelemente konzentriert, die das Bearbeiten neuer Problemklassen gestattet, sondern auf die Schaffung neuer Sprachen, die die Erstellung sicherer und wartbarer Programme erlauben.

Folgende Schwerpunkte haben sich herausgebildet:

- Steuerkonstruktionen, das heißt Anweisungen, die die Reihenfolge der Abarbeitung von Anweisungen angeben.

- Datentypen. Jedes Datenobjekt, das in einem Programm verwendet werden soll, ist von einem bestimmten Typ. Wird eine Operation auf ein oder mehrere Datenobjekte angewendet, so kann ein Übersetzer die Konsistenz der Typen (Operanden und aktuelle Parameter) sowie die Zulässigkeit der Operationen auf diese Objekte überprüfen. Ziel ist es, soviel statische Informationen über eine Klasse von Objekten wie möglich von Übersetzern überprüfen zu lassen ("strong typing"-Konzept). Dabei ist wichtig, die Definition neuer und/oder abstrakter (abgekapselter) Datentypen zuzulassen.

- Moduln erlauben die kontrollierte Zusammenfassung von Routinen und/oder Datenobjekten und damit eine separate Erstellung und Übersetzung, ohne Überprüfungen durch den Übersetzer einzuschränken.

- Dabei sollen neue Programmiersprachen möglichst wenige, voneinander unabhängige Elemente aufweisen, die aber beliebig miteinander verknüpft werden können, ohne daß Ausnahmen ("Fallen") entstehen. Damit wird erreicht, daß Programmiersprachen leicht erlernbar und beherrschbar sind.

- Weiterhin sollen Programmiersprachen so gestaltet sein, daß Programme leicht auf ihre Richtigkeit überprüft und sogar die Richtigkeit mit einer geeigneten Beweismethode nachgewiesen werden kann.

- "Natürlichkeit" der Sprachkonstruktionen soll gewahrt sein.

- Sprachmittel, die die Dokumentation von Programmen durch die Programme selbst erleichtern und dadurch die Wartbarkeit erhöhen.

- Sprachelemente sollten so gestaltet sein, daß sie die Beweisbarkeit von Programmen erleichtern.

Dieser Forschungsprozeß ist noch nicht abgeschlossen. Es ist im Gegenteil zu vermuten, daß Sprach-Elemente, die bis jetzt als grundlegendes Mittel der Programmierung angesehen werden, in Zweifel gezogen und durch "ungefährliche" beziehungsweise bessere Konstruktionen ersetzt werden. Daher werden auch in Zukunft neue Programmiersprachen definiert und implementiert werden. Jedoch ist Skepsis an der raschen Ablösung veralteter durch moderne Programmiersprachen angebracht.

Quelle: Titel von Rainer Hahn "Höhere Programmiersprachen im Vergleich". Eine Einführung, erschienen bei der Akademischen Verlagsgesellschaft, Wiesbaden 1981 (Studientexte: Informatik); Preis 29,80 Mark.