09 lipca 2010

Clojure ponownie na tapecie - jest nowa książka, jest oferta projektu, pozostaje zestawić IDE

Logo Clojure
Jest wiele języków funkcyjnych (na myśl przychodzą chociażby Lisp czy Haskell) i niemało z nich doczekało się odpowiedników działających na wirtualnej maszynie Javy. Mnie zainteresował jeden - Clojure. I trudno powiedzieć dlaczego, ale ma to coś, co sprawia, że mimo moich trudności w myśleniu funkcyjnym, chce mi się go nauczyć. Na razie moje "chce" nie wyszło poza ramy faktycznego "chce", więc jedynie od czasu do czasu coś tam sobie poczytam, czy skrobnę.

Tydzień przed Javarsovią 2010 w księgarniach pojawiła się nowa pozycja o tym języku - Practical Clojure od Apressu. Pamiętam ten dzień, kiedy publikując recenzję na Amazonie zobaczyłem, że ta książka już jest. Postanowiłem ją zdobyć i napisałem do wydawnictwa. Jeszcze tego samego dnia, otrzymałem odpowiedź:

Hey Jacek,

You got it, where would you like the book to be shipped?

Simon Yu
Apress | friends of ED
Public Relations Assistant
Apress


I już ją mam u siebie. Część mojej duszy odpowiedzialna za posiadanie jest już usatysfakcjonowana :]

2 dni temu dostałem wiadomość:

Witaj,

widzialem ze interesujesz sie Clojure, a wlasnie chcialbym zaczac pisac projekt w tym jezyku, tylko szukam kogos kto moglby mi pomoc (oczywiscie nie charytatywnie). Czy masz czas i checi?

Pozdrawiam,
Wojtek


Stwierdziłem, że prośba dotyczy nauki języka, więc bez wahania odpowiedziałem:

Cześć Wojtku,

Czas i chęci to nie problem, bo tego mam wystarczająco wiele, aby się podzielić, jednakże w tym konkretnym przypadku na niewiele by się to zdało - sam poznaję Clojure, a największym problemem nie jest sam język, ale funkcyjne myślenie, którego mi brakuje. Jak widzisz, nie mogę tym samym pomóc Ci, bo składnia języka to prosta sprawa do nauki, jak mniemam.

Jacek


Kilka kolejnych maili i wiedziałem, jak bardzo się myliłem, sądząc, że moja rola miałaby sprowadzić się do roli nauczyciela. Okazało się, że temat dotyczy projektu, który miałby być realizowany z udziałem Clojure i Vaadina:

Jestem w trakcie tworzenia softu do komunikacji w firmie - taki basecamp na sterydach. W tej chwili mam to napisane w Pythonie/Django i jQuery ale rozwazam przejscie na Clojure i Vaadin. Tyle ze zanim sie na to zdecyduje to musze tego Vaadina potestowac (na dniach to pewnie zrobie) no i znalezc kogos kto bedzie mogl pisac ze mna bo chce to zakonczyc w sensownym czasie i wypuscic na rynek (juz mam w paru krajach dograna dystrybucje itp). Jest na to budzet, nie jakis kosmiczny ale jest, no i mozna mowic tez o opcjach na akcje przy dluzszej wspolpracy.

Interesujące, co? Czekam na wymagania funkcjonalne i wtedy okaże się, gdzie byłaby rola dla Clojure i mnie. Gdyby projekt wypalił, byłbym w pierwszym rzędzie, aby się do niego przyłączyć. To byłby mój pierwszy funkcyjny projekt z Clojure. Super!

I znowu myślami przy Clojure, więc rozejrzałem się po grupie dyskusyjnej użytkowników Clojure, aby rozeznać się, jak to teraz stan rozwoju Clojure wygląda. Jakby na żądanie, Sebastian "pedro" Pietrowski pisał o wydaniu Compojure 0.4.0 w swoich podsumowaniach tygodnia - Pedro Newsletter 08.07.2010, więc od razu pobrałem go do przejrzenia kodów źródłowych (nota bene, fajne są te tygodniówki od Pedro - już kilkukrotnie okazały się nieocenione w rozeznaniu się, co nowego w okolicy). Nie tak dawno pobrałem nową wersję Eclipse Helios (3.6), więc postanowiłem dograć do niego wtyczkę Counterclockwise, która udostępnia obsługę Clojure w Eclipse. Instalacja jest niezwykle trywialna - wystarczy wskazać na repozytorium z wtyczką i tyle. Więcej w Getting Started with Eclipse and Counterclockwise.

Clojure w Eclipse z Counterclockwise
Jest możliwość stworzenia nowego projektu z Clojure, są edytory z podświetlaniem składni i jest możliwość uruchamiania programów w Clojure REPL. W zasadzie jest wszystko, aby zacząć swoją przygodę ze światem programowania funkcyjnego z Clojure i Javą.

A pamiętam, jak opierałem się nauce programowania funkcyjnego na studiach. Teraz miałbym prościej...