7. Nesne Yönelimli Programlama, hareketli
parçaları enkapsüle ederek kodu anlaşılır
kılıyor. Fonksiyonel Programlama ise hareketli
parçaları en aza indirgeyerek kodu anlaşılır
kılıyor.
— Michael Feathers
53. «İyi bir yazılım mühendisi olmak için en uygun
teknikleri bulup bir denge sağlamak gerekir.
Ayrıca teknik olmayan yanlar ve hedefler de var.
Mesela kodun her ekip elemanı tarafından
anlaşılabilmesi gibi.
Doğru olan, en verimli yaklaşım hedeflerini net
olarak belirleyerek, teknikleri o amaçla tutarlı
bir şekilde kullanmaktir bence. Yoksa mesela
her For döngüsünü Map'e çevirdiğinizde
kodunuzun kalitesi artmaz; düşebilir bile.»
BURAK EMİR
Google - İsviçre
Neden fonksiyonel programlamadan bahsedeceğiz
Biraz tarihçe
Konseptler – genel bakış
OOP’un faydası
Side-effect kavramı
Aforizmalar
Kod örnekleri
Burak Ekin’den mesaj
Diller - kaynaklar
Gelişen programlama stillerini az çok biliyoruz.
Endüstrimizin şu an bulduğu en yaygın çözüm Object Oriented. Kurumsal Uygulamaların tamamı object oriented ortamlarda yazılıyor.
Peki Functional programlamadan dünya uzaklaşmışken, neden bu aşk tekrar hortladı?
Peki nereden geldi birden bire bu fonksiyonel aşkı?
Moda gibi sıkılınca değiştirmek istediğimizden mi?
Yoksa bir şeyi yanlış biliyorduk da yeni mi doğrusunu anladık
Bir ilham mı geldi bir yerlerden
Şartlar olarak değişen ne?
Bu sunumda, fonksiyonel programlamanın OOP programcıları için ilginç olan değerlerine bakacağız
Ve neden şimdi bunların popülerleştiğini sorgulamaya çalışacağız
Kendi tecrübelerimizden de örnekler vereceğiz
OO makes code understandable by encapsulating moving parts. FP makes code understandable by minimizing moving parts.
— Michael Feathers
Fonksiyonel programlama – how’dan çok what’ı anlatıyor
- Ve en önemlisi, bir fonksiyonun çıktısı, diğer fonksiyonun girdisi olabilir
IP bazında bağlantı sayısı
Şimdi FP’nin biizm için anlamlı olan prensiplerinden bahsedelim
SIDE – EFFECT nedir?
Şimdi biraz fonksiyonel programlamanın OOP için anlam ifade eden temel konseptlerine bakalım
State, durum olan state, fonksiyonel paradigmada kritik bir alan, sorunlu. State’in tümüne elbette bir düşmanlık yok. Özelde, mutable state’e, yani değişmeye karşı bir direnç var.
Fonksiyonel programlama, moving part sözünden de hatırlayacağınız gibi kendini değişen, kımıldayan, ayran gönüllü yapılardan uzak kılmaya çalışıyor.
Bu yüzden de sıklıkla
Enemy of the state filmine atıf yaparlar.
PEKİ şimdi state’in nasıl oluştuğuna bakalım mı?
Immutable nesneler daha basit, tek state tutuyorsun, yaratıldığı state’de duruyor
Ve doğal olarak senkronizasyon gerektirmiyor, thread-safe