İçeriğe geç
parazade

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?
İçindekiler
  1. Fonksiyonel programlama nedir?
  2. Temel ilkeleri neler?
  3. Basit bir örnek
  4. Nelere dikkat etmeli?

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.

İlgili terimler

Prosedürel Programlama(Procedural Programming)Prosedürel programlama, programı yukarıdan aşağıya çalışan komutlar ve bu komutları gruplayan prosedürler (fonksiyonlar) şeklinde yazan programlama yaklaşımıdır. C ve Pascal gibi diller bu stilin tipik örnekleridir.Lambda Fonksiyonu(Lambda Function)Lambda fonksiyonu, adı olmayan ve genellikle tek satırda tanımlanan kısa fonksiyondur. Çoğunlukla sıralama, filtreleme ya da başka bir fonksiyona parametre olarak verilecek küçük işlemler için kullanılır.Nesne Yönelimli Programlama(Object-Oriented Programming)Nesne yönelimli programlama (OOP), yazılımı veri ve bu veri üzerinde çalışan davranışları bir arada tutan nesneler etrafında düzenleyen programlama yaklaşımıdır. Kapsülleme, kalıtım, çok biçimlilik ve soyutlama temel ilkeleridir.Programlama(Programming)Programlama, bir problemi bilgisayarın uygulayabileceği net ve sıralı adımlara bölüp bu adımları bir programlama diliyle yazma işidir. Ortaya çıkan talimatlar dizisine program denir.Fonksiyon(Function)Fonksiyon, programlamada belirli bir işi yapan, isim verilmiş ve gerektiğinde tekrar tekrar çağrılabilen kod bloğudur. Girdi olarak parametre alabilir ve geriye bir değer döndürebilir.Değişken(Variable)Değişken, programlamada bir değeri bellekte saklamak için kullanılan isimli alandır. İçindeki değer program çalışırken okunabilir ve değiştirilebilir; örneğin `fiyat = 250` satırı fiyat adlı bir değişken oluşturur.