Elixir for Java Developers

Bartek „Koziołek” Kuczyński / @koziolek

Słowo o programowaniu funkcyjnym

Wszystko co powinieneś wiedzieć

Wszystko co powinieneś wiedzieć

F(x) → y

G(y) → z

H(x) → z

H(x) = G(F(x))

Funkcje są czyste

Możemy je komponować

A te nieczyste to temat na doktorat

Poznajmy Elixira

José Valim

Poznajmy Elixira

Dynamiczny

Funkcyjny

Silnie typowany

Współbieżny

Ble, ble, ble

Definicja uproszczona

Bo Erlang ma paskudną składnię

Ale co z tego?

Dlaczego Elixir?

Szybkie prototypowanie

Stosunkowo łatwy w nauce

Dojrzałe i nowoczesne zaplecze

Gdzie można zastosować?

Małe i średnie projekty

Duże projekty

Potrzebna wysoka dostępność

Potrzebna wysoka współbieżność

Koszty

OSS – Apache i MIT

„Nowe” zaplecze

Słaba dostępność specjalistów

Zmienne są „pod spodem” wzorcami

Moduły

Podstawowa jednosta organizacyjna

Można je zagnieżdżać

Mogą zawierać struktury

Strażnicy i wzorce

Strażnicy określaja warunki wywołania funkcji

Wzorce pozwalają na wywołania z pewnym kontekstem

Struktury, typy i rekordy

Struktury bazują na mapach

Typy zabezpieczają nasz kod

Rekordy to makra ułatwiające pracę

Elixir jest dynamicznie i silnie typowany

meow

Makra

Elixir jest rozszerzalny

Wiele elementów składni to makra

Testy, operator potoku, dokumentacja

Dużo Elixira napisano w Elixirze

Współbieżność i OTP

Elixir działa na stosie Erlanga

Model aktorowy

Pełne wsparcie dla OTP

W 1.4 mechanizm rejestrów

Co więcej?

Język to nie wszystko

Ważne są narzędzia

Mix – budowanie

EEx – szablony

Phoenix – web

Hex – repozytorium

Podsumowanie

Elixir jest prosty

Ma przyjazna składnię

Szybko rosnącą społeczność

Do poczytania

Elixir School - kurs od podstaw

Programming Elixir - Książka od podstaw

Metaprogramming Elixir - Metaprogramowanie

Teoria Kategorii - Wykłady Bartosza Milewskiego