Byłem tam, gdzie jesteś i prawie się poddałem kilka razy. Chociaż w żadnym razie nie jestem ekspertem w dziedzinie programowania Scala, czuję, że teraz dobrze rozumiem ten język - z pewnością wystarczający, aby całkowicie zatruł mój związek z Javą.
Pierwszą rzeczą, którą zrobiłem, było spędzenie kilku tygodni na zabawie, czytaniu różnych blogów i wprowadzaniu do języka. To był błąd, nie nauczyłem się (a przynajmniej nie zrozumiałem) wiele pożytecznych rzeczy i czułem się całkowicie poza moimi głębinami.
Drugą rzeczą było poświęcenie czasu na wypracowanie problemu, który był technicznie prosty, ale zmusił mnie do samodzielnego zbadania określonych aspektów składni Scali:
Chociaż nie uczyniło mnie to z dnia na dzień ekspertem, wystarczająco dobrze znałem język, że nie było już tak niemożliwe.
Z tym wzrostem pewności siebie w końcu zrobiłem to, co powinienem był zacząć: zdobądź programowanie w Scali autorstwa Martina Oderskiego i staraj się czytać cały rozdział co kilka dni. Jest to dobrze napisana i kompleksowa książka, a jeśli masz już solidne doświadczenie programistyczne, nie powinna być zbyt zniechęcająca. Nie ma potrzeby, aby pierwsze czytanie było zbyt bolesne: pomiń części oznaczone jako opcjonalne, upewnij się, że rozumiesz pojęcia, ale nie zagłębiaj się w szczegóły (w szczególności uważam, że rozdziały dotyczące kolekcji są przesadzone i mogą być odtłuszczone). Wiedza o tym, że istnieje koncepcja i gdzie można przeczytać wyczerpujące wyjaśnienie jej działania, jest ogromną pomocą.
Alternatywą do czytania książki jest uczęszczanie na kurs Coursera - jest ona mniej kompleksowa, ale obejmuje większość kluczowych punktów i jest podzielona na logiczne, łatwe do zarządzania jednostki. Z drugiej strony nie wiem, czy można uzyskać dostęp do lekcji po zakończeniu zajęć, a także odkryłem, że byłem znacznie mniej zaangażowany w słuchanie kogoś (nawet kogoś tak inteligentnego i znającego się na rzeczy jak Martin Ordesky) niż podczas czytania książki.
Innym problemem związanym ze Scalą jest ilość słownictwa, którą musisz przyswoić - parametry według nazwy? do zrozumienia? zamknięcie? Jeśli czujesz się przytłoczony, odkryłem, że dobra mieszanka glosariusza Scala i przeszukiwania ukierunkowanych przepełnień stosu bardzo mi pomogły (poszukaj odpowiedzi Daniela Sobrala i Travisa Browna). Właściwie posunąłem się do stworzenia talii Anki z glosariuszem i uważam, że to była wielka pomoc.
Wreszcie jest to prawdopodobnie oczywiste, ale kod, kod, kod. Znajdź projekt poboczny, nad którym możesz popracować, nawet jeśli jest to coś trywialnego. To, co zrobiłem, to napisanie bardzo prostego robota Amazon, który wysyłałby mi tweeta za każdym razem, gdy autor, którego byłem zainteresowany, wydał nową książkę. Trwało to dłużej niż powinno, ale wtedy zakochałem się w tym języku.
Jeśli dojdziesz tak daleko, prawdopodobnie nie będziesz potrzebować dalszej pomocy, ale dobrym pomysłem, gdy tylko zrozumiesz język, jest głębsze zapoznanie się z podstawowymi pojęciami. Znasz OOP, spróbuj przeczytać o programowaniu funkcjonalnym - mogę powiedzieć z absolutną pewnością, że rozwali to Twój umysł. Programowanie funkcjonalne w Scali powinno wkrótce zostać wydane (ish), ale edycja wczesnego dostępu jest już doskonała. Inna odpowiedź sugeruje programowanie funkcjonalne dla programistów Java , z którym nie jestem zaznajomiony, ale jestem skłonny wierzyć, że jest dobry (kiedy książka O'Reilly nie była warta przynajmniej przejrzenia?).
Mam nadzieję, że nie stało się to zbyt długie i oczywiste, i szczerze życzę wszystkiego najlepszego. Scala ma swoje wady, ale jest to wspaniały język i poprowadzi twój mózg w kierunkach, o których istnieniu nie wiedziałeś. A za rok będę szukać twojego „Uczenia się Haskella, czując się zniechęcony” :)