Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Höhere Programmiersprache

Eine höhere Programmiersprache ist eine Programmiersprache zur Abfassung eines Computerprogramms, die in Abstraktion und Komplexität von der Ebene der …

Inhalt5 Abschnitte
  1. 1. Begriff und Funktionsweise
  2. 2. Entwicklung der Abstraktion
  3. 3. Unterschiede zur Assemblersprache
  4. 4. Generationen und Anwendungsbereiche
  5. 5. Typische Beispiele und Ausführung

Begriff und Funktionsweise

Eine höhere Programmiersprache ist eine Sprache zum Schreiben von Computerprogrammen, die deutlich von der Ebene der Maschinensprache abstrahiert. Die Grenze zwischen einfachen und höheren Programmiersprachen ist nicht eindeutig festgelegt. Als Mindestmerkmal gilt: Ein Mikroprozessor kann ihre Befehle nicht unmittelbar verstehen und ausführen. Sie müssen durch einen Compiler oder einen Interpreter in ausführbare Maschinenbefehle umgesetzt werden. Häufig liegen weitere Schichten wie ein Betriebssystem zwischen Programm und Prozessor.

„Höher“ bezeichnet nicht den Schwierigkeitsgrad des Programmierens, sondern die Abstraktionsebene. Komplexe logische Zusammenhänge lassen sich dadurch kürzer und für Menschen verständlicher ausdrücken. Automatisierte Übersetzungsprozesse führen diese abstrakten Anweisungen auf Maschinencode zurück. Das erhöht die Lesbarkeit des Quellcodes und verringert die Zahl der Arbeitsschritte, die Programmierende ausdrücklich angeben müssen.

Ein Compiler übersetzt ein Programm vor seiner Ausführung, direkt oder über weitere Zwischensprachen, in Maschinencode. Bei der Interpretation erfolgt keine vollständige Übersetzung im Voraus: Ein Interpreter führt die Anweisungen während der Laufzeit aus und bildet die Schnittstelle zwischen Programm und Rechner.

Entwicklung der Abstraktion

Die ersten Computer wurden unmittelbar mit Maschinencode programmiert. Dieser besteht aus Zahlenfolgen, die der Prozessor als einfache Befehle für Arithmetik, Speicherzugriffe und ähnliche Vorgänge deutet. Assemblersprachen stellten diese Maschinenbefehle erstmals in Textform dar, abstrahierten sie aber noch nicht wesentlich.

Als weltweit erste höhere Programmiersprache kann der von Konrad Zuse entwickelte Plankalkül gelten; praktisch angewandt wurde er jedoch nicht. Erst Ende der 1950er Jahre waren Computer leistungsfähig genug, damit Übersetzungsprogramme die Programmeingabe wesentlich erleichtern konnten. Zu den ersten praktisch bedeutsamen Vertretern gehörten Fortran, ALGOL und Lisp.

Diese Sprachen führten abstrakte Elemente wie bedingte Anweisungen und Schleifen ein. Eine bedingte Anweisung führt einen Schritt nur aus, wenn eine Voraussetzung erfüllt ist. Eine Schleife wiederholt Anweisungen, solange eine Bedingung gilt. Solche Konstrukte konnten mit weniger Aufwand programmiert werden und machten den Zweck des Codes besser erkennbar.

Später konnten Programme in Unterprogramme beziehungsweise Prozeduren und diese wiederum in Module gegliedert werden. Verschiedene Programmierer konnten dadurch einzelne Teile entwickeln. Variablen ließen sich für jede Prozedur neu definieren; Ein- und Ausgangsparameter übermittelten Daten zwischen Haupt- und Unterprogrammen.

Die Einordnung als „höhere“ Sprache ist relativ: Fortran abstrahiert stärker als Assembler, moderne Sprachen wiederum stärker als frühes Fortran. BASIC, C, C++, C#, VB.NET, Pascal und Java werden als Sprachen der dritten Generation eingeordnet.

Unterschiede zur Assemblersprache

Assemblersprache arbeitet nahe an der Hardware. Ihre Syntax ist stark komprimiert und platzsparend, und Programme sind nur auf einem bestimmten Prozessortyp lauffähig. Maschinennahe Befehle ermöglichen eine hohe Geschwindigkeit. Verwendet werden Datentypen des Prozessors wie Byte, Wort und Langwort, meist nur einfache Datentypen sowie Sprungbefehle und Makros. Die Möglichkeiten zur semantischen Analyse, also zur Prüfung der inhaltlichen Bedeutung und Zusammenhänge von Anweisungen, sind grundlegend.

Die Syntax höherer Programmiersprachen ist stärker an menschliche Gewohnheiten angepasst. Programme sind größtenteils prozessorunabhängig, können durch die Übersetzung in Maschinensprache aber Geschwindigkeit verlieren. Neben abstrakten, maschinenunabhängigen Datentypen wie Gleitkommazahlen stehen Datenstrukturen wie Felder und Records zur Verfügung. Kontrollstrukturen wie „if“ und „while“ ersetzen viele direkte Sprungbefehle. Außerdem ist eine weitgehende semantische Analyse möglich.

