next up previous contents
Nächste Seite: FORTRAN Aufwärts: Allgemeines zu Programmiersprachen Vorherige Seite: Sprachniveaus   Inhalt

Höhere Programmiersprachen: Besonderheiten, Übersicht und Historisches

Seit Ende der siebziger Jahre haben sich auch im Bereich der Mikrorechner höhere Programmiersprachen aufgrund der im vorstehenden Abschnitt angeführten Vorzüge und der ständig wachsenden Leistungsfähigkeit der Rechner durchgesetzt. Voraussetzung für die Implementierung sind ausreichende Hardware-Ressourcen, d.h. ein genügend großer Arbeitsspeicher und externe Massenspeicher (Festplatte, Diskette), sowie ein leistungsfähiges Betriebssystem.

Ein großer Teil der höheren Programmiersprachen wurde von den größeren Rechenanlagen übernommen, z.B. FORTRAN, Pascal, COBOL und C. Diese Sprachen sind damit auf fast allen Rechnerfamilien verfügbar. Es gibt verschiedene Möglichkeiten Programmiersprachen in Kategorien einzuteilen. Eine häufig benutzte Einordnung hat vier Klassen:

Betrachtet man Programmiersprachen nach formalen Gesichtspunkten, so sind ihre Definition sowie ihre Sprachelemente wichtig.

Eine Programmiersprache wird definiert durch folgende Informationen:

