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 lesbarer 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.
| Höhere Programmiersprache | Assemblersprache |
|---|---|
| Leicht erlern- und anwendbar (Im Vergleich zu Assembler) | Schwer erlernbar |
| Syntax oft an menschliche Denkgewohnheiten angepasst | Platzsparende, stark komprimierte Syntax |
| (beide Sprachsorten sind für den Laien nicht lesbar, bei Hochsprachen kann er aber möglicherweise erahnen, was Teile des Codes aussagen.) | |
| Maschinenunabhängig (ob die Sprache in der Praxis tatsächlich funktioniert, kommt darauf an, ob ein systemkompatibler Compiler vorhanden ist) | nur auf einem bestimmten Prozessortyp lauffähig |
| Abstrakte, maschinenunabhängige Datentypen (Ganzzahl, Fließkommazahl) | Datentypen des Prozessors (Byte, Wort, Langwort) (Das ist nur beim Programmieren ein Nachteil. Wenn die Sprachen in Maschinencode übersetzt sind, gibt es nur noch die einfachen Datentypen.) |
| Oft zahlreiche und komplexe Kontrollstrukturen | Primitive Kontrollstrukturen, oft als Makros realisiert |
| Datenstrukturen (Feld, Record) | Nur einfache Typen |
| Weitgehende semantische Analyse möglich | Nur grundlegende semantische Analyse möglich |
| Beispiel: | Beispiel: |
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, von der Textdarstellung zu abstrahieren und das Programmieren einer breiteren Anwenderbasis durch intuitiver Bedienung zugänglich zu machen.
Aber Hochsprachen haben auch einen Nachteil, die Geschwindigkeit. Einerseits beim Übersetzen zum Maschinencode, aber auch die Laufzeit selber ist langsamer als bei Assembler-Programmen. Der Grund dafür ist, dass ein Compiler nicht so „schlau“ ist wie ein Mensch und mögliche Optimierung völlig ignoriert, da meist nur eine direkte Übersetzung von Hochsprachen-Befehl zu Assembler-Befehlen erfolgt. Es gibt zwar auch Compiler, die im erzeugten Assembler-Code nach Optimierungen suchen, allerdings werden diese kaum alle Möglichkeiten kennen. Selbst in der Kernel32.dll (Kernel von Windows, in C geschrieben) gibt es Funktionen die, wenn sie mit Assembler geschrieben worden wären, bis zu 10 mal so schnell wären (in manchen Fällen mag das aber auch an der Unkenntnis der Programmierer bezüglich des zu programmierenden Prozessors gelegen haben). Aus diesem Grund haben die Hochsprachen Assembler auch noch nicht verdrängt.
High-level programming language | Lenguaje de alto nivel | Langage de haut niveau | Linguaxe de alto nivel | שפה עילית | Linguaggio di programmazione ad alto livello | 高級言語 | 고급 프로그래밍 언어 | Høynivåspråk | Język wysokiego poziomu | Linguagem de alto nível | Высокоуровневый язык программирования
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Höhere Programmiersprache".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world