Das im Artikel gezeigte Beispiel verdeutlicht den Unterschied: Ein Assemblersprachenprogramm benötigt einzelne Befehle zum Laden, Vergleichen, Multiplizieren, Erhöhen, Springen und Ausgeben. Ein höheres Programm kann denselben Ablauf verständlicher mit einer Variablenzuweisung, einer FOR-Schleife von 1 bis 20, einer Multiplikation und einer Ausgabe formulieren.

Generationen und Anwendungsbereiche

Höhere Programmiersprachen werden auch Programmiersprachen der dritten Generation genannt, englisch „third generation languages“ oder kurz 3GL. In ihnen muss genau beschrieben werden, wie ein Problem gelöst werden soll. Die eigentliche Aufgabenstellung ist deshalb häufig nur schwer aus dem Quellcode zu erkennen.

Als Weiterentwicklung entstanden Programmiersprachen der vierten Generation. Sie sind normalerweise für bestimmte Problemlösungen optimiert. Ihr Code beschreibt stärker, was der Computer ausführen soll, statt jeden Lösungsweg genau vorzugeben.

Unter den heutigen höheren Programmiersprachen gibt es allgemein anwendbare Sprachen, sogenannte „general purpose languages“, und domänenspezifische Sprachen, kurz DSL. Allgemein anwendbare Sprachen bieten Abstraktionen für viele unterschiedliche Aufgaben. Domänenspezifische Sprachen stellen dagegen passende Abstraktionen für einen bestimmten Anwendungsfall bereit.

Ein Beispiel sind Sprachen zur Gleissteuerung von Zugstrecken. Sie können teilweise grafisch programmiert werden: Der „Programmtext“ besteht dann aus Grafiken, die etwa mit der Maus verändert werden. Ziel ist es, Programme ohne gewöhnlichen Textcode erstellen zu können und die Programmierung durch intuitive Bedienung einer größeren Anwendergruppe zugänglich zu machen.

Typische Beispiele und Ausführung

Höhere Programmiersprachen unterscheiden sich darin, wie ihr Quellcode ausgeführt wird:

  • Java wird in Bytecode kompiliert. Dieser wird durch die Java Virtual Machine interpretiert oder weiter in Maschinencode kompiliert.

  • C++ wird kompiliert.

  • JavaScript, Python, PHP und Ruby werden interpretiert. Dafür ist während der Laufzeit ein Interpreter erforderlich, der den Quellcode auswertet und ausführt.

  • C# wird in die Common Intermediate Language kompiliert und durch das Virtual Execution System interpretiert.

Diese Beispiele zeigen, dass die Grenze zwischen Kompilierung und Interpretation nicht immer als einfacher Gegensatz erscheint: Eine Sprache kann zunächst in einen Zwischencode übersetzt werden, der anschließend interpretiert oder nochmals in Maschinencode kompiliert wird.

Weiterlesen

Programmiersprache Bei deklarativen Programmiersprachen ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im Quelltext ausformuliert/beschrieben, sondern es … Abstraktion (Informatik) Die Abstraktion der Steuerung umfasst den Einsatz von Unterprogrammen und Konzepten wie Kontrollfluss. · Datenabstraktion erlaubt die sinnvolle Verarbeitung von … Komplexität (Informatik) Die Komplexität eines Problems ist zum Beispiel entscheidend für die Kryptographie und insbesondere für die asymmetrische Verschlüsselung: So verlässt sich … Maschinensprache Mit einem Assembler: Assemblersprachen formulieren die Prozessorbefehle des Maschinencodes als Mnemonics in einer einfachen Syntax. Dieser Quelltext wird … Mikroprozessor Ein Mikroprozessor (µP oder uP) ist ein als integrierter Schaltkreis (IC) ausgeführter Computerprozessor. Typische Beispiele von Mikroprozessoren sind die … Compiler Ein Übersetzer zur Übertragung von Assembler-Quellprogrammen in Maschinensprache wird als Assembler oder Assemblierer bezeichnet. Geschichte. Bearbeiten. Betriebssystem Betriebssysteme bestehen in der Regel aus einem Kernel (deutsch: Kern), der die Hardware des Computers verwaltet, sowie speziellen Programmen, die beim Start … Informatik Als einfache Rechengeräte leisteten Abakus und später der Rechenschieber unschätzbare Dienste. 1641 konstruierte Blaise Pascal eine mechanische … Assemblersprache Eine Assemblersprache, kurz auch Assembler genannt (von englisch to assemble ‚zusammenfügen'), ist eine Programmiersprache, die auf den Befehlsvorrat eines … Konrad Zuse Konrad Ernst Otto Zuse (* 22. Juni 1910 in Deutsch-Wilmersdorf; † 18. Dezember 1995 in Hünfeld) war ein deutscher Bauingenieur, Erfinder und Unternehmer … Computer Ein Computer (englisch; deutsche Aussprache [kɔmˈpjuːtɐ]) oder Rechner ist ein Gerät, das mittels programmierbarer Rechenvorschriften Daten verarbeitet. Bedingte Anweisung und Verzweigung Eine bedingte Anweisung ist eine Kontrollstruktur in der Programmierung. Ein Programmabschnitt wird dabei nur unter einer bestimmten Bedingung ausgeführt.