Skip to main content
Programlama

Fonksiyonel Programlama Nedir? Rehber

Mart 15, 2026 3 dk okuma 12 views Raw
Fonksiyonel programlama kod ekranı
İçindekiler

Fonksiyonel Programlama Nedir?

Fonksiyonel programlama (FP), hesaplamayı matematiksel fonksiyonların değerlendirilmesi olarak ele alan bir programlama paradigmasıdır. Imperatif programlamadan farklı olarak, durumu değiştirmek ve yan etkiler üretmek yerine saf fonksiyonlar ve değişmez veriler üzerine kuruludur. Haskell, Erlang, Clojure gibi diller tamamen fonksiyonel olarak tasarlanmışken, JavaScript, Python, C# ve Java gibi diller de fonksiyonel programlama özelliklerini destekler.

Fonksiyonel Programlamanın Temel Kavramları

Saf Fonksiyonlar (Pure Functions)

Saf fonksiyonlar, fonksiyonel programlamanın temel taşıdır. Bir fonksiyonun saf olması için iki koşulu sağlaması gerekir:

  • Aynı girdiler için her zaman aynı çıktıyı üretir
  • Dış dünyada hiçbir yan etki oluşturmaz (dosya yazma, veritabanı güncelleme, global değişken değiştirme gibi)
Saf fonksiyonlar test edilmesi en kolay kod birimleridir. Girdiyi verip çıktıyı kontrol etmeniz yeterlidir.

Değişmezlik (Immutability)

Fonksiyonel programlamada veriler oluşturulduktan sonra değiştirilemez. Bir değişiklik gerektiğinde, mevcut veri değiştirilmez; bunun yerine yeni bir kopya oluşturulur. Bu yaklaşım:

  • Yarış koşullarını önler
  • Kodun öngörülebilirliğini artırır
  • Hata ayıklamayı kolaylaştırır
  • Eşzamanlı programlamayı güvenli hale getirir

Birinci Sınıf Fonksiyonlar

Fonksiyonel programlamada fonksiyonlar birinci sınıf vatandaşlardır. Bu, fonksiyonların değişkenlere atanabileceği, diğer fonksiyonlara parametre olarak geçirilebileceği ve fonksiyonlardan döndürülebileceği anlamına gelir.

Önemli FP Teknikleri

Higher-Order Functions (Üst Düzey Fonksiyonlar)

Bir fonksiyonu parametre olarak alan veya sonuç olarak döndüren fonksiyonlara üst düzey fonksiyon denir. En yaygın örnekler:

FonksiyonAçıklamaKullanım
mapHer elemana bir fonksiyon uygularDönüşüm işlemleri
filterKoşulu sağlayan elemanları seçerFiltreleme işlemleri
reduceElemanları tek bir değere indirgerToplama, birleştirme
forEachHer eleman üzerinde işlem yaparYan etkili işlemler
flatMapMap + düzleştirmeİç içe yapıları açma

Closure (Kapanış)

Bir fonksiyonun, tanımlandığı kapsamdaki değişkenlere erişimini korumasıdır. Closure'lar, veri gizleme ve durum yönetimi için güçlü bir mekanizma sağlar.

Currying

Birden fazla parametre alan bir fonksiyonu, tek parametre alan fonksiyonlar zincirine dönüştürme tekniğidir. Currying, fonksiyonların kısmi uygulamasını (partial application) mümkün kılar ve kodun yeniden kullanılabilirliğini artırır.

Fonksiyon Bileşimi (Function Composition)

Birden fazla fonksiyonu birleştirerek yeni fonksiyonlar oluşturma tekniğidir. Karmaşık işlemleri basit, tekrar kullanılabilir parçalardan oluşturmanızı sağlar.

FP vs OOP

Fonksiyonel programlama ve nesne yönelimli programlama farklı yaklaşımlar sunar:

ÖzellikFPOOP
Temel birimFonksiyonNesne
Durum yönetimiDeğişmez veriDeğişebilir durum
Yan etkilerMinimuma indirilirYaygın olarak kullanılır
Veri akışıFonksiyon zincirlemeMesaj gönderme

Fonksiyonel Programlama Dilleri

  1. Haskell: Tamamen saf fonksiyonel dil, güçlü tip sistemi
  2. Erlang / Elixir: Eşzamanlılık ve hata toleransı için tasarlanmış
  3. Clojure: JVM üzerinde çalışan Lisp türevi
  4. F#: .NET platformunda fonksiyonel programlama
  5. Scala: OOP ve FP'yi birleştiren JVM dili

Sonuç

Fonksiyonel programlama, daha güvenilir, test edilebilir ve bakımı kolay yazılımlar geliştirmenin güçlü bir yoludur. Ekolsoft olarak projelerimizde fonksiyonel programlama prensiplerinden faydalanarak kod kalitesini artırıyoruz. Tamamen fonksiyonel bir dile geçmek zorunda değilsiniz; mevcut dilinizde saf fonksiyonlar, değişmez veriler ve üst düzey fonksiyonlar kullanarak fonksiyonel programlamanın avantajlarından yararlanabilirsiniz.

Bu yazıyı paylaş