Notatki z Lambda Lounge meetup
- immutability
- higher-order functions
- first-class functions
- stan przekazywany explicit w argumentach, a nie przechowywany gdzieś tam i zmieniany w miejscu przez nie wiadomo kogo
- referential transparency - funkcja dostając dane argumenty zawsze zwróci tą samą wartość
- nie ma rozróżnienia na == vs. equals
- primitive obsession
- czytelniejszy kod, prostsze testowanie i debugowanie
- łatwiejsza współbieżność
- nowy punkt widzenia, stymulacja mózgu ;)
- podobny sposób myślenia jak w matematyce
- znajomość języków funkcyjnych pozwala pisać lepszy kod w językach imperatywnych/obiektowych
- może być trudno znaleźć ludzi do pracy i pracę (języki dla samotnych wilków)
- kod napisany przez jednego wymiatacza może być niezrozumiały dla innego
Ocaml
- jakaś firma w USA pisze w tym soft do gry na giełdzie
- poza tym mało kto tego używa
Lisp
- można w nim napisać wszystko
- Paul Graham w nim napisał Yahoo Store
- kod traktowany tak samo jak dane
- mało kto tego używa, przynajmniej w Polsce
Clojure
- współpraca z JVM
- kod traktowany tak samo jak dane
- trochę bardziej popularny niż zwykły Lisp
- niektórzy z Ruby/Rails community się przenoszą, są biblioteki do web development
- jakiś startup w Krakowie
Erlang
- dobrze rozwiązana współbieżność
- nacisk bardziej na współbieżność niż funkcyjność
- jest trochę dużych firm które tego używają
Haskell
- bardziej “true” niż reszta
- mało popularny
Scala
- współpraca z JVM
- multi-paradigm, więc łatwiej się przerzucić i łatwiej przekonać team lub znaleźć ludzi
- ale też łatwiej iść na łatwiznę i nie pisać całkiem funkcyjnie
- jeszcze za szybko się zmienia żeby była enterprise-ready
- Twitter, Yammer, jest parę firm w Krakowie
Lisp => Common Lisp (chociaz faktycznie bardzo często mówiąc lisp ma się na myśli tego)
Clojure (dialekt lispa na JVM'a)
Wartałoby zaznaczyć, że nie są to różne jezyki (jak obecny podział sugeruje) lecz dialekty tego samego.