Szczegóły ebooka

Scala. Nauka programowania

Scala. Nauka programowania

Vikash Sharma

Ebook

Scala jest językiem programowania ogólnego przeznaczenia, który łączy cechy języków funkcyjnych i obiektowych. Jego twórcy postawili sobie za cel skalowalność napisanych w nim aplikacji - stąd wzięła się nazwa Scala. Scala jest oparta na wirtualnej maszynie Javy, umożliwia programowanie funkcyjne i oferuje bogaty wybór typów. Dzięki tym cechom można tworzyć kod mniej podatny na występowanie błędów w trakcie działania programu. Po uzyskaniu pewnej biegłości w kodowaniu praca z tym językiem staje się prawdziwą przyjemnością, nawet podczas tworzenia frameworków czy bibliotek.

Ten przystępny podręcznik przeznaczono dla programistów, którzy chcą poznać język Scala, aby wykorzystywać go do pisania współbieżnych, skalowalnych i reaktywnych aplikacji. Przedstawiono tu podstawy niezbędne do rozpoczęcia kodowania w Scali: składnię języka, podstawowe typy danych, literały czy zmienne. Następnie omówiono struktury danych w Scali i sposoby korzystania z funkcji wyższego rzędu. Zaprezentowano również takie koncepcje jak dopasowanie wzorca, klasy przypadku oraz zagadnienia związane z programowaniem funkcyjnym i programowaniem zorientowanym obiektowo. Opisano techniki programowania asynchronicznego i reaktywnego. Znalazło się tu także obszerne wprowadzenie do frameworka Akka.

W tej książce między innymi:

  • paradygmaty programowania a korzystanie ze Scali
  • kolekcje modyfikowalne i niemodyfikowalne
  • koncepcja domniemania i praca z wyjątkami
  • programowanie równoległe, asynchroniczne i reaktywne
  • programowanie sterowane testami w Scali

Scala: nowoczesność i prostota w każdej skali!


O autorze 9

O recenzencie 10

Wprowadzenie 11

Rozdział 1. Rozpoczęcie programowania w Scali 15

  • Wprowadzenie do Scali 15
    • Paradygmat programowania 16
    • Paradygmat zorientowany obiektowo kontra funkcyjny 17
    • Scala to język wielu paradygmatów 17
  • Zalety Scali 19
    • Działanie w JVM 19
    • Supersprytna składnia 19
    • Dwie pieczenie na jednym ogniu 20
    • Typ to podstawa 20
    • Łatwe programowanie równoległe 21
    • Kod działający asynchronicznie 21
    • Scala jest teraz dostępna również dla front-endu 21
    • Sprytnie działające środowiska IDE 22
    • Rozbudowany język 22
    • Pomoc techniczna w internecie 22
  • Praca z językiem Scala 22
    • Instalacja Javy 23
    • Instalacja SBT 23
    • Środowisko REPL Scali 23
    • Środowisko IDE Scali 24
  • Pierwszy program w Scali 25
  • Podsumowanie 27

Rozdział 2. Elementy konstrukcyjne w Scali 29

  • Co kryje się pod programem w Scali? 30
  • Słowa kluczowe val i var 31
  • Literał 32
    • Literał liczby całkowitej 33
    • Literał liczby zmiennoprzecinkowej 35
    • Literał wartości boolowskiej 36
    • Literał znaku 36
    • Literał ciągu tekstowego 37
    • Literał symbolu 38
    • Literał krotki 38
    • Literał funkcji 39
  • Typy danych 39
    • Hierarchia klas Scali 40
    • Klasa Any 41
    • Unit 44
    • Boolean 44
    • Null i Nothing 44
  • Inferencja typu 45
  • Operatory w Scali 46
    • Operatory arytmetyczne 48
    • Operatory relacji 49
    • Operatory logiczne 50
    • Operatory bitowe 50
    • Kolejność działań 51
  • Klasy opakowań 52
  • Interpolacja ciągu tekstowego 55
    • Interpolator s 55
    • Interpolator f 56
    • Interpolator raw 56
  • Podsumowanie 57

Rozdział 3. Nadanie kształtu programowi w Scali 59

  • Pętle 60
    • Pętla for 61
    • Pętla while 63
    • Pętla do-while 63
  • Wyrażenia for 64
    • Wyrażenia for yield 65
  • Rekurencja 66
    • Dlaczego rekurencja zamiast iteracji? 66
    • Ograniczenia rekurencji 67
    • Idealny sposób na utworzenie funkcji rekurencyjnej 67
  • Konstrukcje warunkowe 68
    • Konstrukcja if-else 69
  • Dopasowanie wzorca 70
  • Podsumowanie 72

