niedziela, 22 listopada 2015

Funkcyjne Code Retreat

Mięsień nie używany zanika ale mięsień używany ale nie ćwiczony i pozbawiony zróżnicowanych bodźców nie staje się silniejszy. Są różne "mięśnie programistyczne" które możemy ćwiczyć i jednym z nich jest mięsień funkcyjny - dosyć nowy, niedawno odkryty na lokalnych siłowniach i generujący masę hejtu tudzież frustracji u tych, którzy przy jego pomocy chcą unieść problemy cięższe od tych spotykanych do tej pory.

Co roku na CodeRetreat ćwiczymy tworzenie dobrego kodu przy pomocy.... tworzenia dobrego kodu (taka idea ćwiczenia). Klasycznie CR używa wielu technik dobrego kodu OOP i to jest bardzo wskazane bo wiele osób zanim wejdzie w ogóle na płaszczyznę "Object Oriented vs. Functional" musi zrozumieć, że na co dzień pisze szalenie złożony kod proceduralny zbudowany z zagnieżdżonych ifów i pętli.

W trakcie tegorocznego łódzkiego CodeRetreat głównym prowadzacym był Adrian Bolboaca a ja tym razem pełniłem role ciecia do pomocy co zdjęło kilka obowiązków z moich barków i pozwoliło obserwować co dokładnie robią ludzie. Ostatnia sesja na życzenie zgromadzonych była dłuższa i polegała na programowaniu funkcyjnym w języku nie funkcyjnym.

Te funkcyjne konstrukcje są już w Javie8 i w końcu trafią i do twojego korpo także można zacząć ćwiczyć i dziś. A z tego co widziałem trzeba zacząć ćwiczyć FP - oj trzeba.

Toteż poniżej plan ćwiczeń "Funkcyjnego Code Retreat"

Funkcyjny Code Retreat

Idea jest taka by ćwiczenia poza wartością edukacyjną miały zajebiste tytuły podkreślające epickość przerabianego materiału. Opisy są po angielsku z błędami bo akurat tak sobie zapisałem a nie chce mi się tłumaczyć.

  1. Session 1 – „Values are Forever” (enter world when 1 has always value of 1)
    • Theory : explain that most of people already use functional structures in GIT and that immutable data is was already one of good practices in 2006 in Effective Java (why?) Only final variables. Only immutable data structures. This is a warm up session but it’s already give some functional constraints.
  2. Session 2 – “Citizen Function” – (functions as a first class citizens)
    • Theory : Origins of OOP, why you need to encapsulate mutable state, when anemic data is good, what are benefits of separations operations from data? All existing logic can be only defined as Function (Function in Java, val fun:A=>B in scala etc. ) Data is represented by structures. No word “this” allowed (either explicitly nor implicitly)
  3. Session 3a – “Pure Stuff” – (an injection of mathematical purity)
    • Theory: Referential transparency, Unit, Void and () types. Only pure functions allowed
    Session 3b – “Fix the Billion dollar Mistake” (null,NullObjectPattern > /dev/null)
    • Theory: Referential transparency, Unit, Void and () types. How to preserve functional purity in context of value absence. Mindfuck : List as a generalization of option. Use Either Option Or Maybe Optional
  4. Session 4 – “Curry On” – (purest Dependency Injection)
    • Theory: Dependency injection out-of-the box. Only functions with one parameters allowed
  5. Session 5 – “Back to reality” – (mathematical purity is cool but you’ve just got a call from reality)
    • Theory: Functors basics, side effects in the world of functional purity. Log each operation to the console. Each function has to stay pure.

Kiedy?

Biorąc pod uwagę ilość dobrych rzeczy (jak święta) i ilość złych rzeczy (jak nie święta), które mają sie wydarzyć w najbliższym czasie to takie spotkanie powinno się udać zrobić gdzieś w pierwszej połowie stycznia.

Brak komentarzy:

Prześlij komentarz