Scala oczami praktyka

Scala oczami praktyka

Java, .NET, SQL to są technologie, o których słyszały nawet osoby mające tyle wspólnego z IT co Steven Seagal z kinem familijnym. W naszym nowym cyklu postanowiliśmy przyjrzeć się technologiom nie zaliczających się do mainstreamu, aczkolwiek od dobrych lat cieszących się niemałą popularnością. Nie chcemy wklejać formułek z Wikipedii, lecz przedstawiać punkt widzenia praktyków, którzy w możliwie w najbardziej przystępnym języku opiszą swoje zawodowe pasje. Na pierwszy ogień idzie język programowania Scala.

Około pięć lat temu rozmawiając z doświadczonymi programistami Java, często słyszałem, że ich kolejnym krokiem w karierze będzie praca w Scali. W głowie wyświetliła mi się wizja, że wkrótce jeden z najbardziej popularnych języków oprogramowania zostanie wyparty przez tajemniczo brzmiącą technologię. Czas pokazał, że z moimi przewidywaniami nie byłbym konkurencją dla wróżbity Macieja. Java żyje i ma się dobrze, ale Scala również skupia wokół siebie coraz więcej specjalistów.

Scala jest wieloparadygmatowym językiem programowania wysokiego poziomu. Przez to jest elastyczna i dzięki temu stwarza nowe możliwości programistom. – W Scali można pisać obiektowo, ale również funkcyjnie. Pozwala też rozwiązywać problemy pisząc zdecydowanie mniej kodu niż w innych językach, w których pracowałem. Mówi się często, że Scala to jest „gateway drug to Haskell”. Zaczyna się niewinnie od pisania w Scali jak w lepszej Javie, a kończy na szukaniu pracy w Haskell. Osobiście uważam, że język programowania to tylko narzędzie, a najważniejszy w całym procesie jest produkt. Mam bardzo pragmatyczne podejście do programowania i staram się używać bibliotek z największym wsparciem. – opowiadał nam Piotr, który w firmie Scalac jest Scala Developerem.

Nie jest też tak, że Scala jest naturalnym rozwinięciem Javy. Zdaniem Piotra jest ona wynikiem ewolucji, w którym udział brał również jej młodszy brat – Kotlin. Natomiast początkującemu programiście ciężko będzie się z marszu nauczyć Scali. To może przypominać chęć przepłynięcia dwóch długości basenu bez umiejętności utrzymania się na wodzie. – Osoby stawiające pierwsze kroki w programowaniu mogą mieć problem z nauką Scali. Nie sugeruję, że muszą najpierw rozpocząć nauczyć się Kotlina czy Javy. Ważna jest natomiast znajomość jakiegokolwiek innego języka programowania. Ja sam swoją przygodę z programowaniem rozpocząłem od C, potem pracowałem z C++, a kolejnym etapem była Scala. – przekonuje nasz rozmówca.

Wspomniana wyżej elastyczność Scali nie przekłada się na fakt, że w tym języku można napisać wszystko. Scala świetnie sprawdza się w Machine Learning, Data Science, czy Big Data. Narzędzie, którego się w tym ostatnim obszarze głównie używa, czyli Spark, jest napisane właśnie w Scali. A gdzie jeszcze możemy używać tego języka? – Duża część ofert pracy stanowią te stricte backendowe. Chyba nie spotkałem się jeszcze z ofertami dla programistów Scala.js (frontend). W Scali na pewno nie da się napisać wszystkiego. Na pewno odpadają aplikację na iOS oraz systemy wbudowane, które korzystają i będą korzystać z C/C++. – twierdzi Piotr. Ciekawostką jest, że Scalę wykorzystują lub wykorzystywały w swoich projektach tak znane organizacje jak Twitter, Linkedin, Apple, The Guardian, Zalando czy Airbnb.

Scala jest wciąż bardzo popularna wśród języków JVM (Java Virtual Machine). Wygodnie rozsiadła się w swojej niszy jaką są jej zastosowania we wspomnianych Machine Learning, Data Science i Big Data. Sukcesywnie wprowadza nowe wersje, ale zdaniem naszego rozmówcy to nie tylko świadczy o rozwoju tej technologii. – Przed Scalą stoi teraz bardzo duże wyzwanie – nowa struktura języka po wprowadzeniu Scala 3. Z tego co pamiętam to Python miał duże problemy, żeby przekonać programistów do migracji na wersję trzecią. Jak będzie ze Scalą? Zobaczymy – zastanawia się Piotr.

Programowanie w Scali z roku na rok zdobywa sobie coraz większą popularność. Świadczą o tym wyniki corocznych ankiet organizowanych przez portal Stackoverflow. Z nich wynika, że zainteresowanie Scalą sukcesywnie rośnie i jest alternatywną ścieżką rozwoju zawodowego dla specjalistów obiektowych języków programowania.