Photo by Jeremy Thomas on Unsplash

Functional Programming

JS ile Fonksiyonel Programlama

Onur Dayıbaşı
Frontend Development With JS
2 min readJan 8, 2020

--

Fonksiyonel programlama nedir? Bildiğimiz kodlamadan farkı nedir? JS ile fonksiyonel programlamayı nasıl gerçekleştirebiliriz?

ES6 kullandıkça JS Tarihçesi yazısını yazarken JS yeni sürümlerinde gelen bir çok özelliğin temelinde fonksiyonel programlamanın yer aldığını gördüm. Peki neydi fonksiyonel programlama yeni bir yaklaşım mıydı? Mevcut programladan farkları neydi şeklinde araştırırken buranın apayrı bir dünya olduğunu bu konuda da bir yazı dizisi hazırlamam gerektiğinin farkına vardım.

Bu konuda türkçe bir kaç yazı bulmama rağmen bu yazılar çok kısa sadece belli noktalara değinen yazılardı. Bundan dolayı bu konuyu daha detaylı nasıl inceleyebilirim diye düşünmeyi başladım. Konuyu araştırmaya başladım bu konuyu öğrenmenin o kadar da kolay olmadığını farkettim.

Nasıl ki Procedural programlamdan → OOP(Object Oriented Programming), OOP(Object Oriented Programming) yaklaşımından → TDD yaklaşımına
geçişte bir sürü zorluk yaşadıysak bir benzerinide OOP → Fonksiyonel Programlamaya geçişte yaşıyacağız. Gerçi Javascript’ te multi-paradigm yani çoklu paradigması sayesinde istediğiniz yaklaşımla kod geliştirebilirsiniz ama benim gördüğüm kütüphane gibi altyapısal geliştirmeler için fonksiyonel programlama daha avantajlı iken, enterprise bir uygulama geliştirirken Procedural veya OOP(Prototype based inheritance) yaklaşım daha anlamlı olabilir.

Aşağıda Fonksiyonel Programlama kapsamında anlatacağım konu başlıklarını listelemeye çalıştım, bu başlıkları Composing Software: The Book (from Eric Elliott) kitabından alarak oluşturdum. Zaman içerisinde her bir başlığı detaylandırarak anlatmaya çalışacağım.

  • Declarative Programlama Nedir? Imperative Programlamadan Farkı?
  • Fonksiyonel Programlama Nedir?
  • Fonksiyonel Programlamanın Başlangıcı
  • Fonksiyonel Programlamanın Tarihi Gelişimi
  • Pure functions Nedir? (referential transparency)
  • High Order Functions Nedir? (Containers, Functors, Lists, and Streams)
  • Curried Function Nedir?
  • Function Accepting Functions
  • Partial Application Nedir?
  • Point Free Style Nedir?
  • Abstraction ve Composition Kavramları Nelerdir ?
  • ADT Abstract Data Types (Soyut Veri Tipleri)
  • Functor & Categories Nedir?
  • Monads Nedir?
  • OOP Unutulmuş Tarihi-1
  • OOP Unutulmuş Tarihi-2
  • OOP Unutulmuş Tarihi-3
  • OOP Unutulmuş Tarihi-4
  • OOP Unutulmuş Tarihi-5
  • OOP Unutulmuş Tarihi-6
  • OOP Unutulmuş Tarihi-7
  • Object Composition
  • Factory Functions
  • Functional Mixins
  • Why Composition is Harder with Classes
  • Composable Custom Datatypes
  • Lenses
  • Transducers
  • Elements of JavaScript Style
  • Mocking is a Code Smell

Referanslar

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--