Fonksiyonel Programlama Nedir? Örnek Öğretici

Fonksiyonel Programlama Nedir?

İşlevsel programlama (FP olarak da bilinir), saf işlevler oluşturarak yazılım oluşturmayı düşünmenin bir yoludur. Nesneye Yönelik Programlamada gözlemlenen paylaşılan durum, değiştirilebilir veri kavramlarından kaçınır.

İşlevsel diller, ifadelerin yürütülmesinden ziyade ifadeler ve bildirimler üzerine yoğunlaşır. Bu nedenle, yerel veya genel duruma bağlı olan diğer prosedürlerin aksine, FP'deki değer çıktısı yalnızca işleve iletilen argümanlara bağlıdır.

Fonksiyonel Programlamanın Özellikleri

  • Fonksiyonel programlama yöntemi sürece değil sonuçlara odaklanır
  • Neyin hesaplanacağına vurgu yapılıyor
  • Veriler değişmez
  • Fonksiyonel programlama Sorunu 'fonksiyonlara' ayırın
  • Hesaplamayı gerçekleştirmek için koşullu ifadeler ve yineleme kullanan matematiksel işlevler kavramı üzerine kurulmuştur.
  • Döngü ifadeleri ve If-Else gibi koşullu ifadeler gibi yinelemeleri desteklemez

Fonksiyonel programlamanın tarihi

  • Fonksiyonel Programlamanın temeli Lambda Hesabıdır. İşlevsel uygulama, tanım ve özyineleme için 1930'larda geliştirildi.
  • LISP ilk işlevsel programlama diliydi. McCarthy bunu 1960 yılında tasarladı
  • 70'lerin sonlarında Edinburgh Üniversitesi'ndeki araştırmacılar ML'yi (Meta Dili) tanımladılar.
  • 80'lerin başında Hope dili, özyineleme ve eşitliksel akıl yürütme için cebirsel veri türleri ekledi
  • 2004 yılında Fonksiyonel dil 'Scala'nın yeniliği.

Fonksiyonel Programlama Dilleri

Herhangi bir FP dilinin amacı matematiksel fonksiyonları taklit etmektir. Ancak 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

Temel Fonksiyonel Programlama Terminolojisi ve Concepts

Değişmez Veri

Değişmez Veri, halihazırda var olan veri yapılarını değiştirmek yerine kolayca veri yapıları oluşturabilmeniz gerektiği anlamına gelir.

Referans şeffaflığı

Fonksiyonel programların işlemleri sanki ilk defa yapıyormuş gibi yapması gerekir. Böylece programın yürütülmesi sırasında ne olup bitmediğini ve yan etkilerini bileceksiniz. FP döneminde buna Referans şeffaflığı denir.

Modülarite

Modüler tasarım üretkenliği artırır. Küçük modüller hızlı bir şekilde kodlanabilir ve yeniden kullanım şansı daha yüksektir, bu da kesinlikle programların daha hızlı geliştirilmesine yol açar. Bunun dışında modüller ayrı ayrı test edilebilir, bu da ünite testi ve hata ayıklama için harcanan zamanı azaltmanıza yardımcı olur.

İdame

Sürdürülebilirlik basit bir terimdir; bu, verilen işlevin dışındaki herhangi bir şeyi yanlışlıkla değiştirme konusunda endişelenmenize gerek olmadığı için FP programlamanın bakımının daha kolay olduğu anlamına gelir.

Birinci sınıf fonksiyon

'Birinci sınıf işlev', kullanımlarında hiçbir kısıtlama olmayan programlama dili varlıklarına atfedilen bir tanımdır. Bu nedenle birinci sınıf işlevler programın herhangi bir yerinde görünebilir.

Kapatma

Kapatma, ana işlev yürütüldükten sonra bile ana işlevin değişkenlerine erişebilen bir iç işlevdir.

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.

