Sobes.tech
Junior

Fonksiyonel programlama nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Fonksiyonel programlama, temel yapı taşları olarak fonksiyonların kullanıldığı bir programlama paradigmasıdır.

Ana kavramlar:

  • Saf fonksiyonlar: Aynı giriş verileriyle her zaman aynı sonucu döndüren ve yan etki yaratmayan fonksiyonlar (küresel değişkenleri değiştirme, konsola yazdırma vb.).
  • Veri değişmezliği: Veriler oluşturulduktan sonra değiştirilemez. Bunun yerine, yeni bir veri kopyası oluşturulur.
  • Birinci sınıf fonksiyonlar: Fonksiyonlar değişkenlere atanabilir, diğer fonksiyonlara argüman olarak geçebilir ve diğer fonksiyonların sonucu olarak dönebilir.
  • Yüksek dereceli fonksiyonlar: Diğer fonksiyonları argüman olarak alan veya döndüren fonksiyonlar.
  • İmperatif vs. Deklaratif: Fonksiyonel programlama daha çok deklaratif olup, ne yapılması gerektiğini tanımlar, nasıl yapılacağını değil.

Avantajlar:

  • Gelişmiş test edilebilirlik: Saf fonksiyonlar, giriş verilerine bağlı oldukları için test edilmesi kolaydır.
  • Paralel işlemenin basitleştirilmesi: Veri değişmezliği, eşzamanlı erişim ve yarış koşulları sorunlarını ortadan kaldırır.
  • Kodun öngörülebilirliği: Saf fonksiyonlar, programın davranışını daha öngörülebilir hale getirir.
  • Daha iyi okunabilirlik: Kod daha modüler ve anlaşılır olur.

JavaScript'te kullanım örneği:

// İmperatif yaklaşım
let numbers = [1, 2, 3, 4, 5];
let doubledNumbers = [];

for (let i = 0; i < numbers.length; i++) {
  doubledNumbers.push(numbers[i] * 2);
}

// Fonksiyonel yaklaşım (saf fonksiyon ve yüksek dereceli fonksiyon map kullanımıyla)
const double = (n) => n * 2; // Saf fonksiyon

const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(double); // map kullanımı - yüksek dereceli fonksiyon

Genellikle React, Redux ve RxJS gibi kütüphane/frameworklerle birlikte reaktif yaklaşımlarla kullanılır.