Scala. Nauka programowania – Vikash Sharma

42.21

Description

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 Scalikolekcje modyfikowalne i niemodyfikowalnekoncepcja domniemania i praca z wyjątkamiprogramowanie równoległe, asynchroniczne i reaktywneprogramowanie sterowane testami w ScaliScala: nowoczesność i prostota w każdej skali!Spis treści:O autorze 9O recenzencie 10Wprowadzenie 11Rozdział 1. Rozpoczęcie programowania w Scali 15Wprowadzenie do Scali 15Paradygmat programowania 16Paradygmat zorientowany obiektowo kontra funkcyjny 17Scala to język wielu paradygmatów 17Zalety Scali 19Działanie w JVM 19Supersprytna składnia 19Dwie pieczenie na jednym ogniu 20Typ to podstawa 20Łatwe programowanie równoległe 21Kod działający asynchronicznie 21Scala jest teraz dostępna również dla front-endu 21Sprytnie działające środowiska IDE 22Rozbudowany język 22Pomoc techniczna w internecie 22Praca z językiem Scala 22Instalacja Javy 23Instalacja SBT 23Środowisko REPL Scali 23Środowisko IDE Scali 24Pierwszy program w Scali 25Podsumowanie 27Rozdział 2. Elementy konstrukcyjne w Scali 29Co kryje się pod programem w Scali? 30Słowa kluczowe val i var 31Literał 32Literał liczby całkowitej 33Literał liczby zmiennoprzecinkowej 35Literał wartości boolowskiej 36Literał znaku 36Literał ciągu tekstowego 37Literał symbolu 38Literał krotki 38Literał funkcji 39Typy danych 39Hierarchia klas Scali 40Klasa Any 41Unit 44Boolean 44Null i Nothing 44Inferencja typu 45Operatory w Scali 46Operatory arytmetyczne 48Operatory relacji 49Operatory logiczne 50Operatory bitowe 50Kolejność działań 51Klasy opakowań 52Interpolacja ciągu tekstowego 55Interpolator s 55Interpolator f 56Interpolator raw 56Podsumowanie 57Rozdział 3. Nadanie kształtu programowi w Scali 59Pętle 60Pętla for 61Pętla while 63Pętla do-while 63Wyrażenia for 64Wyrażenia for yield 65Rekurencja 66Dlaczego rekurencja zamiast iteracji? 66Ograniczenia rekurencji 67Idealny sposób na utworzenie funkcji rekurencyjnej 67Konstrukcje warunkowe 68Konstrukcja if-else 69Dopasowanie wzorca 70Podsumowanie 72Rozdział 4. Podział programu na funkcje 73Składnia funkcji 74Zagnieżdżanie funkcji 76Wywołanie funkcji 77Przekazywanie zmiennej liczby argumentów 78Wywołanie funkcji wraz z wartością domyślną parametru 79Wywoływanie funkcji wraz z nazwanymi argumentami 80Literał funkcji 81Strategie wywoływania funkcji 83Wywoływanie po nazwie 83Wywołanie po wartości 84Funkcja częściowa 85Podsumowanie 87Rozdział 5. Kolekcje w Scali 89Motywacja 89Niemodyfikowalne i modyfikowalne kolekcje danych 91Różnice między kolekcjami typu root i niemodyfikowalnymi 92Hierarchia kolekcji w Scali 93Cecha Traversable 96Cecha Iterable 98Kolekcje najczęściej używane w Scali 103Kolekcja List 103Kolekcja Map 104Kolekcja SortedSet 105Kolekcja Stream 106Kolekcja Vector 106Niemodyfikowalny stos 107Niemodyfikowalna kolejka 108Kolekcja Range 108ArrayBuffer 109Kolekcja ListBuffer 110Kolekcja StringBuilder 110Kolekcja Array 111Bogate zestawy operacji przeprowadzanych w kolekcjach 111Kolekcje równoległe w Scali 120Kolekcja ParArray 120Kolekcja ParVector 121Konwersja kolekcji Javy na kolekcję Scali 122Wybór kolekcji 123Wydajność działania kolekcji 125Podsumowanie 126Rozdział 6. Podstawy programowania zorientowanego obiektowo w Scali 127Klasa 128Klasa abstrakcyjna 133Klasy abstrakcyjne i cechy 134Klasa final 134Obiekt jako singleton 135Obiekt towarzyszący 138Klasa przypadku 140Podsumowanie 145Rozdział 7. Kolejne kroki w zorientowanej obiektowo Scali 147Kompozycja i dziedziczenie 148Dziedziczenie klas 150Rozszerzanie klas 150Podtyp kontra podklasa 151Nadpisywanie danych i zachowania 152Ograniczenie dziedziczenia – słowo kluczowe final 154Łączenie dynamiczne podczas wywoływania funkcji 154Niewłaściwe użycie dziedziczenia 156Konstruktory domyślne i parametryzowane 157Cecha 159Cecha jako domieszka 162Cecha jako możliwa do łączenia domieszka 162Cechy jako modyfikacje kaskadowe 165Liniowość 168Pakowanie i importowanie 170Polecenie package 171Wiele poleceń package w pliku 171Zagnieżdżone polecenia package 172Łączenie poleceń package 173Import pakietów 174Reguły widoczności 176Cecha zapieczętowana 179Podsumowanie 180Rozdział 8. Więcej informacji o funkcjach 181Literał funkcji 182Metoda 185Funkcja kontra metoda 188Metoda czy funkcja? 190Czym jest domknięcie? 192Funkcje wyższego rzędu 194Rozwinięcie funkcji 199Konwersja funkcji wraz z wieloma parametrami na postać rozwiniętą 201Funkcja zastosowana częściowo 201Podsumowanie 204Rozdział 9. Potężne konstrukcje funkcyjne 205Wyrażenia for 206Dopasowanie wzorca 209Różne sposoby na dopasowanie wzorca 210Dopasowanie zmiennej 210Dopasowanie stałej 211Dopasowanie konstruktora 211Typ Option 215Obliczanie z opóźnieniem 216Optymalizacja wywołania ogonowego 217Agregatory 219Parametryzacja typu 220Podsumowanie 222Rozdział 10. Zaawansowane programowanie funkcyjne 223Dlaczego typy są tak ważne? 224Parametryzacja typu 226Ogólna klasa i cecha 227Nazwa parametru typu 228Typ kontenera 228Likwidacja typu 229Wariancja w dziedziczeniu 230Kiedy używać relacji typu wariancji? 234Typ abstrakcyjny 234Granice typu 239Typ abstrakcyjny kontra parametryzowany 241Klasa typu 243Podsumowanie 244Rozdział 11. Koncepcja domniemania i praca z wyjątkami 245Obsługa wyjątków w stary sposób 246Użycie rozwiązania opartego na typie Option 247Konstrukcja Either 250Koncepcja domniemania 252Parametr domniemany 254Metoda domniemana 255Konwersja domniemana 256Wyszukiwanie wartości domniemanych 260Klasy typów 262Podsumowanie 264Rozdział 12. Wprowadzenie do pakietu Akka 265Dlaczego powinieneś zainteresować się pakietem Akka? 266Co to jest model aktora? 267Poznajemy system aktorów 269Obiekt Props 271Ścieżki i odwołania do aktora 271Wybór istniejącego odwołania za pomocą metody actorSelection() 272Cykl życiowy aktora 273Rozpoczęcie pracy z pakietem Akka 274Przygotowanie środowiska 274Utworzenie pierwszego aktora 279Metody typu powiedz kontra poproś kontra przekaż 284Zatrzymanie aktora 287Zaczepy preStart i postStop 288Komunikacja aktorów za pomocą wiadomości i ich semantyka 288Strategia nadzoru aktorów 289Strategia OneForOne kontra AllForOne 290Domyślna strategia nadzorcy 292Zastosowanie strategii nadzoru 292Testowanie aktorów 295Podsumowanie 298Rozdział 13. Programowanie równoległe w Scali 299Programowanie równoległe 300Podstawowe bloki współbieżności 300Poznajemy proces i wątek 301Blokady i synchronizacja 302Egzekutor i ExecutionContext 306Programowanie asynchroniczne 309Koncepcja wartości typu Future w Scali 309Obsługa wyniku operacji asynchronicznej 313Dlaczego nie należy łączyć dwóch lub więcej operacji asynchronicznych? 314Obietnica 316Kolekcja równoległa 318Podsumowanie 320Rozdział 14. Programowanie z użyciem rozszerzeń reaktywnych 321Programowanie reaktywne 322Rozszerzenia reaktywne 325Reaktywność i RxScala 328Utworzenie obiektu obserwowalnego 329Podsumowanie 336Rozdział 15. Testowanie kodu w Scali 337Co to jest podejście TDD i dlaczego powinieneś je stosować? 338Proces stosowany w podejściu TDD 338Krok 1. – zdefiniowanie testu zakończonego niepowodzeniem 339Krok 2. – utworzenie pewnego kodu pozwalającego na zaliczenie testu 339Krok 3. – refaktoryzacja kodu mająca na celu poprawę jego jakości 339Krok 4. – powtórzenie kroków od 1. do 3. 339Zastosowanie podejścia BDD 342Biblioteka ScalaTest 342Przygotowanie do testów 343Style testowania za pomocą ScalaTest 346ScalaMock – natywna biblioteka obiektów imitacji 352Podsumowanie 354Skorowidz 355O autorze: Vikash Sharma urodził się w Indiach. Jest zapalonym programistą i gorącym propagatorem idei open source. Uważa, że zachowanie prostoty podczas projektowania oprogramowania pomaga w tworzeniu przejrzystego i łatwego w późniejszej obsłudze kodu. Poświęcił dużo czasu na implementowanie kodu w Scali; z myślą o innych programistach przygotował kurs wideo programowania w tym języku. Obecnie pracuje jako programista w SAP Labs.

Informatyka

ferie zimowe 2019 podkarpackie, tel awiw, stanisław wolski filmweb, wypłata gotówki z konta firmowego, hindusi na granicy, koszty dojazdu do pracy 2021, efez miasto, laweta przyczepka, targi hotelarskie 2019, bilans uor, koszty uzyskania przychodu pit 11, religia w korei północnej, kamery kijów online, na podstawie podręcznika oraz danych statystycznych zamieszczonych w tabeli wykonaj polecenia, inflacja za kwiecień 2022, dania gov, czy pit 11 dla pracownika musi być podpisany

yyyyy