Fonksiyonel paradigma

433 views

Published on

Şehir Üniversitesi'nde "Fonksiyonel Programlama" bakış açısını konuştuk.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
433
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
7
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 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
  • Fonksiyonel paradigma

    1. 1. FONKSİYONEL PARADİGMA #direnstate #nedirtv muhammed cuma tahiroğlu @devmucit 18 ekim 2014
    2. 2. ?
    3. 3. 1950 model Akademi > Endüstri
    4. 4. FONKSİYONEL PROGRAMLAMA KONSEPTLERİ IMMUTABILITY REFERENTIAL TRANSPARENCY CURRYING IDEMPOTENCE SIDE-EFFECT LAZY EVALUATION RECURSION PATTERN MATCHING
    5. 5. OOP: ABSTRACTION ENCAPSULATION
    6. 6. 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
    7. 7. SIDE EFFECT
    8. 8. S T A T E M U T A B L E
    9. 9. FP STATE
    10. 10. Variable Değişken t
    11. 11. 1; var x = 1; x = x + 1;
    12. 12. İlginç bir anekdot 250 sayfa boyunca atama (assignment) yok!
    13. 13. y = f(x) AssertEquals(f(x), f(x)); f(x) = f(x)
    14. 14. string «IMMUTABLE» SINIFLARIN EFENDİSİ
    15. 15. KODA GEL https://www.flickr.com/photos/norfolkodyssey/3863851867
    16. 16. MAP C# 3.0
    17. 17. MAP C# 3.0
    18. 18. FILTER C# 3.0
    19. 19. FILTER C# 3.0
    20. 20. REDUCE C# 3.0
    21. 21. REDUCE C# 3.0
    22. 22. STRATEGY PATTERN
    23. 23. MOTİVASYON
    24. 24. Unit Test yazmak, fonksiyonel programlamayı fonksiyonel olmayan dillerde yeniden icat etmektir
    25. 25. Asıl problem, «stateful» programların büyüdükçe iyi olmayan bir yöne doğru evrilmesidir.
    26. 26. Gerektiğinde imperative programlayın; mümkün olduğunda ise fonksiyonel.
    27. 27. YAZMASI VE BAKIM YAPMASI DAHA BASİT DAHAAZ «CONCURRENCY» SORUNU «TEMPORAL COUPLING» YOK «STATE NEDİR?» DİYE SORMAK YOK #direnstate
    28. 28. HAFIZA KULLANIMI
    29. 29. 8 byte vs 8 Gb
    30. 30. MULTI-CORE COMPUTING (PARALEL PROGRAMLAMA)
    31. 31. AssertEquals(f(x), f(x)); Çekirdek - 1 Çekirdek - 2
    32. 32. FONKSİYONEL DİLLER
    33. 33. Clojure (Lisp) ML
    34. 34. F# 2002’de Microsoft Research yayınladı
    35. 35. MARTIN ODERSKY
    36. 36. C# Java (8)
    37. 37. FONKSİYONEL OLANLA OLMAYAN MODÜLLERİ AYIRIN
    38. 38. «İ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
    39. 39. TEŞEKKÜRLER @devmucit FONKSİYONEL PARADİGMA muhammed cuma tahiroğlu tahiroglu.com #nedirtv

    ×