20 maja 2013

Moje pierwsze kroki w programowaniu funkcyjnym w Scali na 115 spotkaniu Warszawa JUG

Jutro, wtorek, 21.05.2013 o godz. 18:00 w sali 3180 w budynku wydziału MIM UW na Banacha 2 odbędzie się stopiętnaste (115) spotkanie Warszawa Java User Group, na którym przedstawię temat Moje pierwsze kroki w programowaniu funkcyjnym w Scali.

Link do rejestracji i miejsca, w którym można podyskutować o spotkaniu (przed, w trakcie i po) znajduje się na stronie spotkania.

Poniżej rozwinąłem temat mojego wystąpienia, ale uważam, że użycie "moje", "pierwsze kroki" oraz "programowanie funkcyjne w Scali" mówią same za siebie i dalsza lektura to...strata czasu.

Skoro jednak nalegasz...

Kurs "Functional Programming Principles in Scala" na Coursera dobiega końca i przez ostatnie 7 tygodni intensywnie mnie absorbował. Do tego stopnia, że pozwoliłem sobie na stosunkowo regularne zarywanie nocek w poszukiwaniu rozwiązań (!) Bolało.

Po szkoleniu "Scala i programowanie funkcyjne" Grześka Balcerka wiedziałem, że nauka nowego języka Scala i jego połączenia programowania obiektowego z funkcyjnym nie będzie lekka i pewnie dlatego postanowiłem zintensyfikować wysiłki, aby po początkowych trudach, ostatecznie poczuć klimaty nowego języka. Równocześnie uzupełniałem wiedzę lekturą pisanej właśnie książki "Functional Programming in Scala" z Manning. Rzuciłem na moment programowanie funkcyjne w Clojure na rzecz Scali, aby w ten zaowalowany sposób przeprowadzić kilku śmiałków w świat...Clojure (to taki mój "tajny" plan).

Mając pewne doświadczenie z programowaniem funkcyjnym w Clojure i F#, większość problemów nie była trudna intelektualnie, ale nowa składnia oraz niektóre problemy spędzały mi sen z powiek na długie godziny. Najbardziej zaskoczył mnie brak umiejętności przejścia z programowania funkcyjnego w Clojure na idiomatyczny kod w Scali, który łączył elementy programowania funkcyjnego z obiektowym, w którym typy miały niebagatelne znaczenie (na wzór F#, co pomagało). Najpierw trzeba mi było zapomnieć o OO w Javie na rzecz Clojure, a teraz ponownie OO z FP w wykonaniu Scali. Nie było lekko.

Nowy język to nowe konstrukcje, narzędzia, sposób myślenia i pewnie kilka innych rzeczy. Swoje dokonania opisywałem względnie na bieżąco na swoich blogach, a tym razem skorzystałem z okazji, aby przedstawić moje doświadczenia na żywo. Podczas prezentacji chciałbym zademonstrować mój własny warsztat poznawczy Scali (Sublime Text 2, sbt, Scala REPL, git) oraz sposoby rozwiązywania niektórych problemów programistycznych w Scali, które miałem okazję spotkać w kursie na Coursera.

Będzie trochę slajdów. Będzie trochę programowania na żywo. I będzie w końcu kilka spostrzeżeń, którymi chciałbym zachęcić do wymiany doświadczeń między uczestnikami. Nie sądzę, aby brakowało chętnych do poznania języka Scala oraz samego paradygmatu funkcyjnego, więc dyskusji spodziewam się całkiem sporo. Taki mam plan. Przyjdź i pomóż mi go zrealizować!