Sobes.tech
Junior

Wat is het verschil tussen imperatieve en declaratieve programmeren?

sobes.tech AI

Antwoord van AI

Imperatief programmeren beschrijft hoe iets gedaan moet worden door een reeks stappen aan te geven. Declaratief programmeren beschrijft wat gedaan moet worden, zonder in te gaan op implementatiedetails.

  • Imperatief: Richt zich op de controleflow en de toestand van het programma. Je vertelt de computer, hoe van de ene naar de andere toestand te gaan.
  • Declaratief: Richt zich op de logica van de berekeningen, zonder expliciet de controleflow te beschrijven. Je vertelt de computer, wat je wilt bereiken.

Voorbeelden:

  • Imperatieve aanpak om even getallen in een slice te vinden:

    // Imperatieve aanpak
    func findEvenImperative(nums []int) []int {
    	var evenNums []int // Resultaatvariabele declareren
    	for _, num := range nums { // Over de elementen itereren
    		if num%2 == 0 { // Voorwaarde controleren
    			evenNums = append(evenNums, num) // Aan resultaat toevoegen
    		}
    	}
    	return evenNums // Resultaat teruggeven
    }
    
  • Declaratieve aanpak (bijvoorbeeld met SQL, dat van nature declaratief is):

    Hoewel Golang grotendeels imperatief is, wordt het idee van declarativiteit geïllustreerd in een databasequery:

    -- Declaratieve aanpak (SQL)
    SELECT *
    FROM numbers
    WHERE number % 2 = 0;
    

    Hier geven we simpelweg aan dat we alle rijen uit de tabel numbers willen krijgen waar number even is, zonder te beschrijven hoe de database dit precies moet doen (bijvoorbeeld, welk zoek- of filteralgoritme te gebruiken).

De belangrijkste verschillen kunnen worden samengevat in de tabel:

Eigenschap Imperatief programmeren Declaratief programmeren
Focus Hoe (volgorde van stappen) Wat (gewenst resultaat)
Controleflow Wordt expliciet beheerd door de programmeur Verborgen of geabstraheerd
Toestand Wordt actief gewijzigd Minder expliciet gewijzigd of onveranderlijk
Voorbeelden C, Java, Python (voornamelijk), Go SQL, HTML, CSS, React (JSX)

In Go wordt meestal de imperatieve stijl gebruikt, maar de concepten van declarativiteit komen voor in bepaalde benaderingen, bijvoorbeeld bij het gebruik van bibliotheken voor gegevensverwerking of bij het beschrijven van configuraties.