Höhere Programmiersprache

Eine höhere Programmiersprache (engl. high level language) ist eine Programmiersprache, die die Beschreibung eines Computerprogramms in einer abstrakten Sprache ermöglicht.

Die ersten Computer wurden mit Hilfe von Programmen in Maschinencode instruiert. Dieser besteht lediglich aus einer Folge von Zahlen, die vom Prozessor als Befehlsfolge interpretiert wurden. Diese Befehle bestanden (und bestehen heute immer noch) aus sehr primitiven Anweisung wie simple Arithmetik, Speicherzugriffe usw. Die erste Innovation war die Erfindung von Assemblersprachen. Sie boten keine Abstraktion außer der Darstellung der Befehle als Textform.

Ende der 1950er Jahre wurden Computer so leistungsfähig, dass Übersetzungsprogramme die Eingabe von Programmen wesentlich erleichtern konnten. Fortran, ALGOL und Lisp waren die ersten Vertreter, deren Namen noch an die neuen, komfortableren Möglichkeiten der Sprachen und Übersetzer erinnern:

Als weltweit erste höhere Programmiersprache gilt das Plankalkül von Konrad Zuse, welches keinen Einfluss auf die Entwicklung späterer Sprachen hatte.

Diese ersten höheren Sprachen hatten Abstraktionen wie bedingte Anweisungen ("wenn x wahr, dann führe y aus") und Schleifen ("solange x gilt, führe y aus"). Diese Konstrukte konnten nun mit weniger Aufwand programmiert werden und drückten in leslicher Form ihren Zweck aus.

Später folgten weitere Sprachen, die höhere Abstraktionen boten. Daher der Begriff höhere Programmiersprache. Ein Programm konnte in Unterprogramme eingeteilt werden, diese wiederum zusammengefasst zu Modulen. Weiter wurde von Werten und Programmteilen abstrahiert, so dass beide im Programm herumgereicht werden konnten usw. Prinzipiell kann gesagt werden, dass höhere Programmiersprachen mehr (Logik) mit weniger Text ausdrücken. Gleichzeitig wird die Lesbarkeit des Programmtextes erhöht.

Mittlerweile sind die Abstraktionen so weit vorangeschritten, dass der Begriff Hochsprache zu einem relativen geworden ist. So sind die ersten Sprachen wie Fortran höhere Sprachen als Assembler und modernere Sprachen höher als Fortran. Wenn man also von Hochsprache spricht, hat man immer eine Sprache(familie) als Bezugspunkt in Gedanken.

Diese sieht man auch an einer weiteren Tatsache. Die ersten höheren Sprachen wurden erst in Assemblersprachen bzw. Maschinencode übersetzt, um dann ausgeführt werden zu können. Einige modernere Sprachen werden heute erst in weniger höhere Sprachen übersetzt, aus denen selbst wiederum relativ effizienter Maschinencode gewonnen werden kann. Die Programme mit denen solche Übersetzungen ausgeführt werden heißen Compiler.

Daneben kann ein Programm in einer höheren Programmiersprache auch interpretiert werden. Dabei wird das Programm nicht vorab in Maschinencode übersetzt, sondern während seiner Laufzeit führt ein Interpreter die Anweisungen aus. Dieser bildet also eine Schicht zwischen Rechner und Programm, und ist heutzutage meist in einer anderen höheren Programmiersprache geschrieben.

(Die folgende Tabelle ist fragwürdig und auch teils falsch, besonders die Zeilen über Erlernbarkeit und Syntaxprüfung)

Höhere Programmiersprache Assemblersprache
Leicht erlern- und anwendbar Schwer erlernbar
Leichte Lesbarkeit kaum lesbar
Maschinenunabhängig nur auf einem bestimmten Prozessortyp lauffähig
Abstrakte, maschinenunabhängige Datentypen (Ganzzahl, Fließkommazahl) Datentypen des Prozessors (Byte, Wort, Langwort)
Kontrollstrukturen keine Kontrollstrukturen, manchmal Makros
Datenstrukturen (Feld, Record) Nur einfache Typen
Syntaxüberprüfung möglich Syntaxüberprüfung unmöglich
Typüberprüfung möglich Typüberprüfung unmöglich

Beispiel:

  A:=2;
   FOR I:=1 TO 20 LOOP
       A:=A*I;
   END LOOP;
   PRINT(A);
 

Beispiel:

      .START ST
   ST: MOV R1,#2
       MOV R2,#1
   M1: CMP R2,#20
       BGT M2
       MUL R1,R2
       INI R2
       JMP M1
   M2: JSR PRINT
       .END
 

Programme in höheren Programmiersprachen sind größtenteils maschinenunabhängig, können also auf sehr unterschiedlichen Computersystemen übersetzt und ausgeführt werden.

Heute existieren viele unterschiedliche höhere Programmiersprachen, manche sogar für Spezialanwendungen. Das eine Extrem bilden die Allrounder der Programmiersprachen (general purpose language), die auf keinen speziellen Anwendungsfall zugeschnitten sind und allgemeine Abstraktionen bieten. Auf der anderen Seite gibt es die sog. Domänenspezifischen Sprachen (Domain Specific Languages, DSL), zur Zeit intensives Forschungsgebiet, die Abstraktionen für eine bestimmten Anwendungsfall bieten. So gibt es Sprachen für die Gleissteuerung von Zugstrecken mit teilweise grafischer Programmierung, d.h. der "Programmtext" besteht dort aus Grafiken, die beispielsweise per Mauseingabe manipuliert werden können. Ziel einer solchen Darstellung ist es von der Textdarstellung zu abstrahieren und das Programmieren einer breiteren Anwenderbasis durch intuitiver Bedienung zugänglich zu machen.


!

See also: Höhere Programmiersprache, 1950, ALGOL, Compiler, Computer, Computerprogramm, Datenstrukturen, Datentyp, Fortran, Interpreter