İ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
numberstablosundannumberç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.