Rozdział 4. Podział programu na funkcje 73

  • Składnia funkcji 74
    • Zagnieżdżanie funkcji 76
  • Wywołanie funkcji 77
    • Przekazywanie zmiennej liczby argumentów 78
    • Wywołanie funkcji wraz z wartością domyślną parametru 79
    • Wywoływanie funkcji wraz z nazwanymi argumentami 80
  • Literał funkcji 81
  • Strategie wywoływania funkcji 83
    • Wywoływanie po nazwie 83
    • Wywołanie po wartości 84
  • Funkcja częściowa 85
  • Podsumowanie 87

Rozdział 5. Kolekcje w Scali 89

  • Motywacja 89
  • Niemodyfikowalne i modyfikowalne kolekcje danych 91
    • Różnice między kolekcjami typu root i niemodyfikowalnymi 92
  • Hierarchia kolekcji w Scali 93
    • Cecha Traversable 96
    • Cecha Iterable 98
  • Kolekcje najczęściej używane w Scali 103
    • Kolekcja List 103
    • Kolekcja Map 104
    • Kolekcja SortedSet 105
    • Kolekcja Stream 106
    • Kolekcja Vector 106
    • Niemodyfikowalny stos 107
    • Niemodyfikowalna kolejka 108
    • Kolekcja Range 108
    • ArrayBuffer 109
    • Kolekcja ListBuffer 110
    • Kolekcja StringBuilder 110
    • Kolekcja Array 111
  • Bogate zestawy operacji przeprowadzanych w kolekcjach 111
  • Kolekcje równoległe w Scali 120
    • Kolekcja ParArray 120
    • Kolekcja ParVector 121
  • Konwersja kolekcji Javy na kolekcję Scali 122
  • Wybór kolekcji 123
  • Wydajność działania kolekcji 125
  • Podsumowanie 126

Rozdział 6. Podstawy programowania zorientowanego obiektowo w Scali 127

  • Klasa 128
    • Klasa abstrakcyjna 133
    • Klasy abstrakcyjne i cechy 134
    • Klasa final 134
  • Obiekt jako singleton 135
  • Obiekt towarzyszący 138
  • Klasa przypadku 140
  • Podsumowanie 145

Rozdział 7. Kolejne kroki w zorientowanej obiektowo Scali 147

  • Kompozycja i dziedziczenie 148
  • Dziedziczenie klas 150
    • Rozszerzanie klas 150
    • Podtyp kontra podklasa 151
    • Nadpisywanie danych i zachowania 152
    • Ograniczenie dziedziczenia - słowo kluczowe final 154
    • Łączenie dynamiczne podczas wywoływania funkcji 154
    • Niewłaściwe użycie dziedziczenia 156
  • Konstruktory domyślne i parametryzowane 157
  • Cecha 159
  • Cecha jako domieszka 162
    • Cecha jako możliwa do łączenia domieszka 162
    • Cechy jako modyfikacje kaskadowe 165
  • Liniowość 168
  • Pakowanie i importowanie 170
    • Polecenie package 171
    • Wiele poleceń package w pliku 171
    • Zagnieżdżone polecenia package 172
    • Łączenie poleceń package 173
    • Import pakietów 174
  • Reguły widoczności 176
  • Cecha zapieczętowana 179
  • Podsumowanie 180

Rozdział 8. Więcej informacji o funkcjach 181

  • Literał funkcji 182
  • Metoda 185
  • Funkcja kontra metoda 188
    • Metoda czy funkcja? 190
  • Czym jest domknięcie? 192
  • Funkcje wyższego rzędu 194
  • Rozwinięcie funkcji 199
    • Konwersja funkcji wraz z wieloma parametrami na postać rozwiniętą 201
  • Funkcja zastosowana częściowo 201
  • Podsumowanie 204

Rozdział 9. Potężne konstrukcje funkcyjne 205

  • Wyrażenia for 206
  • Dopasowanie wzorca 209
  • Różne sposoby na dopasowanie wzorca 210
    • Dopasowanie zmiennej 210
    • Dopasowanie stałej 211
    • Dopasowanie konstruktora 211
  • Typ Option 215
  • Obliczanie z opóźnieniem 216
  • Optymalizacja wywołania ogonowego 217
  • Agregatory 219
  • Parametryzacja typu 220
  • Podsumowanie 222

