Überblick Programmierparadigmen

4 min 2 Abschnitte
Was du nach diesem Konzept kannst 2
  1. Du bist in der Lage, das Konzept eines Programmierparadigmas zu erklären ,

    indem die grundlegende Idee, der Zweck und die Notwendigkeit verschiedener Ansätze zur Strukturierung von Programmen und Code dargelegt werden.

  2. Du bist in der Lage, die grundlegenden Unterschiede zwischen den wichtigsten Programmierparadigmen zu vergleichen ,

    indem die Merkmale und Prinzipien von prozeduraler, objektorientierter, funktionaler und logischer Programmierung anhand konkreter Beispiele gegenübergestellt werden.

Was ist ein Programmierparadigma und warum gibt es verschiedene?

Die Denkweise hinter dem Code

Ein Programmierparadigma (Programming Paradigm) ist keine konkrete Programmiersprache und kein spezifisches Werkzeug. Es ist vielmehr ein fundamentaler Stil oder eine Denkweise, nach der Software entworfen wird. Es gibt dir den konzeptionellen Rahmen vor, wie du an ein Problem herangehst und deinen Code strukturierst. Wie die zugehörige Grafik veranschaulicht, lassen sich diese Ansätze grob in zwei Hauptkategorien unterteilen:

  • Imperativ (Wie?): Du beschreibst dem Computer Schritt für Schritt, wie er ein Problem lösen soll. Du nutzt dafür dir bereits bekannte Kontrollstrukturen wie Schleifen und Verzweigungen.
  • Deklarativ (Was?): Du beschreibst lediglich, was das gewünschte Ergebnis ist, und überlässt dem System den genauen Lösungsweg.

Warum ein einziges Paradigma nicht ausreicht

Es gibt nicht das eine perfekte Paradigma. Die Notwendigkeit für verschiedene Ansätze entsteht, weil Softwareprojekte völlig unterschiedliche Anforderungen haben. Wenn du eine grafische Benutzeroberfläche baust, ist es oft am intuitivsten, Buttons und Fenster als eigenständige "Objekte" zu betrachten. Musst du hingegen riesige Datenmengen mathematisch auswerten, ist ein Ansatz besser, der Datenströme fehlerfrei transformiert, ohne sich veränderliche Zustände merken zu müssen. Die Wahl des passenden Paradigmas bestimmt maßgeblich, wie gut dein Code wartbar, testbar und erweiterbar ist.

Überblick Programmierparadigmen — dec-software-engineering-programming-basics-programming-paradigms-overview-of-programming-paradigms_page1.svg

Wie unterscheiden sich die wichtigsten Programmierparadigmen?

Prozedurale Programmierung: Schritt-für-Schritt zum Ziel

Die prozedurale Programmierung ist ein imperativer Ansatz. Da du bereits weißt, was Funktionen und Variablen sind, ist dieses Paradigma leicht zu greifen: Ein Programm wird als eine Abfolge von Anweisungen betrachtet, die den Zustand (die Werte von Variablen) Schritt für Schritt verändern. Der Code wird zur besseren Übersicht in wiederverwendbare Prozeduren (Funktionen) unterteilt.

# Prozeduraler Ansatz: Zustand und Funktionen sind strikt getrennt
kontostand = 100  # Globaler Zustand

def einzahlen(betrag):
    global kontostand
    kontostand += betrag  # Zustand wird imperativ verändert

einzahlen(50)
print(f"Neuer Kontostand: {kontostand}")

Objektorientierte Programmierung (OOP): Daten und Verhalten bündeln

Die objektorientierte Programmierung (OOP) ist ebenfalls imperativ, strukturiert den Code aber völlig anders. Anstatt Funktionen und Variablen getrennt zu betrachten, bündelt die OOP sie in Objekten. Ein Objekt wird durch eine Klasse (einen Bauplan) definiert und besitzt Attribute (Daten/Zustand) sowie Methoden (Funktionen, die auf diesen Daten arbeiten). Dies unterstützt das dir bekannte Single-Responsibility-Prinzip, da jedes Objekt nur für seinen eigenen Zustand verantwortlich ist.

# OOP-Ansatz: Zustand und Verhalten sind im Objekt gebündelt
class Konto:
    def __init__(self, startguthaben):
        self.kontostand = startguthaben  # Interner Zustand des Objekts

    def einzahlen(self, betrag):
        self.kontostand += betrag  # Zustand wird über eine Methode verändert

mein_konto = Konto(100)
mein_konto.einzahlen(50)

Funktionale Programmierung: Berechnungen ohne Seiteneffekte

Die funktionale Programmierung ist ein deklarativer Ansatz. Hier stehen mathematische Funktionen im Mittelpunkt. Ein zentrales Konzept ist die Vermeidung von Seiteneffekten (Side Effects): Eine Funktion verändert niemals Variablen außerhalb ihres eigenen Gültigkeitsbereichs. Zudem sind Daten oft unveränderlich (immutable) – anstatt eine Variable zu überschreiben, wird eine neue Konstante mit dem neuen Wert erzeugt.

const preise = [10, 20, 30];

// Reine Funktion: Gleiche Eingabe = gleiche Ausgabe. Keine Seiteneffekte.
function steuerHinzufuegen(preis) {
    return preis * 1.19;
}

// Deklarativ: Wir sagen WAS passieren soll (map), nicht WIE (keine for-Schleife).
const bruttoPreise = preise.map(steuerHinzufuegen);

console.log(bruttoPreise); // [11.9, 23.8, 35.7]
console.log(preise);       // [10, 20, 30] (Das Original-Array bleibt völlig unverändert!)

Logische Programmierung: Fakten und Regeln definieren

Die logische Programmierung (ebenfalls deklarativ) geht noch einen Schritt weiter. Du schreibst keine Lösungswege mehr, sondern definierst lediglich Fakten (Grundwahrheiten) und Regeln (logische Verknüpfungen). Das System (z. B. in der Sprache Prolog) sucht dann selbstständig nach Antworten auf deine Anfragen (Queries).

% Fakten
elternteil(hans, ute).
maennlich(hans).

% Regel: Jemand ist Vater, WENN er ein Elternteil UND männlich ist.
vater(Vater, Kind) :- elternteil(Vater, Kind), maennlich(Vater).

% Query an das System: Wer ist der Vater von Ute?
% ?- vater(X, ute). -> Das System antwortet selbstständig: X = hans.

Multiparadigmatische Sprachen: Das Beste aus allen Welten

In der modernen Softwareentwicklung musst du dich selten streng für ein einziges Paradigma entscheiden. Die meisten heute relevanten Programmiersprachen – wie Python, JavaScript oder C# – sind multiparadigmatisch. Sie erlauben es dir, die Paradigmen fließend zu mischen.

Du kannst beispielsweise eine objektorientierte Architektur mit Klassen aufbauen, aber innerhalb der Methoden funktionale Konzepte nutzen, um Arrays ohne Seiteneffekte zu verarbeiten. So wählst du für jedes Teilproblem genau den Ansatz, der die eleganteste, sicherste und am besten testbare Lösung bietet.

Teste dein Wissen

In deinem Entwicklungsteam wird diskutiert, ein neues Programmierparadigma einzuführen. Ein Teammitglied fragt nach dem passenden Compiler. Welcher Denkfehler liegt hier vor?

Bereit für mehr?

Thema verstanden?

Teste dein Wissen interaktiv in unserer App. 7 Tage kostenlos, dann nur 5 € im Monat.