Read this article in English

Terminologie: Programmiersprache

Wenn man einen Computer oder ein beliebiges Computer-gesteuertes System etwas tun lassen möchte, muss man dazu ein entsprechendes Programm in einer Programmiersprache schreiben. Aber was genau ist eigentlich eine Programmiersprache?

Formale Definition

Technisch gesehen ist eine Programmiersprache eine formelle, strukturierte Sprache, mit der Datenstrukturen und Algorithmen definiert werden können, die der Computer nutzen und ausführen kann. Diese Strukturen und Algorithmen werden dabei durch verschiedene Kommandos definiert, welche wiederum den über die Syntax der jeweiligen Programmiersprache definierten Mustern und Strukturen folgen.

Kommunikation

Grundsätzlich betrachtet erfüllt eine Programmiersprache den gleichen Zweck wie eine natürliche, gesprochene Sprache wie Deutsch, Englisch, Französisch usw. - sie dient der Kommunikation und der Übertragung von Informationen zwischen verschiedenen Kommunikationspartnern. Bei natürlichen Sprachen sind die Kommunikationspartner normalerweise zwei oder mehr menschliche Personen. Bei den Programmiersprachen ist dagegen (mindestens) einer der Kommunikationspartner ein Computer.

Während natürliche Sprachen mitunter schwierig zu erlernen sind, lassen sich Programmiersprachen im Vergleich dazu wesentlich einfacher erlernen, sowohl hinsichtlich der Syntax als auch hinsichtlich der Grammatik. Diese vergleichsweise einfache Sprachstruktur beschränkt allerdings nicht die Nützlichkeit oder Flexibilität der Sprache.

Verschiedene Formen, verschiedener Umfang

Heutzutage gibt es eine Vielzahl verschiedener Progammiersprachen. Diese lassen sich je nach Betrachtungsweise in verschiedene Gruppen einteilen, etwa nach dem jeweiligen Abstraktionslevel, der rein historischen Gruppe, der Grundstruktur und der genutzten Programmier-Paradigmen, oder schlicht nach der technischen Familie. Mit etwas Detektivarbeit könnte man vermutlich einen vollständigen Stammbaum der verschiedenen Programmiersprachen erstellen, der bis zu den historischen Wurzeln zurückreicht, die durch die Pionierarbeit von Ada Lovelace geschaffen wurden, die ihrerseits von Charles Babbages Arbeit an der sogenannten "Analytical Engine" inspiriert wurde.

Einige Programmiersprachen nutzen Kommando-Worte, die aus natürlichen Sprachen übernommen wurden, in den meisten Fällen aus dem Englischen. Andere, einfachere Programmiersprachen, die sich näher der Ebene der eigentlichen Maschine bewegen, verwenden dagegen nur technische Kürzel oder schlicht nur Nummern.

Für einen kurzen Überblick über die verschiedenen Arten von Programmiersprachen habe ich hier einen entsprechenden Artikel geschrieben.

Natürliche und künstliche Sprachen

Bei natürlichen Sprachen können Informationen jeglicher Art von einer Person zur anderen mit Hilfe der Sprache übermittelt werden, ganz gleich ob die Informationen nützlich sind oder nicht. Im Regelfall ist diese Art der Kommunikation eine zwei-Wege Verbindung, bei der beide Personen sowohl Sender als auch Empfänger von Informationen sein können.

Bei den künstlichen Programmiersprachen ist dagegen der Computer größtenteils in der Rolle eines passiven Empfängers. Zwar kann der Computer über das in der Programmiersprache geschriebene Programm verschiedene Möglichkeiten nutzen, um Informationen an den Nutzer zurückzuleiten oder mit ihm interaktiv zu kommunizieren, aber dies geschieht erst zur Laufzeit des Programmes. Während des Programmiervorgangs ist der Computer nur ein passiver Empfänger.

In den meisten Programmiersprachen ist ein Programm im wesentlichen eine lange, strukturierte Liste von Anweisungen, die der Computer ausführen soll. Selbst bei den interaktiveren logischen und funktionalen Programmiersprachen muss der Computer einzelne Schritte ausführen bzw. Funktionswerte berechnen und Anweisungen in Form von "Seiteneffekten", die mit den Funktionen gekoppelt sind, ausführen.

Übersetzung

Mit Ausnahme des niedrigsten Levels von Programmiersprachen - dem Maschinencode - können Computer die Anweisungen einer Programmiersprache nicht direkt verstehen. Sie benötigen daher ein Hilfsmittel zur Übersetzung der Anweisungen.

Diese Übersetzung wird von Interpreter- oder Compiler-Programmen durchgeführt. Beide Arten von Programmen übersetzen die in der Syntax der jeweiligen Programmiersprache geschriebenen Kommandos in Maschinencode, den der Computer dann ausführen kann. 

Interpreter-Programme lesen dabei die Kommandos im Quellcode der Programme Zeile für Zeile. Nach dem Lesen einer Zeile wird die entsprechende Anweisung in Maschinencode übersetzt, der gleich danach vom Computer ausgeführt wird.

Compiler-Programme arbeiten im Vergleich dazu etwas anders. Auch sie lesen den Quellcode der Programme zeilenweise ein und übersetzen ihn. Der Maschinencode wird jedoch nicht direkt ausgeführt, sondern in einer separaten Datei gespeichert, dem sogenannten "Executable" (da die Datei am Ende ein direkt ausführbares Programm enthält). Diese Sammlung von Maschinencode-Anweisungen wird erst ausgeführt, wenn der Compiler alle Anweisungen aus dem Quellcode übersetzt hat und das fertige Gesamtprogramm gestartet wird. Dabei sorgt der Compiler oft noch für eine Optimierung der übersetzten Anweisungen nach verschiedenen, einstellbaren Kriterien.

Ein von einem Compiler übersetztes Programm muss für eine erneute Ausführung nicht nochmal übersetzt werden, zumindest nicht solange es keine Veränderungen im Quellcode gibt. Es reicht, die erstellte ausführbare Datei zu starten. Dieses erneute Starten nach der bereits erfolgten Übersetzung ist daher schneller als der erste Start mit Übersetzung.

Schlusswort

Ich hoffe, meine obigen Ausführung haben Dir geholfen zu verstehen, was eine Programmiersprache ist - und was sie nicht ist.

Verschiedene Beispiele für die Nutzung von Programmiersprachen findest Du in meinen Tutorials auf dieser Website.