Page 24 - Yazılım Teknolojileri Araştırma Bülteni 2023
P. 24
24 | Java’da Fonksiyonel Programlama
Java’da Fonksiyonel Programlama
1. Fonksiyonel Programlama Nedir?
Fonksiyonel programlama, bir uygulamanın verilerini ve durumunu değiştirmeden tıpkı
bir matematik fonksiyonu gibi bir girdi alıp çıktı üreten fonksiyonlar kullanılarak yapılan
programlamadır. Prensip olarak kökenini 1930’lu yıllarda Alonzo Church tarafından tanımlanmış
2
2
lamda kalkülüs modelinden alır. Bu modele göre örneğin hipotenüs(x,y) = √x + y fonksiyonu
isimsiz bir şekilde (x,y) => √x + y olarak yazılır.
2
2
2. Fonksiyonel Programlama – Obje Tabanlı Programlama Farkları
Fonksiyonel Programlama Obje Tabanlı Programlama
Değişmez (immutable) veri kullanır. Bir kısıtlaması bulunmaz.
“Ne yapar” odaklı bildirimsel (declarative) “Nasıl yapar” odaklı zorunlu (imperative)
programlama modeli kullanır. programlama modeli kullanır.
Yinelemeli (iterative) veriler için özyineleme Yinelemeli veriler için döngü (loop)
(recursive) kullanır. kullanır.
Değişkenler ve fonksiyonlar temel öğeleridir. Nesneler ve modeller temel öğeleridir.
Çok farklı işlemler yapılan az iş için kullanılır. Az işlem yapılan çok farklı işler için kullanılır.
Paralel programlamayı destekler. Paralel programlamayı doğrudan desteklemez.
Veri gizlemeyi desteklemez. Veri gizlemeyi destekler.
İfadeler (statement) herhangi bir sırada İfadeler belli bir sırada çalışır.
çalışabilir.
Tablodan görülebileceği gibi iki programlama tipi de farklı bir yaklaşımı benimsemektedir. Obje
tabanlı programlamada (OOP) var olan objeleri/metotları kullanarak yeni objeler ve metotlar
yaratmak kolaydır. Var olan işlemleri kullanarak yeni veri tiplerine kolay adapte olur ve kalıtım
(inheritance) burada büyük rol oynar. Bu sebeplerle, uzun süreli devam eden ve gittikçe
karmaşıklaşan projeler için daha uygundur. Fonksiyonel programlama (FP) sabit bir veri üzerine
yeni işlemler eklemek için iyidir ve eski işlemler aynı şekilde kullanılmaya devam eder. Ancak, veri
tipi değişikliklerine daha zor adapte olur.
Obje tabanlı bir dil olan Java, fonksiyonel programlamaya uygun olmasa da Java 8 sürümüyle
birlikte lamda fonksiyonları ve fonksiyonel arayüzlerin (interface) eklenmesiyle fonksiyonel
programlamanın faydalarından yararlanılmasına imkan vermektedir.