In einer Programmiersprache werden alle aufeinanderfolgenden Arbeitsschritte beschrieben, die ein Computer ausführen soll. Hier geben wir einen Überblick über häufig verwendete Programmiersprachen.
Über Programmiersprachen kann der Mensch dem Computer Befehle geben. Eine Programmiersprache ist rigoros: einem Befehl entspricht genau ein Arbeitsschritt des Prozessors.
Für die Kommunikation untereinander benutzen Computer andere Sprachen, die Protokolle oder Kommunikationsprotokolle genannt werden und nach einem anderen Prinzip funktionieren.
Auch die Sprache, die der Prozessor verwendet, ist eine andere und heißt Maschinensprache. Es handelt sich dabei um die Daten, wie sie beim Prozessor ankommen. Sie bestehen aus einer Folge von 0 und 1, dem sogenannten Binärcode.
Maschinensprache ist für den Menschen nicht verständlich, daher wurden als Zwischensprachen dioe Programmiersprachen entwickelt. Der Code, der in diesen Sprache geschrieben ist, wird in Maschinensprache umgewandelt, damit er vom Prozessor genutzt werden kann.
Die ersten Rechner benutzten sogenannte Assemblersprachen Sie ähneln sehr der Maschinensprache, waren aber für Entwickler verständlich. Allerdings war eine solche Sprache der Maschinensprache so ähnlich, dass sie stark vom verwendeten Prozessortyp abhing (jeder Prozessortyp hatte seine eigene Maschinensprache). Daher konnte ein Programm, das auf einem Rechner entwickelt wurde, nicht auf den Rechner eines anderen Typs übertragen werden.
Programmiersprachen haben nicht nur den Vorteil, dass sie leichter verständlich sind als Maschinensprache, sondern sie ermöglichen auch eine hohe Übertragbarkeit, also einen Einsatz auf verschiedenartigen Rechnern.
Man unterscheidet die Programmiersprachen je nach der Bearbeitung von Befehlen in imperative oder funktionale Sprachen.
Eine imperative Sprache organisiert das Programm durch eine Serie von Befehlen, die in Blöcken gruppiert werden. Diese Blöcke enthalten Bedingungen, die erfüllt werden müssen, und Sprünge, die bei Erfüllung die Rückkehr zu einem anderen Instruktionsblock ermöglichen.
Vor allem ältere Programmiersprache sind so aufgebaut, auch wenn viele moderne Sprachen dieses Funktionsprinzip weiterhin nutzen. Imperative Sprachen sind jedoch wegen der sequenziellen Anordnung der Instruktionen nur wenig flexibel.
Bei einer funktionalen Sprache (machmal auch als Prozeduralsprache bezeichnet) wird das Programm durch Funktionen erzeugt, die einen neuen Zustand ausgeben und die Ergebnisse anderer Funktionen als Eingabe annehmen. Bezieht die Funktion sich auf
sich selbst, spricht man von Rekursivität.
Computersprachen können grob in zwei Kategorien unterteilt werden: in interpretierte Sprachen und kompilierte Sprachen.
Eine Programmiersprache ist per Definition anders als Maschinensprache. Daher muss sie übersetzt werden, damit der Prozessor sie verstehen kann. Ein in einer interpretierten Sprache geschriebenes Programm benötigt ein Hilfsprogramm (Interpreter), um nach und nach die Instruktionen des Programms zu übersetzen.
Ein Programm, das in einer kompilierten Sprache geschrieben ist, wird einmal vollständig übersetzt von einem zusätzlichen Programm, das Compiler genannt wird. Der Compiler erzeugt eine neue Datei, die dann autonom ist, also kein weiteres Programm zur Ausführung mehr benötigt. Mann nennt diese Datei dann ausführbar.
Ein solches Programm hat den Vorteil, dass es einmal kompiliert kein weiteres Programm benötigt, um ausgeführt zu werden. Da die Übersetzung schon ein für alle Mal erledigt ist, ist es außerdem bei der Ausführung schneller.
Es ist allerdings weniger flexibel als ein Programm in einer interpretierten Sprache, da jede Änderung der Quelldatei (Datei, die kompiliert wird und vom Menschen nicht gelesen werden kann) dazu führt, dass das Programm neu kompiliert werden muss, damit die Änderungen wirksam werden.
Andererseits hat ein kompiliertes Programm den Vorteil, dass die Sicherheit des Quellcodes gewährleistet ist. Eine interpretierte Sprache, die direkt verständlich (also lesbar) ist, ermöglicht es jedem, die Geheimnisse der Erstellung eines Programms zu erfahren und den Quellcode zu kopieren bzw. zu ändern. Daraus ergibt sich die Gefahr von Urheberrechtsverletzungen.
Außerdem ist bei manchen gesicherten Anwendungen die Vertraulichkeit des Codes wichtig, um Hackversuche abzuwehren (etwa bei Banküberweisungen, Online-Bezahlung und gesicherten Kommunikationen).
Manche Sprachen gehören in gewisser Weise beiden Kategorien an (zum Bespiel LISP, Java und Python). Programme, die in diesen Sprachen geschrieben sind, machen unter bestimmten Bedingungen eine Zwischenphase zur Kompilation in eine Sprache durch, die nicht lesbar ist (die Datei unterscheidet sich dann von der Quelldatei) und die nicht ausführbar ist (benötigt einen Interpreter).
Java-Applets, kleine Programme, die manchmal in Webseiten eingefügt sind, sind kompilierte Dateien, die man aber nur mit einem Internet-Browser ausführen kann (Dateien mit der Dateiendung CLASS).
Hier ist eine nicht vollständige Liste von existierenden Programmiersprachen:
Sprache | Hauptanwendungsgebiet | Kompiliert/Interpretiert |
---|---|---|
ADA | Echtzeit | Kompilierte Sprache |
BASIC | Elementare Programmierung zu Bildungszwecken | Interpretierte Sprache |
C | Systemprogrammierung | Kompilierte Sprache |
C++ | Objektorientierte Programmierung | Kompilierte Sprache |
Cobol | Verwaltung | Kompilierte Sprache |
Fortran | Berechnungen | Kompilierte Sprache |
Java | Internet-orientierte Programmierung | Zwischensprache |
MATLAB | Mathematische Berechnungen | Interpretierte Sprache |
Mathematica | Mathematische Berechnungen | Interpretierte Sprache |
LISP | Künstliche Intelligenz | Zwischensprache |
Pascal | Bildung | Kompilierte Sprache |
PHP | Entwicklung von dynamischen Webseiten | Interpretierte Sprache |
Prolog | Künstliche Intelligenz | Interpretierte Sprache |
Perl | Verarbeitung von Zeichenketten | Interpretierte Sprache |
Foto: © Pixabay.