Sobes.tech
Junior

Was ist der Unterschied zwischen imperativer und deklarativer Programmierung?

sobes.tech KI

Antwort von AI

Die imperative Programmierung beschreibt wie man etwas macht, indem sie eine Abfolge von Schritten angibt. Die deklarative Programmierung beschreibt was getan werden soll, ohne sich in Implementierungsdetails zu vertiefen.

  • Imperativ: Konzentriert sich auf den Kontrollfluss und Zustandsänderungen des Programms. Du sagst dem Computer, wie er von einem Zustand in einen anderen wechseln soll.
  • Deklarativ: Konzentriert sich auf die Logik der Berechnungen, ohne den Kontrollfluss explizit zu beschreiben. Du sagst dem Computer, was du erreichen möchtest.

Beispiele:

  • Imperativer Ansatz zur Suche nach geraden Zahlen in einem Slice:

    // Imperativer Ansatz
    func findEvenImperative(nums []int) []int {
    	var evenNums []int // Ergebnisvariable deklarieren
    	for _, num := range nums { // Elemente durchgehen
    		if num%2 == 0 { // Bedingung prüfen
    			evenNums = append(evenNums, num) // Ergebnis erweitern
    		}
    	}
    	return evenNums // Ergebnis zurückgeben
    }
    
  • Deklarativer Ansatz (z.B. mit SQL, das von Natur aus deklarativ ist):

    Obwohl Golang selbst größtenteils imperativ ist, wird die Idee der Deklarativität bei einer Datenbankabfrage veranschaulicht:

    -- Deklarativer Ansatz (SQL)
    SELECT *
    FROM numbers
    WHERE number % 2 = 0;
    

    Hier deklarieren wir einfach, dass wir alle Zeilen aus der Tabelle numbers erhalten möchten, bei denen number gerade ist, ohne zu beschreiben, wie die Datenbank dies genau tun soll (z.B. welchen Such- oder Filteralgorithmus sie verwenden soll).

Die Hauptunterschiede lassen sich in der Tabelle zusammenfassen:

Eigenschaft Imperative Programmierung Deklarative Programmierung
Fokus Wie (Schrittefolge) Was (erwünschtes Ergebnis)
Kontrollfluss Wird explizit vom Programmierer gesteuert Versteckt oder abstrahiert
Zustand Wird aktiv verändert Weniger explizit verändert oder unveränderlich
Beispiele C, Java, Python (hauptsächlich), Go SQL, HTML, CSS, React (JSX)

In Go wird meist der imperative Stil verwendet, aber die Konzepte der Deklarativität tauchen in bestimmten Ansätzen auf, z.B. bei der Verwendung von Bibliotheken zur Datenverarbeitung oder bei der Beschreibung von Konfigurationen.