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.
   19   20   21   22   23   24   25   26   27   28   29