Kurz: Ein Programmierparadigma ist ein grundlegender Denk- und Strukturierungsstil für Programme – etwa imperativ („tue dies, dann das“), objektorientiert („Objekte mit Daten und Verhalten“), funktional („Funktionen auf Werte anwenden“) oder logisch („beschreibe Fakten und Regeln“).
Genauer: Die meisten modernen Sprachen sind multiparadigmatisch: Python, Kotlin, Scala oder Rust mischen mehrere Stile. Das Paradigma bestimmt, wie man ein Problem zerlegt und welche Fehlerarten häufig sind – vergleichbar mit der Wahl zwischen Bauplan, Rezept und Regelwerk.
Im Detail
Imperativ und prozedural
Das Programm besteht aus Anweisungen, die den Zustand (Variablen, Speicher) Schritt für Schritt verändern. Wiederverwendung entsteht durch Prozeduren und Funktionen. Typische Vertreter: C, Pascal, Fortran, COBOL, Bash. Stärken: nah an der Hardware, leicht zu verstehen. Schwächen: veränderlicher Zustand führt in großen Programmen schnell zu schwer nachvollziehbaren Abhängigkeiten.
Objektorientiert
Daten und zugehörige Operationen werden zu Objekten gebündelt (Kapselung), die über Schnittstellen miteinander sprechen. Klassen, Vererbung und Polymorphie strukturieren große Systeme. Typisch: Java, C#, C++, Swift, Ruby. Ein Sonderfall ist die prototypbasierte OOP in JavaScript und Lua.
Funktional
Berechnung ist die Auswertung von Funktionen; Daten sind (meist) unveränderlich, Funktionen sind Werte und lassen sich übergeben und zusammensetzen. Das erleichtert Tests und Nebenläufigkeit. Typisch: Haskell (rein funktional), OCaml, F#, Elixir, Erlang, Scheme, Racket, Common Lisp. Funktionale Elemente (map, filter, Lambda) stecken heute in fast jeder Sprache.
Logisch und deklarativ
Man beschreibt was gilt, nicht wie es berechnet wird; die Laufzeit sucht die Lösung. Prolog arbeitet mit Fakten, Regeln und Backtracking; SQL beschreibt gewünschte Datenmengen; HTML und CSS beschreiben Struktur und Aussehen. Vorteil: sehr kurz für Suchprobleme und Abfragen.
Nebenläufig und Actor-Modell
Viele unabhängige Abläufe laufen gleichzeitig und tauschen Nachrichten aus, statt Speicher zu teilen. Erlang und Elixir bauen darauf fehlertolerante Systeme; Go nutzt Goroutinen und Kanäle, Ada Tasks mit Rendezvous.
Datengetrieben und Muster–Aktion
AWK verarbeitet Eingabezeilen mit Mustern und Aktionen; SQL und Tabellenkalkulationen sind ebenfalls datengetrieben.
Metaprogrammierung
Programme erzeugen oder verändern Programme: Makros in Lisp, Racket, Nim und Rust, Templates in C++, Reflektion in Java und Groovy.
Welches Paradigma wofür?
| Problem | Passender Stil |
|---|---|
| Kleine Skripte, Automatisierung | imperativ/prozedural |
| Große Anwendungen mit vielen Rollen | objektorientiert |
| Datenumwandlung, Pipelines, Parallelität | funktional |
| Regelsysteme, Suchprobleme | logisch/deklarativ |
| Hochverfügbare Dienste | Actor-Modell |
Siehe auch: Typsysteme, Programmiersprachen im Überblick, Sprachen im Vergleich