Sobes.tech
Junior

İmperatif ve deklaratif programlama arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

İşlevsel programlama, nasıl yapılacağını adım adım belirterek ne yapılacağını anlatır. Deklaratif programlama ise, ne yapılması gerektiğini açıklar, uygulama detaylarına girmez.

  • İşlevsel: Kontrol akışına ve programın durum değişikliklerine odaklanır. Bilgisayara, nasıl bir durumdan diğerine geçeceğini söylersiniz.
  • Deklaratif: Hesaplamaların mantığına odaklanır, kontrol akışını açıkça tanımlamaz. Bilgisayara, ne ulaşmak istediğinizi söylersiniz.

Örnekler:

  • Dizi içindeki çift sayıları bulmak için imperatif yaklaşım:

    // Imperatif yaklaşım
    func findEvenImperative(nums []int) []int {
    	var evenNums []int // Sonuç için değişken tanımla
    	for _, num := range nums { // Elemanlar üzerinde dön
    		if num%2 == 0 { // Koşulu kontrol et
    			evenNums = append(evenNums, num) // Sonuca ekle
    		}
    	}
    	return evenNums // Sonucu döndür
    }
    
  • Deklaratif yaklaşım (örneğin, SQL kullanımı, doğası gereği deklaratif):

    Golang büyük ölçüde imperatif olsa da, deklaratiflik fikri bir veritabanı sorgusunda gösterilir:

    -- Deklaratif yaklaşım (SQL)
    SELECT *
    FROM numbers
    WHERE number % 2 = 0;
    

    Burada, sadece numbers tablosundan number çift olan tüm satırları almak istediğimizi beyan ediyoruz, veritabanının bunu nasıl yapacağına dair detayları belirtmeden (örneğin, hangi arama veya filtre algoritmasını kullanacağı gibi).

Ana farklar tablo halinde özetlenebilir:

Özellik İşlevsel programlama Deklaratif programlama
Odak Nasıl (adımlar dizisi) Ne (istenen sonuç)
Kontrol akışı Programcı tarafından açıkça yönetilir Gizlenmiş veya soyutlanmış
Durum Aktif olarak değiştirilir Daha az açıkça değiştirilir veya değişmez
Örnekler C, Java, Python (çoğunlukla), Go SQL, HTML, CSS, React (JSX)

Go'da genellikle işlevsel olmayan tarz kullanılır, ancak deklaratif kavramlar belirli yaklaşımlarda ortaya çıkar, örneğin, veri işlemede kullanılan kütüphaneler veya yapılandırma tanımlarında.