Szkolenie: Nowoczesne programowanie w języku Scala
Podczas szkolenia "Nowoczesne programowanie w języku Scala" uczestnicy poznają możliwości języka, jak również nauczą się tworzyć mikroserwisy w tym języku. Scala, to język, który łączy programowanie funkcyjne z obiektowym, jest również szeroko stosowany w narzędziach Big Data.
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:3 dni (24h)
Kod kursu:SCALA/J
Nowoczesne programowanie w języku Scala
Cele szkolenia
Poznanie możliwości języka Scala, dobrych praktyk programowania oraz polecanych narzędzi i bibliotek, z uwzględnieniem nowości wprowadzonych do Scali 3
Nabycie umiejętności tworzenia prostych mikroserwisów w języku Scala
Dla kogo?
Programiści zainteresowani budową aplikacji z wykorzystaniem języka i ekosystemu Scala lub tematyką programowania funkcyjnego
Zalety
Przekrojowe omawianie zagadnień oraz przykłady oparte o życiowe problemy
Forma warsztatowa, wiele zadań z przygotowanymi testami, które pozwalają na szybką weryfikację poprawności rozwiązania
Praktyczna wiedza uwzględniająca zmiany wprowadzone w najnowszych wydaniach Scali
Poznanie popularnych bibliotek i narzędzi pozwalających tworzyć pełnoprawne aplikacje od zera w języku Scala
Wymagania
Znajomość programowania obiektowego
Doświadczenie w programowaniu w języku Java lub innym podobnym
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Konfiguracja środowiska i pierwszy program
Interpreter (REPL)
IDE
Omówienie podstaw związanych ze stylem kodu w Scali
Pierwszy program
Tworzenie i zarządzanie projektem programistycznym przy pomocy Simple Build Tool (SBT)
Podstawy programowania obiektowego w Scali
Typy standardowe
Klasy i cechy (traits)
Obiekty
Typy opcjonalne
Dziedziczenie
Pola mutowalne i niemutowalne
Kontrola widoczności
Case class i obiekty towarzyszące
Enumeracje a algebraiczne typy danych
Typy generyczne i klasy wariancji
Inferencja typów
Union / Intersection Types
Opaque Types
Własne operatory
Kolekcje dostępne w Scali oraz podstawy programowania funkcyjnego
Tablice
Kolekcje w bibliotece standardowej - listy, zbiory i mapy
Funkcje wyższego rzędu
Rozwijanie funkcji (currying)
Kolekcje mutowalne i niemutowalne
Zakresy (Range)
Popularne operacje na kolekcjach (tail, head, zip itp)
Obsługa wyjątków
W stylu obiektowym (try/catch)
W stylu funkcyjnym (Try/Success/Failure)
Zagadnienia programowania funkcyjnego
Instrukcja for - for loop/for comprehension
Funkcyjne struktury danych
Monoid / Monada
Dopasowanie wzorców - Pattern matching
Dopasowanie warunkowe - Pattern Guards
Dopasowanie po typie i sealed classes
Ekstraktory
Leniwość (lazy val)
Klasy, metody i parametry domniemane (Implicits)
Współbieżność / asynchroniczność
Wywołania asynchroniczne (futures and promises)
Kontekst uruchomienia (execution context)
Strumienie
Metaprogramowanie
Modyfikator inline
Przegląd możliwości tworzenia makr
Adnotacje
Refleksja
Wytwarzanie aplikacji
Dołączanie bibliotek do projektu programistycznego
Integracja z kodem Javy
Cats - rozszerzenia do programowania funkcyjnego
ZIO - wsparcie programowania asynchronicznego i współbieżnego typu I/O
Doobie - funkcyjna nakładka na JDBC
Integracja biblioteki Jackson w Scali vs biblioteka Circe
Http4s - budowanie mikroserwisów RESTowych w Scali
Testowanie aplikacji
ScalaTest, ScalaCheck
Mockowanie
ScalaTest DSL
ScalaTest matchers