11 września 2012

Znalezione w skrzynce: Do czego mi Clojure?

Właśnie dostałem do skrzynki maila, który odzwierciedla większość pytań i wątpliwości, jakimi zarzucają mnie moi rozmówcy w temacie Clojure. Postanowiłem opublikować moją odpowiedź, która specjalnie nie wnosi nic nowego w temacie, ale być może zainspiruje do ciekawej dyskusji o sensowności...właśnie! Czego ta sensowność miała by dotyczyć?! Pytanie pozostawiam otarte.

> Na pikniku rzuciłeś pytanie "W jaki sposób przekonać programistów Javy do
> użycia Clojure w swoich projektach?". Poczytałem trochę na ten temat i
> jedyne co mi nie pozwala używać tego języka to to, że po prostu nie mam
> czasu na naukę nowych języków. Musisz wziąć pod uwagę to, że ja reprezentuje
> jak to powiedziałeś "żółtodziobów" (chociaż za takiego się nie uznaję). Ja
> swój czas zamierzam poświęcić na naukę technologi takich jak Spring , JPA,
> JSF,EJB, SQL itd. Są to technologie które najczęściej występują w
> ogłoszeniach o pracę i jest ich tak dużo że nie ma czasu na naukę Clojure.

Cześć XXX,

Święta racja! W zasadzie nic dodać nic ująć, ale zastanów się, ile
osób tak myśli. Sądzę, że cała masa. Właściwie nawet więcej, co
sprawia, że przebicie się na lidera w tej grupie jest zadaniem
wymagającym dużego nakładu pracy. A może by tak warto rozważyć
poświęcenie nie mniej czasu na coś odmiennego, co sprawi, że jeśli
wartościowe (podkreślam słowo "jeśli") da Ci gwarantowaną przewagę.
Czy w takim świetle Clojure wypada ciekawiej?

> -powiedział ile czasu zajmie nauka Clojure
> -powiedział jak szybko można zrobić coś co działa w Clojure
> -do czego ten język wykorzystuje się w praktyce, jakiś konkretny przypadek w
> którym Clojure jest bez cenny ( bo jak sam stwierdziłeś że przykład z
> wyświetlaniem daty nie za bardzo wszystkich przekonał)
> -zapewnił że użycie Clojure jest stabilne, można go obdarzyć zaufaniem
> To prawdopodobnie kupił bym Clojure In Action i zaczął przerabiać kolejne
> rozdziały.

Czy potrafiłbyś odpowiedzieć na te pytania, gdyby zamiast Clojure
występowało Java lub inny język programowania? Celem Clojure było
przybliżenie programowania funkcyjnego do platformy Java i wielu
przypadło to do gustu. Jak to bywa, znalazło się też wielu, którym
niekoniecznie. Trudno powiedzieć, kto ma rację, bo gdyby tak było, nie
byłoby tylu języków programowania.

Nie oczekuj od innych, że powiedzą Ci, jak masz żyć. To Twoje życie,
Twoje wybory i co dla jednego wpadką, dla innego sukcesem. Wszystko
zależy od nastawienia. Moje jest otwarte na nowe, a że udaje mi się
zwykle trafiać w ciekawe technologie/języki, nie obawiam się o własną
przyszłość znając Clojure. Na pewno poszerza horyzonty.

> Ogólnie Java jest językiem w którym można zrobić wszystko i należało by
> wskazać taką rzecz która w Javie jest za obszerna. Jakieś porównanie ile to
> trzeba się na główkować w Javie a w Clojure robi się to w prosty sposób i
> można się zająć innymi rzeczami.

Weźmy trywialne przechodzenie po liście. A teraz pomyśl, że to cały
strumień danych. Współbieżność. Zwartość kodu funkcyjnego jest nie do
przecenienia w porównaniu z obiektowym. Oba jednak mają swoje plusy i
minusy.