Scala. Język hybrydowy (ebook) - Venkat Subramaniam

Kup ebooka

39.00 zł
31.20 zł (24,90 zł najniższa cena z 30 dni)

-
Proszę czekać

SCALA I STYL FUNKCYJNY

AUTOR - Venkat Subramaniam

Podczas projektowania języka Scala Martin Odersky zrobił odważny, niekonwencjonalny krok, łącząc ze sobą dwa różne paradygmaty: obiektowy i funkcyjny. Nie jest to proste zadanie - oba style są bardzo różne, a połączenie dwóch różnych paradygmatów stanowi prawdziwe wyzwanie.

Aby zrozumieć, jakie przeszkody stały przed Oderskym, popatrzmy najpierw, co oznacza być funkcyjnym. Są tu dwa aspekty definiujące funkcjonalny styl programowania: czystość funkcji oraz programowanie za pomocą funkcji wyższego rzędu.

Czystość funkcyjna

Czystość oznacza, że funkcje nie mają efektów ubocznych. Wyjście z funkcji jest przewidywalnie takie samo, jeśli tylko takie same pozostaje wejście. Na czystą funkcję nic nie wpływa, a ona nie wpływa na żaden element zewnętrzny. Oznacza to także, że nie zmienia ona żadnej wartości.

Wśród zalet czystości funkcji warto wymienić dwie. Po pierwsze łatwiej jest zrozumieć i udowodnić poprawność czystej funkcji. Po drugie czyste funkcje promują transparentność odwołań. Czyste funkcje można łatwo przeorganizować i zmienić kolejność ich wykonywania w wielu wątkach, co ułatwia programowanie współbieżności na procesorach wielordzeniowych.

Scala nie wymusza czystości, ale ułatwia wykrycie, gdzie są używane zmienne mutowalne - po prostu szukamy var. Dobrą praktyką w Scali jest korzystanie możliwie często z niemutowalności, a konkretnie z niemutowalnych val.

Funkcje wyższego rzędu

Innym aspektem stylu funkcyjnego jest praca z funkcjami wyższego rzędu - chodzi o traktowanie funkcji jak obywateli pierwszej klasy. Pozwala nam to na przekazywanie funkcji do funkcji, tworzenie funkcji wewnątrz funkcji oraz zwracanie funkcji z funkcji. To z kolei pozwala na składanie funkcji, a zaletą Scali jest możliwość projektowania złożenia funkcji i złożenia obiektów, tak jak chcemy lub jak jest to właściwe.

Przeanalizujmy podejście w Scali do programowania funkcyjnego na przykładach. Zaczniemy od małych przykładów, które tylko posługują się liczbami, tak aby łatwo zrozumieć sposób używania w Scali funkcji wyższego rzędu. Następnie spojrzymy na przykład praktyczny, gdzie zastosujemy poznane pojęcia.