Fonksiyonel Programlama Nedir?
İngilizce: Functional Programming
Yayın: · Son güncelleme:
Fonksiyonel Programlama Nedir? Kısaca
Fonksiyonel programlama, programı yan etkisi olmayan saf fonksiyonların birleşimi olarak kuran bir programlama yaklaşımıdır. Veriyi değiştirmek yerine yeni veri üretir; bu da kodu test etmeyi ve hata ayıklamayı kolaylaştırır.

Fonksiyonel programlama nedir?
Fonksiyonel programlama, yazılımı matematikteki fonksiyonlara benzeyen küçük parçalarla kurma yaklaşımıdır. Bu parçalar aynı girdiye her zaman aynı çıktıyı verir ve dışarıdaki hiçbir şeyi değiştirmez. Böyle fonksiyonlara "saf fonksiyon" denir. Yaklaşım, bir programlama paradigması olarak nesne yönelimli ve prosedürel stilin yanında yer alır.
Temel ilkeleri neler?
Üç fikir öne çıkar. Değişmezlik, bir veriyi yerinde güncellemek yerine değiştirilmiş yeni bir kopya üretmek demektir. Saf fonksiyonlar, dosyaya yazma ya da global bir değişkeni değiştirme gibi yan etkiler taşımaz. Fonksiyonlar da birer değer gibi davranır: bir değişkene atanabilir, başka bir fonksiyona parametre olarak verilebilir.
Bu ilkelerin pratik karşılığı map, filter ve reduce gibi araçlardır. Döngü yazıp bir listeyi adım adım değiştirmek yerine "her elemana şunu uygula" dersiniz.
Basit bir örnek
Bir e-ticaret sepetinde ürün fiyatları 100, 250 ve 40 TL olsun. Prosedürel yazımda boş bir toplam değişkeni açar, döngüyle fiyatları tek tek eklersiniz. Fonksiyonel yazımda ise fiyatlar.reduce((t, f) => t + f, 0) gibi tek bir ifade 390 sonucunu üretir ve hiçbir değişken sonradan değişmez.
Nelere dikkat etmeli?
Her işi saf fonksiyonla çözmek mümkün değildir; veritabanına kayıt ya da ekrana çıktı gibi yan etkiler kaçınılmazdır. İyi uygulama, bu etkileri programın kenarında toplayıp çekirdek mantığı saf tutmaktır. Başlangıç için mevcut bir döngünüzü map ya da filter ile yeniden yazmayı deneyin; farkı en hızlı bu şekilde görürsünüz.
Sıkça Sorulan Sorular
Fonksiyonel programlama hangi dillerde kullanılır?
Haskell, Elixir ve Clojure gibi diller bu yaklaşım üzerine kuruludur. JavaScript, Python, Kotlin ve C# gibi çok amaçlı diller de map, filter ve lambda gibi fonksiyonel araçlar sunar, bu yüzden yaklaşımı bu dillerde de uygulayabilirsiniz.
Fonksiyonel programlama nesne yönelimli programlamanın rakibi mi?
Tam olarak değil. Pek çok projede ikisi birlikte kullanılır: nesneler yapıyı düzenler, fonksiyonel teknikler ise veri dönüşümlerini sadeleştirir.