Eine Programmiersprache ist eine künstliche, formale Sprache zur Verständigung zwischen Mensch und Computer, mit der sich Problemlösungen in einer für Rechner verarbeitbaren Form beschreiben lassen.
Menschen formulieren Aufgaben und Lösungswege normalerweise in natürlicher Sprache, Computer können jedoch nur eindeutig definierte Anweisungen ausführen. Eine Programmiersprache überbrückt diese Lücke: Sie stellt feste Wörter, Symbole und Regeln bereit, mit denen sich Rechenvorschriften, Datenstrukturen und Abläufe so formulieren lassen, dass ein Computer sie zuverlässig interpretieren kann.
Jede Programmiersprache besteht aus einer Syntax, also den formalen Regeln dafür, welche Sprachelemente erlaubt sind und wie sie kombiniert werden dürfen, und einer Semantik, die festlegt, was diese Elemente inhaltlich bedeuten. In höheren Programmiersprachen formulieren Programmierende damit sogenannten Quelltext, der zunächst von Menschen lesbar ist. Damit ein Computer diesen Quelltext tatsächlich ausführen kann, muss er zuvor in Maschinensprache übersetzt werden, etwa durch einen Compiler. Programmiersprachen unterscheiden sich dabei grundlegend in ihrem Grundkonzept: Prozedurale Sprachen beschreiben einen Ablauf von Schritten, objektorientierte Sprachen fassen Daten und zugehörige Operationen zu Objekten zusammen, und deklarative Sprachen beschreiben vor allem das gewünschte Ergebnis, nicht den genauen Lösungsweg.
Um eine Liste von Zahlen der Größe nach zu sortieren, formuliert eine Entwicklerin die entsprechende Sortierlogik in einer Programmiersprache als Folge von Anweisungen. Erst nach der Übersetzung in Maschinensprache kann ein Computer diese Anweisungen tatsächlich ausführen und die Zahlen sortieren.
Programmiersprachen werden eingesetzt, um jede Art von Software zu erstellen: von Betriebssystemen und Anwendungssoftware über Webseiten bis hin zu eingebetteter Firmware in Geräten und Fahrzeugen. Ohne eine Programmiersprache lässt sich keine Software formulieren, die ein Computer ausführen kann.
Es gibt keine einheitliche, abschließende Einteilung von Programmiersprachen, da viele Sprachen Merkmale mehrerer Konzepte gleichzeitig vereinen; die Zuordnung zu einer Kategorie erfolgt meist anhand des am stärksten ausgeprägten Grundprinzips. Häufig wird außerdem angenommen, eine „beste“ Programmiersprache gebe es grundsätzlich – tatsächlich eignen sich unterschiedliche Sprachen für unterschiedliche Aufgaben unterschiedlich gut, abhängig etwa von Ausführungsgeschwindigkeit, Lesbarkeit oder Einsatzgebiet.
Nicht zu verwechseln mit Compiler: Dieser übersetzt in einer Programmiersprache geschriebenen Quelltext in Maschinensprache, ist also ein Werkzeug zur Verarbeitung der Sprache, nicht die Sprache selbst. Ebenfalls abzugrenzen ist Algorithmus: Ein Algorithmus beschreibt eine abstrakte Schrittfolge zur Problemlösung unabhängig von einer konkreten Sprache; eine Programmiersprache ist das Werkzeug, mit dem dieser Algorithmus für einen Computer ausführbar formuliert wird.