Daha yüksek dereceli işlevler kısmi uygulamalara veya körleştirmeye izin verir. Bu teknik, her uygulamanın bir sonraki bağımsız değişkeni kabul eden yeni bir işlev döndürmesi nedeniyle, bağımsız değişkenlerine birer birer bir işlev uygular.

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 parametrelerine göre hareket eder. Hiçbir şey döndürmüyorsa verimli değildir. Üstelik verilen parametreler için aynı çıktıyı sunar

Örnek:

Function Pure(a,b)
{
	return a+b;
}

Saf olmayan işlevler

Saf olmayan, safın tam tersi şekilde çalışır. Gizli girdileri veya çıktıları var; buna saf olmayan denir. Saf olmayan işlevler, bağımlılıkları olduğundan 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 durumlar OOP programlamada önemli bir kavramdır. Temel olarak nesnelere özellikler eklemektir. Örneğin, 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 herhangi bir durum değişikliğidir. Herhangi bir FP programlama dilinin en büyük hedefi, yan etkileri yazılım kodunun geri kalanından ayırarak en aza indirmektir. FP programlamada Yan etkileri programlama mantığınızın geri kalanından çıkarmak hayati önem taşır.

Fonksiyonel programlamanın faydaları

  • Koddaki kafa karıştırıcı sorunları ve hataları önlemenizi sağlar
  • Birim testini test etmek ve yürütmek ve FP Kodunda hata ayıklamak daha kolaydır.
  • Paralel işleme ve eşzamanlılık
  • Sıcak kod dağıtımı ve hata toleransı
  • Daha kısa kodla daha iyi modülerlik sunar
  • Geliştiricinin artan üretkenliği
  • İç İçe İşlevleri Destekler
  • Tembel Harita ve Listeler vb. gibi İşlevsel Yapılar.
  • Lambda Calculus'un etkili kullanımına izin verir

Fonksiyonel Programlamanın Sınırlamaları

  • Fonksiyonel programlama paradigması kolay değildir, dolayısıyla yeni başlayanlar için anlaşılması zordur.
  • Kodlama sırasında çok sayıda nesnenin gelişmesi nedeniyle bakımı zor
  • Çok sayıda alaycı ve kapsamlı çevresel kurulum gerekiyor
  • 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ı Modeli takip eder. Zorunlu Programlama Modelini takip eder.
Odaklandığı şey şudur: “Ne yapıyorsunuz? programda.” Odaklandığı şey “Programlamanızı nasıl yapıyorsunuz?”
Paralel Programlamayı destekler. Paralel Programlama desteği yoktur.
İşlevlerinin hiçbir yan etkisi yoktur. Yöntem birçok yan etki üretebilir.
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 "Veri Üzerinden Soyutlama"yı hem de "Davranış Üzerinden Soyutlama"yı destekler. Yalnızca “Veri Üzerinden Soyutlama”yı destekler.

Sonuç

  • Fonksiyonel programlama veya FP, bazı temel tanımlayıcı ilkelere dayalı olarak yazılım yapımı hakkında düşünmenin bir yoludur.
  • Fonksiyonel programlama kavramları sürece değil sonuçlara odaklanır
  • Herhangi bir FP dilinin amacı matematiksel fonksiyonları taklit etmektir.
  • En öne çıkan Fonksiyonel programlama dillerinden bazıları: 1)Haskell 2)SM 3) Clojure 4) Scala 5) Erlang 6) Clean
  • 'Saf işlev', girdileri girdi olarak bildirilen ve hiçbirinin gizlenmemesi gereken bir işlevdir. Çıkışlar aynı zamanda çıkış olarak da bildirilir.
  • Değişmez Veriler, halihazırda mevcut olanları değiştirmek yerine kolayca veri yapılarını oluşturabilmeniz gerektiği anlamına gelir
  • Koddaki kafa karıştırıcı sorunları ve hataları önlemenizi sağlar
  • İşlevsel kod kolay değildir, bu nedenle yeni başlayanlar için anlaşılması zordur.
  • FP Değişmez verileri kullanırken OOP Değiştirilebilir verileri kullanır

Bu yazıyı şu şekilde özetleyin: