Fonksiyonel Programlama Nedir?
⚡ Akıllı Özet
Fonksiyonel Programlama, paylaşılan durumdan ve değiştirilebilir verilerden kaçınarak, saf fonksiyonları bir araya getirerek yazılım oluşturma yöntemidir. Deyimlerden ziyade ifadelere önem verir, bu nedenle bir fonksiyonun çıktısı yalnızca girdilerine bağlıdır; bu da programları tahmin edilebilir ve test edilebilir hale getirir.

Fonksiyonel Programlama Nedir?
Fonksiyonel programlama (FP olarak da adlandırılır), saf fonksiyonlar oluşturarak yazılım geliştirmeyi düşünme biçimidir. Nesne yönelimli programlamada görülen paylaşılan durum ve değiştirilebilir veri kavramlarından kaçınır.
Fonksiyonel diller, ifadelerin yürütülmesinden ziyade ifadelere ve bildirimlere odaklanır. Bu nedenle, yerel veya küresel bir duruma bağlı olan diğer prosedürlerin aksine, fonksiyonel dillerde değer çıktısı yalnızca fonksiyona geçirilen argümanlara bağlıdır.
Fonksiyonel Programlamanın Özellikleri
- Fonksiyonel programlama yöntemi sürece değil, sonuçlara odaklanır.
- Hesaplanacak olan şeye odaklanılmıştır.
- Veriler değiştirilemezdir.
- Fonksiyonel programlama, problemi fonksiyonlara ayırır.
- Bu, hesaplamayı gerçekleştirmek için koşullu ifadeler ve özyinelemeyi kullanan matematiksel fonksiyonlar kavramı üzerine kurulmuştur.
- Döngü ifadeleri ve If-Else gibi koşullu ifadeler gibi yinelemeli işlemleri desteklemez.
Fonksiyonel programlamanın tarihi
- Fonksiyonel Programlamanın temeli Lambda Hesabı'dır. 1930'larda fonksiyonel uygulama, tanımlama ve özyineleme için geliştirilmiştir.
- LISP, ilk fonksiyonel programlama dilidir. McCarthy tarafından 1960 yılında tasarlanmıştır.
- 70'lerin sonlarında, Edinburgh Üniversitesi'ndeki araştırmacılar ML'yi (Meta Dil) tanımladılar.
- 80'lerin başlarında, Hope dili özyineleme ve denklemsel akıl yürütme için cebirsel veri tipleri ekledi.
- 2004 yılında 'Scala' adlı fonksiyonel programlama dili geliştirildi.
Fonksiyonel Programlama Dilleri
Herhangi bir fonksiyonel programlama dilinin amacı matematiksel fonksiyonları taklit etmektir. Bununla birlikte, fonksiyonel programlamada temel hesaplama süreci farklıdır.
İşte en öne çıkan fonksiyonel programlama dillerinden bazıları:
- Haskell
- SML
- Clojure
- Scala
- Erlang
- Temiz
- F#
- ML/OCaml Lisp / Şeması
- XSLT
- SQL
- Mathematica
Temel Fonksiyonel Programlama Terminolojisi ve Concepts
Değişmez Veri
Değiştirilemez Veri, mevcut veri yapılarını değiştirmek yerine kolayca yeni veri yapıları oluşturabilmeniz anlamına gelir.
Referans şeffaflığı
Fonksiyonel programlar, işlemleri sanki ilk kez yapılıyormuş gibi gerçekleştirmelidir. Bu sayede, programın yürütülmesi sırasında neler olup bittiğini ve yan etkilerini bilirsiniz. Fonksiyonel programlama terimleriyle buna referans şeffaflığı denir.
Modülarite
Modüler tasarım verimliliği artırır. Küçük modüller hızla kodlanabilir ve yeniden kullanılma olasılığı daha yüksektir; bu da programların daha hızlı geliştirilmesine yol açar. Bunun yanı sıra, modüller ayrı ayrı test edilebilir, bu da birim testine ve hata ayıklamaya harcanan zamanı azaltmaya yardımcı olur.
İdame
Bakım kolaylığı, fonksiyonel programlamanın bakımının daha kolay olduğu anlamına gelen basit bir terimdir; çünkü verilen fonksiyonun dışında herhangi bir şeyi yanlışlıkla değiştirme konusunda endişelenmenize gerek yoktur.
Birinci sınıf fonksiyon
'Birinci sınıf fonksiyon', kullanımında herhangi bir kısıtlama olmayan programlama dili varlıklarına atfedilen bir tanımdır. Bu nedenle, birinci sınıf fonksiyonlar programın herhangi bir yerinde yer alabilir.
Kapatma
Bir closure, üst fonksiyon çalıştıktan sonra bile üst fonksiyonun değişkenlerine erişebilen iç içe bir fonksiyondur.
Daha yüksek dereceli işlevler
Yüksek dereceli işlevler ya diğer işlevleri bağımsız değişken olarak alır ya da bunları sonuç olarak döndürür.
Üst düzey fonksiyonlar kısmi uygulamalara veya currying'e olanak tanır. Bu teknik, bir fonksiyonu argümanlarına tek tek uygular ve her uygulama, bir sonraki argümanı kabul eden yeni bir fonksiyon döndürür.
Saf fonksiyon
'Saf işlev', girdileri girdi olarak bildirilen ve hiçbirinin gizlenmemesi gereken bir işlevdir. Çıkışlar aynı zamanda çıkış olarak da bildirilir.
Saf fonksiyonlar, parametreleri üzerinde işlem yapar. Hiçbir şey döndürmüyorsa verimli değildir. Dahası, verilen parametreler için aynı çıktıyı sunar.
Örnek:
Function Pure(a,b) { return a+b; }
Saf olmayan işlevler
Saf olmayan fonksiyonlar, saf fonksiyonların tam tersidir. Gizli girdileri veya çıktıları vardır ve bu nedenle saf olmayan olarak adlandırılırlar. Bağımlılıkları olduğu için saf olmayan fonksiyonlar tek başına kullanılamaz veya test edilemez.
Örnek E-posta
int z; function notPure(){ z = z+10; }
Fonksiyon Bileşimi
Fonksiyon bileşimi, yeni bir fonksiyon oluşturmak için 2 veya daha fazla fonksiyonun birleştirilmesidir.
Paylaşılan Durumlar
Paylaşılan durum, nesne yönelimli programlamada önemli bir kavramdır. Temelde, nesnelere özellikler eklemektir. Örneğin, bir Sabit Disk bir Nesne ise, Depolama Kapasitesi ve Disk Boyutu özellik olarak eklenebilir.
Yan etkiler
Yan etkiler, çağrılan bir fonksiyonun dışında meydana gelen her türlü durum değişikliğidir. Herhangi bir fonksiyonel programlama dilinin en büyük amacı, yan etkileri yazılım kodunun geri kalanından ayırarak en aza indirmektir. Fonksiyonel programlamada, yan etkileri programlama mantığınızın geri kalanından uzaklaştırmak hayati önem taşır.
Fonksiyonel programlamanın faydaları
- Kodda kafa karıştırıcı sorunlardan ve hatalardan kaçınmanızı sağlar.
- Fonksiyonel programlamada birim testlerini ve hata ayıklamayı test etmek ve yürütmek daha kolay. Code.
- Paralel işlem ve eşzamanlılık.
- Anlık kod dağıtımı ve hata toleransı.
- Daha kısa kod ile daha iyi modülerlik sunar.
- Geliştiricinin verimliliğinde artış.
- İç içe fonksiyonları destekler.
- Tembel Harita ve Listeler vb. gibi İşlevsel Yapılar.
- Lambda hesaplamasının etkili kullanımına olanak tanır.
Fonksiyonel Programlamanın Sınırlamaları
- Fonksiyonel programlama paradigması kolay değildir, bu nedenle yeni başlayanlar için anlaşılması zordur.
- Kodlama sürecinde birçok nesne değiştiği için bakımı zor.
- Çok sayıda simülasyon ve kapsamlı ortam kurulumu gerektiriyor.
- Yeniden kullanım çok karmaşıktır ve sürekli yeniden düzenleme gerektirir.
- Nesneler sorunu doğru şekilde temsil etmeyebilir.
Fonksiyonel Programlama ve Nesneye Yönelik Programlama
| Fonksiyonel Programlama | OOP |
|---|---|
| FP Değişmez verileri kullanır. | OOP Mutable verilerini kullanır. |
| Bildirimsel programlama tabanlı bir modeli takip eder. | Zorunlu Programlama Modelini takip eder. |
| Odak noktası şudur: "Programda neler yapıyorsunuz?" | Odak noktası şu: "Programlamayı nasıl yapıyorsunuz?" |
| Paralel Programlamayı destekler. | Paralel programlama desteği bulunmamaktadır. |
| İşlevlerinin hiçbir yan etkisi yoktur. | Bir yöntem birçok yan etkiye yol açabilir. |
| Akış Kontrolü, işlev çağrıları ve özyinelemeli işlev çağrıları kullanılarak gerçekleştirilir. | Akış kontrol işlemi döngüler ve koşullu ifadeler kullanılarak gerçekleştirilir. |
| İfadelerin yürütülme sırası çok önemli değildir. | İfadelerin yürütülme sırası önemlidir. |
| Hem “Abs”i desteklertracVeriler Üzerindeki Etki” ve “MutlaktracDavranış üzerindeki kontrol." | Sadece "Abs"i destekler.tracVeriler Üzerindeki Etki”. |

