Eine Programmiersprache ist eine formale Sprache, die entwickelt wurde, um Computerprogramme zu schreiben, zu kodieren und zu erstellen. Sie dient als Mittel der Kommunikation zwischen einem Entwickler und einem Computer und ermöglicht es Entwicklern, Anweisungen zu geben, um bestimmte Aufgaben auszuführen und die gewünschten Ergebnisse zu erzielen.
Programmiersprachen bestehen aus einer Reihe von Regeln, Syntax und Semantik, die festlegen, wie Programme geschrieben werden sollen. Sie bieten eine strukturierte Methode, um komplexe Probleme in kleine, verständliche Anweisungen zu zerlegen, die von einem Computer ausgeführt werden können.
Insgesamt gibt es fünf Generationen von Programmiersprachen, die aufeinander aufbauen. Zu der ersten Generation gehören die Maschinensprachen, die binär oder hexadezimal kodiert und damit fast unleserlich für menschliche Nutzer:innen sind. Aber damit der Code funktioniert, sind sie unerlässlich. Die zweite Generation sind Assemblersprachen, die bereits etwas besser lesbar daher kommen, indem sie für die zugrundeliegenden binären Befehle kohärente Kürzel verwenden. Die dritte Generation wird dann für die heutige Entwicklung schon interessanter: hier handelt es sich um die imperativen beziehungsweise problemorientierten Sprachen. Man bezeichnet sie auch als höhere Programmiersprachen, die mehr oder weniger menschenlesbar sind, da sie sich an der englischen (gesprochenen) Sprache orientieren. C++ und Java sind unter anderem Vertreter dieser Generation. Die Sprachen müssen, bevor sie ausgeführt werden können, kompiliert, also in Maschinencode übersetzt, werden.
Die vierte Generation sind anwendungsbezogene, nichtprozedurale Sprachen, die ein höheres Abstraktionsniveau besitzen. Hier muss nicht mehr das „Wie“ in Form der genauen Schrittfolge des Algorithmus definiert werden, sondern nur noch das konkrete Ziel, ein situatives „Was“. Sprachen der fünften Generation schlussendlich erlauben das Beschreiben ganzer Sachverhalte und werden vor allem im Bereich der künstlichen Intelligenz eingesetzt. Sie sind wesentlich näher an komplexen gesprochenen Sprachen orientiert, bedürfen dementsprechend einer noch weitreichenderen Übersetzung, bevor sie Effekte zeitigen. Gleichsam zeichnen sie sich durch ein höheres Level an Ambiguitätstoleranz aus, d.h. ein Formulierungsfehler führt nicht mehr zwangsläufig zu einem Systemausfall.