Sobes.tech
Junior

Mi a különbség az imperatív és deklaratív programozás között?

sobes.tech MI

Válasz az MI-től

Az imperatív programozás hogyan csináljon valamit, lépésről lépésre mutatja be a folyamatot. A deklaratív programozás mit csináljon, anélkül, hogy részletesen leírná a megvalósítást.

  • Imperatív: A vezérlési folyamatra és az állapotváltozásokra összpontosít. Azt mondod a számítógépnek, hogyan lépjen egyik állapotból a másikba.
  • Deklaratív: A számítás logikájára összpontosít, nem írja le explicit módon a vezérlési folyamatot. Azt mondod a számítógépnek, mit akarsz elérni.

Példák:

  • Imperatív megközelítés páros számok keresésére egy szeletben:

    // Imperatív megközelítés
    func findEvenImperative(nums []int) []int {
    	var evenNums []int // Eredmény változó deklarálása
    	for _, num := range nums { // Elemenként iterálás
    		if num%2 == 0 { // Feltétel ellenőrzése
    			evenNums = append(evenNums, num) // Hozzáadás az eredményhez
    		}
    	}
    	return evenNums // Eredmény visszaadása
    }
    
  • Deklaratív megközelítés (pl. SQL használatával, ami természetéből adódóan deklaratív):

    Bár a Golang nagyrészt imperatív, a deklarativitás fogalma egy adatbázis lekérdezés példáján keresztül illusztrálható:

    -- Deklaratív megközelítés (SQL)
    SELECT *
    FROM numbers
    WHERE number % 2 = 0;
    

    Itt egyszerűen kijelentjük, hogy minden olyan sorát szeretnénk lekérni a numbers táblának, ahol a number páros, anélkül, hogy leírnánk, pontosan hogyan kell ezt az adatbázisnak végrehajtania (pl. milyen keresési vagy szűrő algoritmust használjon).

A fő különbségek összefoglalhatók a következő táblázatban:

Tulajdonság Imperatív programozás Deklaratív programozás
Fókusz Hogyan (lépésről lépésre) Mit (kívánt eredmény)
Vezérlési folyamat Egyértelműen a programozó által irányított Rejtett vagy absztrahált
Állapot Aktívan változik Kevésbé vagy nem változik megnyilvánulóan
Példák C, Java, Python (főként), Go SQL, HTML, CSS, React (JSX)

A Go-ban általában az imperatív stílus használatos, de a deklarativitás fogalmai bizonyos megközelítésekben megjelennek, például adatfeldolgozó könyvtárak használatakor vagy konfigurációk leírásakor.