Pro|gram|mier|spra|che 〈f. 19〉 formalisierbare Sprache mit eindeutigen Zeichen zum Programmieren von EDV-Anlagen
* * *
Pro|gram|mier|spra|che, die (EDV):
System von Wörtern u. Symbolen, die zur Formulierung von ↑ Programmen (4) für die elektronische Datenverarbeitung verwendet werden.
* * *
Programmiersprache,
eine formale Sprache, in der Anweisungen an eine Computer ausgedrückt werden können. Ein Satz von solchen Anweisungen, der zur Erledigung von einer oder mehreren komplexen Aufgaben dient, heißt Programm. Oft gibt man dabei den Namen der verwendeten Sprache mit an, spricht also von einem Java-Programm, einem C-Programm usw. Das Verfassen eines Programms nennt man Programmierung.
Wie eine natürliche Sprache besitzt auch eine Programmiersprache einen Wortschatz aus Schlüsselwörtern und Operatoren und eine Syntax, also grammatische Regeln, nach denen diese zu korrekten Anweisungen zusammengestellt werden. Anders aber als eine natürliche Sprache muss eine Programmiersprache eindeutig sein, d. h., jeder Begriff und jedes strukturelle Element darf im Prinzip nur eine einzige Bedeutung haben, allenfalls in unterschiedlichen Kontexten kann ein Schlüsselwort unterschiedlich (aber auch dann jeweils eindeutig) interpretiert werden. Beispielsweise bedeutet in vielen Programmiersprachen ein Minuszeichen zwischen zwei Zahlen, dass die zweite von der ersten subtrahiert werden soll. Die im Deutschen auch mögliche Deutung als »bis« ist ausgeschlossen und muss auf andere Weise ausgedrückt werden. Steht das Minuszeichen dagegen direkt vor einer Zahl, gibt es in bestimmten Sprachen ein negatives Vorzeichen an, wobei genau festgelegt ist, in welchem Kontext das Zeichen als »Minus« und wann es als Vorzeichen zu interpretieren ist.
Auch wenn heute eine große Zahl (mehrere tausend) von Programmiersprachen existiert, die oft in vielen - je nach Hersteller, Betriebssystem oder Anwendergruppe verschiedenen - Dialekten vorliegen, so gibt es dennoch einige typische Merkmale, die allen oder beinahe allen Sprachen gemeinsam sind. Dazu zählen die Möglichkeit, Variablen zu definieren, Programmstrukturen wie Bedingungen (mit Schlüsselwörtern wie »if...then...else«) oder Schleifen (»do...while«, »do loop«) und schließlich das Einfügen von Kommentaren - natürlichsprachlichen Einschüben, die vom Rechner ignoriert werden, aber dem Programmierer und v. a. Dritten das Nachvollziehen des Codes erheblich erleichtern. Weiterhin kann man Teilaufgaben aus einem Programm in separate Codeblöcke ausgliedern (sog. Unterprogramme; Funktionen und Prozeduren), die im Hauptprogramm wie eigenständige Befehle aufgerufen werden. Einerseits kann auf diese oder ähnliche Weise der Umfang einer Programmiersprache erweitert werden, andererseits können früher erstellte oder kommerziell erhältliche Module zur Erledigung einer Programmieraufgabe herangezogen werden (Bibliothek). Wenn eine Programmiersprache ihre Variablen und Funktionen unterschiedlichen Datentypen zuordnet, nennt man sie eine typisierte Programmiersprache.
Man kann grundsätzlich drei Arten von Programmiersprachen unterscheiden:
- Maschinensprachen oder native Sprachen, deren Programme von der Zentraleinheit des Rechners (Prozessor) unmittelbar umgesetzt, aber von einem Menschen nur mit viel Übung »gelesen« werden können. Grundsätzlich gehört zu jedem Prozessortyp eine eigene angepasste Maschinensprache.
- höhere Sprachen oder Hochsprachen, deren Programme unabhängig von Prozessoreigenschaften formuliert und vom Menschen wesentlich leichter »durchschaut« werden können. Eine in einer Hochsprache formulierte (abgeschlossene) Befehlsfolge nennt man Quellcode (Source Code, Quelltext). Programme in höheren Sprachen werden vor der Ausführung in einen Maschinencode gleicher Bedeutung übersetzt. Dies geschieht entweder in Anschluss an die Programmierung mithilfe eines Compilers, der eine sog. lauffähige Programmdatei erstellt, oder (seltener) durch einen Interpreter, der bei jedem Programmaufruf den Quellcode aufs Neue übersetzt.
- Makrosprachen dienen zur Automatisierung von Abläufen innerhalb eines (größeren) Anwendungsprogramms, sie enthalten außer strukturellen Elementen im Wesentlichen den Befehlsumfang der jeweiligen Anwendung und lassen sich i. d. R. nicht unabhängig von ihr starten.
Die Abgrenzung zwischen den drei genannten Gruppen ist nicht ganz scharf, so gibt es maschinennahe Hochsprachen wie C++, die einen verhältnismäßig direkten Zugriff auf Maschinenressourcen gestatten, oder Makrosprachen wie die Microsoft-Office-Automatisierungssprache Visual Basic for Applications (VBA), deren Funktionsumfang mittlerweile die reine Automatisierung von Office-Vorgängen weit übersteigt. Eine Zwischenstellung zwischen Makro- und Hochsprache nehmen auch die Script-Sprachen ein.
Die Geschichte der heutigen Programmiersprachen begann in den 1950er-Jahren, als die ersten (kommerziellen) elektronischen Rechner sich etablierten (es gab natürlich Vorläufer, die für frühere programmierbare Rechenmaschinen entwickelt wurden). Zunächst wurde fast nur maschinennah programmiert (Assembler, Assembler-nahe Sprachen). Mitte bis Ende der 1950er-Jahre entstanden die ersten Hochsprachen Fortran, Cobol, Algol und Basic, bis Mitte der 1960er-Jahre kamen PL/1, Simula und Pascal hinzu. Diese Sprachen wurden z. T. für spezielle Anwendungsgebiete konzipiert, so sollten Basic und Pascal v. a. zum Erlernen von Programmiertechniken dienen, Fortran war für wissenschaftliches Rechnen, Cobol für kaufmännische Anwendungen vorgesehen usw. Eine Sonderstellung nehmen die für Aufgaben im Bereich der künstlichen Intelligenz erdachten Sprachen ein (Lisp, Prolog oder Smalltalk). Diese lehnen sich oft stark an Formalismen aus der Logik und Sprachtheorie an und machen häufig Gebrauch von rekursiven Definitionen (Rekursion). In den 1970er-Jahren wurde die Sprache C publiziert, die eine Weiterentwicklung u. a. von Pascal und PL/1 ist. Diese Sprache bzw. ihre Weiterentwicklung C++ ist heute eine der meistbenutzten Programmiersprachen, sowohl bei wissenschaftlichen Anwendungen als auch bei kommerzieller Software; auch das Betriebssystem Windows wurde zu großen Teilen in C/C++ geschrieben. Durch das Aufkommen der objektorientierten Programmierung in den 1980er-Jahren ist eine neue Klasse von rein objektorientierten (Smalltalk, Eifel, Java) sowie sog. Hybridsprachen - Visual Basic, C++, Object Pascal (Delphi) - entstanden.
Da Programmiersprachen grundsätzlich offen für Erweiterungen sind, gab es immer wieder Probleme mit unterschiedlichen »Dialekten«, also Versionen der gleichen Sprache mit unterschiedlichem Wortschatz oder inkompatiblen Steuerstrukturen. Darum gibt es für häufig eingesetzte Sprachen verbindliche Standards, die von Normungsbehörden überwacht und gegebenenfalls fortgeschrieben werden. Beispielsweise war lange ANSI-C (ANSI) der gemeinsame Kern aller C-Dialekte. Bei Fortran folgten aufeinander die von der ASA (American Standards Association, Vorgängerin des ANSI), dem ANSI und der ISO überwachten Standards Fortran IV, Fortran 77 und Fortran 95.
* * *
Universal-Lexikon. 2012.