JS ILE FONKSIYONEL PROGRAMLAMA

Fonksiyonel Programlamanın Gelişimi

Bir önceki yazımda Fonksiyonel Programlamanın başlangıcından bahsetmiştim. Bu yazıda da geçmişten günümüze Fonksiyonel Programlamanın gelişiminden bahsedeceğim.

--

Bu yazıyı daha önceden yazmış olduğum JS ile Fonksiyonel Programlama yazısının devamı olarak yazıyorum. Bir çok kavramı tek bir yazıda ele almanın yaratacağı karmaşıklıktan kaçmak için bu şekilde bir yönteme başvurdum.

Fonksiyonel Programlamanın İlk Dönemleri

  • 1930 yılında Fonksiyonel Programlamayı başlangıcına baktığımızda ilk Alonzo Crunch Lambda Calculus, Alan Turing oluşturduğu Turing Machine üzerinde çalışabilen matematiksel bir soyutlama ve hesaplama dili oluşturmuştur. Bu dil fonksiyonların diğer fonksiyonları kapsaması yöntemi ile fonksiyonel programlamanın temelini oluşturdu.
  • 1958 yılında Lisp dili oluşturdu. Lisp dili yapay zeka terimini oluşturan John McCarthy tarafından oluşturuldu. Bu uzunca bir . Lisp dili üzerinde Scheme (ilerde JS bundan esinlenerek oluşturuldu), AutoCAD’in Autolisp, Racket ve Clojure benzeri diller aynı dialect üzerine türeyen dillerdir.
https://en.wikipedia.org/wiki/Lisp_(programming_language)
  • 1972 yılında Alan Kay’s Smalltalk objelerden atomic birimler oluşturma ve bunların birbirini kapsaması üzerine nesne tabanlı programlamayı ortaya attı. Burdaki objeler birbirleri iletişimi bir birlerine geçirdikleri mesajlar üzerinden gerçekleştirir. Bu yönüyle Smalltalk fonksiyonel nesne tabanlı programlamaya örnek verebiliriz.

Fonksiyonel Programlamanın Arka Plana Atıldığı Dönemler. 1975–2005

Bu dönemde Procedural diller çok ön plana çıktı. İlk önce C dili sonrasında Windows ile birlikte Basic, Pascal gibi diller giderek popülerleşti. Fortran, Cobol gibi dillerde bankacılık alanında yaygınlaştı

  • 1975–1985 yılları arasında C (K&R) ve Basic, Pascal

Mikrobilgisayarlar ve işletim sistemlerinin gelişmesi, Desktop uygulamalarının gelişmesini sağladı, bu daha büyük projeler geliştirme ihtiyacını doğdu.

  • 85 sonrasında Visual Basic, Delphi, C++ Builder kod geliştirme arayüz araçları ortaya çıktı.

Microsoft Windows ortamı için Win32 , C++ dilleri, Sun Microsystem tüm ortamlar için Unix, MacOS, Windows için Java OOP geliştirdi. MacOS için Apple firması Objective C (Smalltalk üzerine C dilini nesne tabanlı hale getirerek kullandı).

Bu zamanlarda Java dilinin;

  • her platformda çalışabilme özelliği
  • JVM mimarisinin popülerliği,
  • sunucu ve client tarafında aynı dilin kullanabilme imkanı,
  • Sunucu tarafında güçlü olan IBM, Oracle, Sun gibi büyük firmaların veritabanı üzerine kurdukları ApplicationServer kütüphanelerinde ve projelerinde Java’yı tercih etmesi
  • Java’nın backward compatible (geri uyumlu)

inanılmaz bir Java popülaritesi oluşturdu ve büyük bir geliştirici topluluğu ve büyük şirketler Java dilini kullanmaya başladı. Diğer diller Java dilinin gölgesinde kaldı.

Bu dönemde oyun programlama, windows işletim sistemi dll, lib yazılımları(C, C++) haricinde tüm piyasa Java dilini kullanmaya başladı.

Bu zaman aralığında çıkan fonksiyonel diller Java, C, Basic popülerliği arkasında kaldılar.

ObjectiveC (1984), Erlang (1986), Haskell(1990)

2005–2015 yılları arasında iPhone, iPad ve Dağıtık Kodlamanın Yaygınlaşması ile Tekrardan Fonksiyonel Programlama Yaygınlaşıyor.

Steve Jobs iPhone, iPad duyurmasından ve çok yaygınlaşmasından sonra Apple iOS SDK’sını duyurdu. iOS SDK ObjectiveC dili üzerine geliştirildiği için bu dil bir an içinde popülerleşti. Bir çok uygulama geliştiricisi bir anda ObjectiveC dilini öğrenmeye başladı. ObjectiveC adından da anlaşılacağı gibi nesne tabanlı C dili ama C++ yapısında değil Smalltalk dil yapısındaki objeler arasında mesaj ile iletişim kuran bir yapıya sahip.

Bu süreçte nesne tabanlı programlamanın alternatifi bir çok nesne tabanlı fonksiyonel programlamayı destekleyen programlama dili ortaya çıkmıştır.

2015 yılından itibaren ES6 ile Birlikte Javascript Fonksiyonel Programlama Özelliklerini Daha Çok Dilin İçerisine Kullanmaya Başladı.

2015 yılından itibaren ES6 ile birlikte Javascript fonksiyonel programlama paradigmalarını Javascript daha çok kullanmaya başladı ve bunun haricinde zaten fonksiyonel geliştirme yapmanızı sağlayan JS kütüphaneleri Ramda, Lodash/FP , Immutable JS ve UI geliştirme kütüphanelerinin React/Hook/Redux fonksiyonel programlama temellerini içeriyor olması, geliştirici topluluklarının zaman içerisinde Fonksiyonel programlamaya ilgisini daha çok arttırmış durumda.

Swift iOS, Kotlin Android gibi dillerde multi-paradigm dillerden. Fonksiyonel programlama gerçekleştirebiliyorsunuz.

Referanslar

Okumaya Devam Et 😃

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

--

--