Mądrzy ludzie mawiają, że szanujący się programista powinien poznawać jeden język rocznie. Jako, że uznaję takie podejście za populizm i sztukę dla sztuki zatem nie stosowałem się do tego. Zresztą chyba słusznie, bo patrząc na to z perspektywy mojego prawa jazdy. Skoro mam mieć dla samego Miecia to Miecio może poczekać.
Z drugiej strony po 4Developers, coś mnie wzięło i zacząłem się przymierzać do ScaliW. Język jest fajny i po pierwszych oględzinach stwierdzam, że istnieje szansa na wykorzystanie go w najbliższej przyszłości.
Co mnie zaskoczyło to dość ciekawe funkcjonalności. Przede wszystkim mamy cztery rodzaje „klas”. class znane z javy i działające mniej więcej na tej samej zasadzie. trait coś pomiędzy interfejsem, a klasą abstrakcyjną, ale bardziej interfejs. case class czyli pewien rodzaj kompromisu pomiędzy klasami abstrakcyjnymi, a konkretnymi. Oraz najciekawszy jak na razie dla mnie element. object, czyli rodzaj klasy, która w ramach JVM zawsze jest singletonem.
Niemiłym zaskoczeniem jest brak możliwości implementowania wielu interfejsów i generalnie „ograniczenie umysłowe” w tej dziedzinie. Scala zakłada, że wszystko jest obiektem, a zatem implementacja interfejsu nie ma sensu i co ważniejsze łamie zasadzę pojedynczego dziedziczenia.
Kolejna ciekawostka to składnia. Jest dość swobodna, ale dzięki temu można stworzyć wiele elementów DSLaW. Zatem zapis ala karm kot pozwala młotom z managmentu na pisanie prostych programów.
Sam proces pisania w Scali jest dość przyjemny. Maven posiada odpowiednio zdefiniowany archetyp, który skonfiguruje nam potrzebne elementy środowiska. Niestety plugin do Eclipsa spisuje się średnio.

Jak na razie zapowiada się ciekawy okres. Postaram się stworzyć jakiś prosty DSL i zaprezentować wam jak można go używać. Oczywiście przy okazji na blogu dodałem już odpowiednie kategorie, więc zapewne wpisów o Scali będzie więcej.