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.