BG1: Imperativ vs. Deklarativ unterscheiden

Ich kann den Unterschied zwischen Anforderungen der imperativen Programmierung (definierte Folge von Handlungsanweisungen) und der deklarativen Programmierung (Beschreibung des Endzustandes) erklären.

Lernziele

# Lernziel Beantwortet in
1 Ich kann anhand eines Beispiels erklären, was imperative Programmierung bedeutet: eine Schritt-für-Schritt-Anweisung, die dem Computer sagt, wie etwas zu tun ist. Imperativ vs. Deklarativ
2 Ich kann anhand eines Beispiels erklären, was deklarative Programmierung bedeutet: eine Beschreibung des gewünschten Endzustands (was erreicht werden soll). Imperativ vs. Deklarativ
3 Ich kann gegebene Codebeispiele korrekt als imperativ oder deklarativ einordnen und meine Zuordnung begründen. Imperativ oder deklarativ?
4 Ich kann mindestens 2 deklarative Sprachen oder Technologien nennen und erklären, warum sie deklarativ sind. Deklarative Sprachen und Technologien

Imperativ vs. Deklarativ

Der Kernunterschied lässt sich in einem Satz zusammenfassen:

Paradigma Beschreibt Frage
Imperativ Wie etwas gemacht wird “Welche Schritte muss ich ausführen?”
Deklarativ Was das Ergebnis sein soll “Wie soll das Endergebnis aussehen?”

Alltagsbeispiel: Essen bestellen

Imperativ (Rezept, Schritt für Schritt):

Schneide die Zwiebeln. Erhitze das Öl in einem Topf. Brate die Zwiebeln 5 Minuten an. Giesse Brühe dazu. Lass alles 20 Minuten köcheln. Püriere die Suppe.

Deklarativ (Bestellung im Restaurant):

Ich hätte gerne eine Zwiebelsuppe.

Beim imperativen Ansatz beschreibt man jeden einzelnen Schritt. Beim deklarativen Ansatz beschreibt man das gewünschte Ergebnis und überlässt die Ausführung dem Koch (oder dem Computer).


Imperativ oder deklarativ?

Codebeispiel: Zahlen grösser als 5 filtern

Imperativ (Schritt für Schritt, explizite Schleifenmechanik):

var numbers = List.of(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
var result = new ArrayList<Integer>();
for (var x : numbers) {
    if (x > 5) {
        result.add(x);
    }
}

Hier wird exakt gesteuert: iterieren, prüfen, anfügen.

Deklarativ (Beschreibung des Ergebnisses):

var result = IntStream.range(0, 10)
    .filter(x -> x > 5)
    .boxed()
    .toList();

Die Stream-Pipeline beschreibt was gewünscht ist: alle x grösser als 5. Die Schleifenmechanik wird nicht explizit gesteuert.

Weitere Beispiele

Aufgabe Imperativ Deklarativ
Summe berechnen int total = 0; for (var x : list) total += x; list.stream().mapToInt(Integer::intValue).sum()
Sortieren Manueller Bubble Sort mit verschachtelten Schleifen list.stream().sorted().toList()
Maximum finden Schleife mit Vergleich und Zwischenvariable list.stream().max(Integer::compareTo)

Bei allen deklarativen Varianten sagt man dem Computer was man will, nicht wie er es tun soll.


Deklarative Sprachen und Technologien

Einige Sprachen und Technologien sind von Grund auf deklarativ:

Sprache/Technologie Warum deklarativ? Beispiel
SQL Man beschreibt, welche Daten man will, nicht wie die Datenbank sie sucht. SELECT name FROM users WHERE age > 18
HTML/CSS Man beschreibt, wie die Seite aussehen soll, nicht wie der Browser sie rendert. <h1>Titel</h1>
Regular Expressions Man beschreibt das Muster, nicht den Suchalgorithmus. \d{3}-\d{4}

Bei SQL zum Beispiel schreibt man SELECT name FROM users WHERE age > 18. Man sagt nicht: “Öffne die Tabelle, gehe Zeile für Zeile durch, prüfe das Alter, sammle die Namen.” Die Datenbank entscheidet selbst, wie sie die Abfrage am effizientesten ausführt.

Funktionale Programmierung ist eine Form der deklarativen Programmierung: Man beschreibt Transformationen auf Daten (mit map, filter, reduce), statt Schritt-für-Schritt-Anweisungen zu geben.


This site uses Just the Docs, a documentation theme for Jekyll.