Rozdział 10. Zaawansowane programowanie funkcyjne 223

  • Dlaczego typy są tak ważne? 224
  • Parametryzacja typu 226
  • Ogólna klasa i cecha 227
  • Nazwa parametru typu 228
  • Typ kontenera 228
  • Likwidacja typu 229
  • Wariancja w dziedziczeniu 230
    • Kiedy używać relacji typu wariancji? 234
  • Typ abstrakcyjny 234
  • Granice typu 239
  • Typ abstrakcyjny kontra parametryzowany 241
  • Klasa typu 243
  • Podsumowanie 244

Rozdział 11. Koncepcja domniemania i praca z wyjątkami 245

  • Obsługa wyjątków w stary sposób 246
  • Użycie rozwiązania opartego na typie Option 247
  • Konstrukcja Either 250
  • Koncepcja domniemania 252
  • Parametr domniemany 254
  • Metoda domniemana 255
  • Konwersja domniemana 256
  • Wyszukiwanie wartości domniemanych 260
  • Klasy typów 262
  • Podsumowanie 264

Rozdział 12. Wprowadzenie do pakietu Akka 265

  • Dlaczego powinieneś zainteresować się pakietem Akka? 266
  • Co to jest model aktora? 267
  • Poznajemy system aktorów 269
  • Obiekt Props 271
  • Ścieżki i odwołania do aktora 271
  • Wybór istniejącego odwołania za pomocą metody actorSelection() 272
  • Cykl życiowy aktora 273
  • Rozpoczęcie pracy z pakietem Akka 274
    • Przygotowanie środowiska 274
  • Utworzenie pierwszego aktora 279
  • Metody typu powiedz kontra poproś kontra przekaż 284
  • Zatrzymanie aktora 287
  • Zaczepy preStart i postStop 288
  • Komunikacja aktorów za pomocą wiadomości i ich semantyka 288
  • Strategia nadzoru aktorów 289
  • Strategia OneForOne kontra AllForOne 290
  • Domyślna strategia nadzorcy 292
  • Zastosowanie strategii nadzoru 292
  • Testowanie aktorów 295
  • Podsumowanie 298

Rozdział 13. Programowanie równoległe w Scali 299

  • Programowanie równoległe 300
  • Podstawowe bloki współbieżności 300
    • Poznajemy proces i wątek 301
    • Blokady i synchronizacja 302
    • Egzekutor i ExecutionContext 306
  • Programowanie asynchroniczne 309
    • Koncepcja wartości typu Future w Scali 309
    • Obsługa wyniku operacji asynchronicznej 313
    • Dlaczego nie należy łączyć dwóch lub więcej operacji asynchronicznych? 314
    • Obietnica 316
  • Kolekcja równoległa 318
  • Podsumowanie 320

Rozdział 14. Programowanie z użyciem rozszerzeń reaktywnych 321

  • Programowanie reaktywne 322
  • Rozszerzenia reaktywne 325
  • Reaktywność i RxScala 328
    • Utworzenie obiektu obserwowalnego 329
  • Podsumowanie 336

Rozdział 15. Testowanie kodu w Scali 337

  • Co to jest podejście TDD i dlaczego powinieneś je stosować? 338
  • Proces stosowany w podejściu TDD 338
    • Krok 1. - zdefiniowanie testu zakończonego niepowodzeniem 339
    • Krok 2. - utworzenie pewnego kodu pozwalającego na zaliczenie testu 339
    • Krok 3. - refaktoryzacja kodu mająca na celu poprawę jego jakości 339
    • Krok 4. - powtórzenie kroków od 1. do 3. 339
    • Zastosowanie podejścia BDD 342
  • Biblioteka ScalaTest 342
    • Przygotowanie do testów 343
    • Style testowania za pomocą ScalaTest 346
  • ScalaMock - natywna biblioteka obiektów imitacji 352
  • Podsumowanie 354

Skorowidz 355

  • Tytuł: Scala. Nauka programowania
  • Autor: Vikash Sharma
  • Tytuł oryginału: Learning Scala Programming
  • Tłumaczenie: Robert Górczyński
  • ISBN: 978-83-283-4797-7, 9788328347977
  • Data wydania: 2019-02-18
  • Format: Ebook
  • Identyfikator pozycji: scalan
  • Wydawca: Helion