Die Leistungsfähigkeit einer Programmiersprache wird bestimmt durch die Mächtigkeit ihres Befehlssatzes und die Flexibilität ihrer elementaren Bestandteile (Konstrukte). Programmiersprachen setzen sich aus folgenden Elementen zusammen [c't 1/89].

Nach diesen mehr formalen Gesichtspunkten wollen wir nun einen kurzen Blick auf die Historie der gängigsten höheren Programmiersprachen werfen und eine kurze Charakterisierung geben [#!c_t!#][1/89], [#!mef!#].

FORTRAN

Die älteste höhere Programmiersprache ist FORTRAN (FORmula TRANslator), eine Compilersprache. Sie wurde 1953 bis 1956 entwickelt für die numerische Behandlung naturwissenschaftlicher und technischer Probleme in herkömmlicher Formelsprache. Die einfache Sprachgestaltung, effiziente Übersetzbarkeit der Programme und hohe Rechengeschwindigkeit des Objektcodes sorgten für die rasche Verbreitung der Sprache, und es entstand ein immenser Fundus an leistungsfähigen Programmen vor allem im technisch-wissenschaftlichen Bereich. FORTRAN hat sich in weiterentwickelten standardisierten (genormten) Versionen (Fortran90 und Fortran95) bis zum heutigen Tag auch in der Mikrocomputertechnik behauptet. Darüberhinaus existiert ein High Performance Fortran (HPF), welches insbesondere auf Hochleistungscomputer wie Vielprozessorrechner zugeschnitten ist und die massiv parallele Programmverarbeitung durch rechnerunabhängige Sprachelemente hierfür unterstützen soll.

ALGOL

Für das gleiche Anwendungsgebiet wie FORTRAN wurde 1958 bis 1960 die Sprache ALGOL (ALGOrithmic Language), ebenfalls eine Compilersprache, konstruiert. Mit ALGOL wurde erstmals eine Programmiersprache nach informationstheoretischen Gesichtspunkten auf der Basis einer formalen Grammatik entwickelt. ALGOL verfügte gegenüber FORTRAN schon damals über erweiterte Ausdrucksmittel, wie dynamische Speicherverwaltung, Elemente der strukturierten Programmierung und Blockstruktur der Programme. Die Sprache zeichnet sich durch sprachliche Geschlossenheit und Transparenz aus und hat die weitere Sprachentwicklung, vor allem PL/1 und Pascal, beeinflußt, und wurde schließlich von diesen Sprachen verdrängt.

Pascal

Die Sprache Pascal (benannt nach dem Mathematiker Blaise Pascal) wurde 1970 von N. Wirth als Lehrsprache zur Beschreibung und Programmierung von Algorithmen entwickelt. Die Compilersprache Pascal besitzt eine genau definierte Struktur, unterstützt konsequent die strukturierte Programmierung und erlaubt die Definition auch von nicht-numerischen Datentypen und Mengen und deren Zusammenfassung zu noch komplexeren Daten-Strukturen. Das Zeigerkonzept (symbolische Bezeichnung von Speicheradressen) erlaubt sogar die dynamische Erzeugung von Datenstrukturen zur Laufzeit. Die Sprache hat vor allem auf Klein- und Mikrorechnern (CP/M- und MS-DOS-Rechner) Anwendung gefunden und liegt neben einer genormten Standardversion ISO 7185-1982 in einer Vielzahl von Dialekten vor (z.B. der de-facto-Standard Turbo-Pascal). Pascal hat maßgeblich die Sprachen MODULA-2 und ADA beeinflußt.

COBOL

COBOL (COmmon Business Oriented Language) wurde Ende der fünfziger Jahre im Auftrag des US-Verteidigungsministeriums entwickelt. Im Jahr 1960 wurde vom Committee of the Conference on Data Systems Languages (CODASYL) die erste Version veröffentlicht. Die Compilersprache COBOL ist auf die Anforderungen im kaufmännischen Bereich zugeschnitten. Sie verfügt über eine Dezimalarithmetik (BCD, siehe Kapitel 5) und unterstützt den Umgang mit großen Datenmengen. Ihre ausführliche Syntax liest sich fast wie Klartext. Ab Anfang der sechziger Jahre wurde COBOL zunehmend in der kaufmännisch/kommerziellen Datenverarbeitung verwendet und ist dort heute die meistbenutzte Sprache. Sie ist auch auf Mikrorechnern implementiert.

BASIC

Die gegenwärtig auf Klein- und Mikrorechnern am weitesten verbreitete Interpretersprache ist BASIC (Beginners All-Purpose Symbolic Instruction Code), von der es auch Compilerversionen gibt. BASIC ist eine sehr einfache Sprache und wurde 1964 von John Kemeny und Thomas Kurtz als Lehrsprache für Anfänger auf Kleinrechnern entwickelt. Sie ist wegen des beschränkten Befehlsumfangs leicht erlernbar und eignet sich sowohl für kaufmännische Verwaltungsaufgaben als auch für technisch-wissenschaftliche Anwendungen. Zur Behebung seiner ursprünglichen Beschränkungen ist BASIC wie FORTRAN auch ständig weiterentwickelt worden. Zusammen mit den preiswerten Homecomputern verbreitete sich BASIC in einer Fülle von Dialekten, die jedoch im Gegensatz zu FORTRAN stark vom verwendeten Rechner abhängen.

C

Modern und in zunehmender Verbreitung begriffen ist die Programmiersprache C, die 1972 im Hinblick auf das Betriebssystem UNIX entwickelt und 1973 erstmals implementiert worden ist. Ken Thompson entwickelte unter Anlehnung an die Programmiersprache BCPL (1967 von Richards zum Compilerbau entwickelt) und mit der Systementwicklern eigenen Vorliebe für kurze, knappe Bezeichner zunächst die Sprache $B$. Da B kein Typenkonzept hatte, erwies sie sich als zu wenig mächtig. Dennis Ritchie modifizierte deshalb diese Programmiersprache, und als Weiterentwicklung entstand C. Heute sind UNIX selbst (zu ca. 90%) und viele seiner Dienstprogramme in C geschrieben. Stärke und Schwäche zugleich ist die Maschinennähe, die dem Programmierer sehr viele Freiheiten läßt und C in die Nähe von Assemblersprachen rückt. Dank standardisierter Bibliotheken sind C-Programme gut portierbar. Die Sprache liegt in zwei Standards vor: dem von den meisten C-Compilern unterstützten Pseudo-Standard, wie er ursprünglich von Kernighan und Ritchie in der ersten Ausgabe von The C Programming Language 1977 veröffentlicht wurde, und dem 1989 veröffentlichten ANSI-Standard X3.159-1989. Die Syntax ist sehr kompakt und für den Ungeübten nicht leicht nachvollziehbar (siehe z.B. der Obfuscated C Contest). C übernahm von Pascal die definierbaren Datentypen, die lokalen Variablen und alle Möglichkeiten zur strukturierten Programmierung. Unterprogramme können jedoch nicht geschachtelt werden (!). Die Möglichkeit, Variablen bestimmten CPU-Registern fest zuweisen zu können und die maschinennahen Operatoren, wie etwa zum Inkrementieren und Dekrementieren von Variablen machen C-Programme vergleichsweise schnell in der Ausführung. C wurde im Hinblick auf objektorientierte Programmierung zu C++ weiterentwickelt.

LISP

Nahezu gleichzeitig mit FORTRAN entwickelte John Mc Carthy am MIT (Massachusetts Institute of Technology) die Grundidee von LISP (LISt Processer). 1959 gelang es, LISP auf einem Rechner zu implementieren. LISP ist eine Sprache zur Lösung nichtnumerischer Probleme. Sie eignet sich hervorragend zum Be- und Verarbeiten von Zeichenketten. Gleichzeitig ist LISP eine offene Sprache, d.h. ihr Sprachumfang läßt sich ständig erweitern, was die Entwicklung zahlreicher unterschiedlicher Dialekte förderte und Standardisierungsversuche lange Zeit scheitern ließ. Erst 1992 gelang die Fertigstellung des ANSI-Standards Common LISP. LISP gehört zu den Sprachen der Künstlichen Intelligenz (KI), als deren typische Eigenschaft gilt, einzelne Objekte weitgehend abstrakt beschreiben zu können. Dadurch lassen sich diese in Struktur und Bezeichnung den 'realen' Objekten aus der Aufgabe und dem Einsatzgebiet der Software nachempfinden. LISP ist eine listenverarbeitende Sprache. Listen, zu denen auch die LISP-Programme selbst gehören, stellen eine Aufzählung von Atomen (Zahlen oder Zeichenfolgen) dar, mit der beliebige komplexe Datenstrukturen erzeugt werden können. Die Programme bestehen nicht, wie bei prozeduralen Sprachen, aus einer Aneinanderreihung von Befehlen, sondern aus Funktionen, die auf Argumente (Atome, Funktionsausdrücke oder andere Listen) angewendet werden. Diese Funktionsapplikation wertet der LISP-Interpreter aus und gibt das Ergebnis zurück. Dieses Sprachkonzept eignet sich insbesondere für rekursive Programmierung. Wegen seiner Andersartigkeit und dem häufigen Einsatz in der KI genießt LISP ein hohes Ansehen.

Abbildung 4.2: Der Stammbaum der Programmiersprachen [c't 1/89]
\begin{figure}\begin{center}
\unitlength=1mm
\linethickness{0.75pt}\begin{pictur...
...00}}
\put(72.00,45.00){\line(0,-1){15.00}}
\end{picture}\end{center}\end{figure}

Betrachtet man den Stammbaum der Programmiersprachen, Abb. 4.2, so kann man erkennen, daß sich mehrere Entwicklungslinien herausgebildet haben, innerhalb derer eine Gruppierung in eine erste (bis 1970) und eine zweite Sprachgeneration (nach 1970) vorgenommen werden kann. Während die erste Generation, wie FORTRAN66 und BASIC, noch durch zeilenorientierte Anweisungen, einfache Datentypen (und Felder), arithmetische und logische Operationen gekennzeichnet sind, verfügt die zweite Sprachgeneration u.a. über strukturierte Datentypen und entsprechende Operatoren sowie Kontrollanweisungen, die den Prinzipien der strukturierten Programmierung entsprechen. Dies trifft insbesondere auf Pascal und seine Abkömmlinge zu. Typisch für die Entwicklung nach 1975 sind die Bemühungen, die Sprachen der ersten Generation auf das Niveau der zweiten Sprachgeneration zu bringen, z.B. mit der Entwicklung von FORTRAN77 bis zum neuen Standard Fortran95.

Wir werden uns im folgenden der Sprache FORTRAN widmen, da sie im Ingenieurbereich (Aerodynamik, Thermofluiddynamik, Mechanik, usw.) die am weitesten verbreitete Sprache ist. Für viele (nicht nur Ingenieurs-) Probleme liegen teils umfangreiche FORTRAN-Programmsysteme und Unterprogrammsammlungen zur Lösung vor, die nicht etwa eingemottet sind, sondern die benutzt und gepflegt werden. FORTRAN ist eine lebendige Sprache, die sich ständig weiterentwickelt; sie bietet zur Zeit die beste Unterstützung zur effizienten Ausnutzung spezieller Hardwareeigenschaften von Supercomputern (z.B. Vektor- und Pipeline-Rechnern).


next up previous contents
Nächste Seite: FORTRAN Aufwärts: Allgemeines zu Programmiersprachen Vorherige Seite: Sprachniveaus   Inhalt
Lars Tornow 2003-03-31