Clojure
Naukę Clojure zacząłem od książki: „Programowanie w języku Clojure”. Jej autorzy przedstawiali ten język jako prosty i elegancki, co bardzo mnie zaintrygowało, ponieważ właśnie te dwie cechy mocno współgrają z podejściem „Python bez klas”, o którym pisałem tutaj.
Choć lektura była napisana w ciekawy sposób, to jednak nauka tego języka na początkowym etapie nie należała do najłatwiejszych. Poza najprostszymi wyrażeniami, wszystko wydawało mi się nienaturalne, przytłaczające i obce. Poniższa lista przedstawia przeszkody, które w moim przypadku, znacząco wydłużyły naukę:
- pełna nawiasów składnia lispa
- czas uruchamiania aplikacji
- nieczytelny stacktrace,
- porzucenie pętli na rzecz rekurencji i sekwencji,
- brak frameworków,
- biblioteki, które wyglądają tak jakby zostały porzucone wiele lat temu,
- brak dobrej biblioteki do generowania złożonych zapytań SQL,
- problematyczna praca z mapami.
Choć co jakiś czas udawało mi się znaleźć wyjaśnienie lub alternatywne rozwiązanie wymienionych problemów, to muszę jednak przyznać, że cała przeprawa przez materiał stanowiła nie lada wyzwanie.
Punktem przełomowym w mojej nauce, było zrozumienie, że prostszy wariant rozwiązania, zwiększa szansę na użycie wbudowanych funkcji, co z kolei przekłada się na krótszy i bardziej idiomatyczny kod. Pisząc kod czułem jakby Clojure był językiem z następującym przesłaniem: nie komplikuj lub też wyraź problem tak prosto jak to możliwe. Z czasem utwierdził mnie w tym przekonaniu ten post: Clojure vs Scala.
Pytaniem jest: kiedy warto użyć Clojure? Jakie ma zalety?
Na to pytanie nie ma jednej oczywistej odpowiedzi. W odróżnieniu od najpopularniejszych języków programowania, które prześcigają się w zapożyczaniu od siebie konstrukcji, Clojure to język stabilny, o niemal niezmiennej składni. Jak przystało na język stawiający na prostotę, docenić go można za to czego w nim nie ma.
Wybór Clojure oznacza brak:
- szeroko pojętej modyfikowalności,
- ORM (mapowanie obiektowo relacyjne),
- silnika szablonów.
To są tematy, które z konieczności występują w innych językach. W prawdzie, pozwalają one na rozwiązywanie problemów o różnym charakterze, ale przy bardziej złożonych przypadkach okazują się niewystarczające. To irytujące uczucie jest rzadkością w Clojure. Myślę, że to jest główna zaleta jaka może skłonić programistów do poznania i zgłębiania Clojure. Bez wątpienia jest to język pełen możliwości, co czyni go niezwykle użytecznym narzędziem w warsztacie programisty.