Język programowania Scala
NIE MARNUJ ŻYCIA NA INNE
Scala to niezwykły, hybrydowy język programowania. Możesz zatopić się w niezwykłym świecie programowania funkcyjnego, pozostać programistą zorientowanym na obiekty, albo wymieszać oba światy czerpiąc z nich to co najlepsze dla Ciebie. Nie znam innego języka programowania, który zaoferuje Ci taką elastyczność, wygodę, zwięzłość i możliwości.
W Akademii Scali, zdobędziesz wiedzę potrzebną do swobodnego używania tego języka programowania,
poznasz również najpopularniejsze frameworki i biblioteki, które ułatwią i uprzyjemnią Twoją codzienną pracę.
Co nieco o Scali
Przygotowałem dla Ciebie kilka artykułów, które wprowadzą Cię w świat Scali, podstaw języka funkcyjnego i najpopularniejszych bibliotek używanych w tym ekosystemie. Na tym etapie nie jest tego dużo, ale to dopiero początek.
Z każdym kolejnym miesiącem materiałów będzie przybywać. O czym będą konkretnie zależy w dużej mierze od Ciebie. Odezwij się i daj znać które zagadnienia najbardziej Cię interesują i o czym chcesz poczytać. Na pewno wezmę to pod uwagę.
15 powodów dla których warto poznać Scalę
Java.
Zawsze chciałem wejść w świat Javy. Nie interesował mnie jednak sam język (który nigdy do mnie nie przemawiał), ale cały ten ekosystem. Mnóstwo firm na całym świece, płaci gigantyczne pieniądze za oparte na nim rozwiązania. Kto z nas nie lubi dobrze zarabiać?
Kilkanaście lat temu na scenie pojawiła się Scala. Język, który pozwalał importować biblioteki Javowe jak własne.
Do tego język piękny, trochę egzotyczny jednakże pozwalający zanurzyć się w pełni w tym niezwykłym ekosystemie, nie tylko nie tracąc żadnej z możliwości Javy, a wręcz przeciwnie, zyskując całą masę innych.
Programowanie funkcyjne.
Który programista w dzisiejszych czasach nie tworzy przynajmniej od czasu do czasu aplikacji wielowątkowych?
Ciągła walka, by okiełznać pamięć, zmienne, by nic z zewnątrz nie zakłóciło naszej procedury. I nagle objawia się piękno języka funkcyjnego.
Możemy wykonać, długą, skomplikowaną operację, która jest całkowicie bezpieczna z punktu widzenia aplikacji wielowątkowej.
Wszystkie użyte wartości są niezmienne, nic nam nie przeszkadza, nie zakłóca przepływu danych. Do tego jest czytelne i logiczne.
Więcej o programowaniu funkcyjnym w Scali piszę tutaj.
I nie tylko programowanie funkcyjne.
Tutaj objawia się piękno Scali. Jeśli obawiasz się programowania funkcyjnego, nie do końca to czujesz i chcesz poruszać się małymi kroczkami, a jednocześnie pragniesz zacząć pisać kod od samego początku nauki bazując na swojej wiedzy z innych języków, nic nie stoi Ci na przeszkodzie.
Możesz używać świetnie znanych konstrukcji: if, for, while, to wszystko tu jest i tylko czeka, żeby wykonać swoją robotę.
Wszystko, co wiesz o programowaniu obiektowym, również się przyda, choć poznasz mnóstwo nowych rozwiązań.
Składnia.
Składnia Scali jest bardzo spójna i elegancka. Często słyszę, że można w niej napisać bardzo nieczytelny i brzydki kod. Oczywiście, że można, ale w którym języku się nie da? Wszystko zawsze zależy od naszych chęci i umiejętności.
Pattern Matching (match).
Komenda "match", nabiera w Scali całkowicie nowego znaczenia.
Jest to niewiarygodnie potężne narzędzie, mające możliwości, z jakimi nie spotkałem się w innych językach.
Pozwala testować przekazane obiekty po typach, po wartościach, po fragmentach wartości, z użyciem wyrażeń regularnych. Otrzymujemy niemal nieograniczony wachlarz możliwości.
Kreowanie logiki kodu staje się o wiele prostsze, a sam kod dużo bardziej przejrzysty i czytelny.
Case class.
Posiada większość możliwości zwykłej klasy ale służy głównie do przechowywanie niezmiennych danych (nie jest to wymóg). Konstrukcja ta jest doskonale "rozkładana" przez opisywany wcześniej mechanizm pattern
matching.
Jest to też jedno z jej podstawowych zastosowań. Oprócz tego jest to bardzo poręczne narzędzie do bardzo prostego (i szybkiego) tworzenia struktur danych.
REPL.
Narzędzie, w którym możemy ewoluować kod Scali bezpośrednio z konsoli, co często bardzo ułatwia naszą pracę. Daje też niesamowitego kopa na etapie nauki Scali. Możliwość błyskawicznego przetestowania zachowania fragmentu kodu co do którego mamy wątpliwości jest nie do przecenienia.
Aha... I tak, Scala ma to od początku ;) (Tak, wiem, że Python również.)
Actors / Futures.
Scala ma fenomenalnie rozwiązane mechanizmy pracy asynchronicznej i wszystko to jest wbudowane w biblioteki standardowe.
Połączenie programowania funkcyjnego z bibliotekami takimi jak Akka, daje nam w wyniku potężne narzędzie, do budowania ogromnych, skalowalnych rozwiązań backendowych.
Kolega, który tworzy na codzień projekty w Erlangu (tak są jeszcze tacy), był zachwycony możliwościami Scali.
Więcej o podstawach Akki dowiesz się w tym wpisie.
Typowanie statyczne.
Scala jest językiem typowanym statycznie, ale no właśnie, ale często tak nie wygląda, no bo np. można napisać:
// można tak val x: Int = 12 // można również tak val x = 12
Kompilator sam rozpozna typ i będzie się go trzymał. UWIELBIAM to.
Lazy (Scala potrafi być leniwa).
Takie małe a cieszy. Stała zdefiniowana jako lazy, nie zostanie fizycznie wyliczona, do czasu jej faktycznego użycia.
Jeśli np. wyliczasz ją w jakiś skomplikowany sposób, a jednocześnie, w wyniku działania algorytmu w danym przebiegu nie jest używana, wówczas, nie zmarnujesz czasu procesora.
No more null (Use OPTION Luke).
Jeśli używasz zmiennej (albo zwracasz z funkcji wartość), która mogłaby być nullem, zamiast tego używasz Option. Śliczne, eleganckie rozwiązanie. Później w kodzie możesz użyć np. match do sprawdzenia stanu:
val a: Option[String] = None a match { case None => stała jest niezdefiniowana, zrób coś z tym case Some(value) => stała ma wartość value }
Wiele klas w jednym pliku.
Niektóre języki programowania, wymagają, aby w jednym pliku była zdefiniowana tylko jedna klasa (np. Java pozwala na tylko jedną klasę publiczną). Być może tym, którzy od lat pracują w ten sposób to nie przeszkadza. Ja jednak nigdy nie mogłem się przyzwyczaić do tego ograniczenia.
Na szczęście Scala nie jest restrykcyjna w tym temacie. Możemy trzymać tak dużo logiki w jednym pliku jak tylko jest nam to wygodne i potrzebne.
SBT.
Nazwa to akronim od Scala Build Tool. Jeśli można coś Scali zarzucić, to długość kompilacji kodu. SBT, robi to w sposób inteligentny i kompiluje jedynie te kawałki kodu, które faktycznie skompilować trzeba, przez co wielokrotnie przyspiesza operację budowania, czy testowania.
SBT, to nie tylko narzędzie do budowania, to bardzo rozbudowany kombajn, wymagający dokładniejszego poznania. Natomiast co faktycznie jest jego wielkim minusem, to wysokie skomplikowanie metody konfiguracji i tworzenia skryptów budujących naszą aplikację.
Praca.
Czy jest praca dla programistów języka programowania Scala?
Z roku na rok coraz więcej.
Nie udało mi się zdobyć aktualnych danych, ale zgodnie z tym artykułem, od stycznia 2012 do lipca 2016 ilość ofert pracy dla Scali wzrosła o 474%, w tym samym okresie, ilość ofert pracy dla programistów Java spadła o 36%.
Pamiętajcie, że to tylko %, ale różnica w dynamice jest olbrzymia. Niestety serwis indeed.com, nie umożliwia już generowania trendów, nie jestem więc w stanie zaktualizować tej statystyki.
Przyjemność.
Na sam koniec, pozwolę sobie napisać, iż kodowanie w Scala sprawia mi po prostu olbrzymią przyjemność.
Bardzo nie lubię cofać się do moich starszych projektów i używać w pracy innych języków.
Na szczęście coraz więcej z nich jest właśnie migrowanych do Scali i jest to krok w zdecydowanie najlepszym możliwym kierunku.
Chcesz Nauczyć Się Scali?
Jestem tutaj, by Ci pomóc.