Tour of Scala

Wprowadzenie

Language

Witaj

Ten przewodnik składa się z drobnych wprowadzeń do najczęściej używanych funkcjonalności języka Scala.

Jest to jedynie krótkie wprowadzenie, a nie pełny samouczek. Jeżeli szukasz tego drugiego, rozważ jedną z książek lub inne zasoby.

Czym jest Scala?

Scala jest nowoczesnym, wieloparadygmatowym językiem programowania zaprojektowanym do wyrażania powszechnych wzorców programistycznych w zwięzłym, eleganckim i bezpiecznie typowanym stylu. Scala płynnie integruje ze sobą cechy języków funkcyjnych i zorientowanych obiektowo.

Scala jest zorientowana obiektowo

Scala jest czysto obiektowym językiem w tym sensie, że każda wartość jest obiektem. Typy oraz zachowania obiektów są opisane przez klasy oraz cechy. Klasy są rozszerzane przez podtypowanie i elastyczny mechanizm kompozycji domieszek jako zastępstwo dla wielodziedziczenia.

Scala jest funkcyjna

Scala jest też funkcyjnym językiem w tym sensie, że każda funkcja jest wartością. Scala dostarcza lekką składnię do definiowana funkcji anonimowych, wspiera funkcje wyższego rzędu, pozwala funkcjom, by były zagnieżdżone, a także umożliwia rozwijanie funkcji. Klasy przypadków (case class) oraz wbudowane wsparcie dla dopasowania wzorców (pattern matching) wprowadzają do Scali mechanizm typów algebraicznych stosowany w wielu funkcyjnych językach programowania. Obiekty singleton są wygodną metodą grupowania funkcji, które nie należą do żadnej klasy.

Ponadto, mechanizm dopasowania wzorców w naturalny sposób rozszerza się do obsługi przetwarzania danych w formacie XML z pomocą wzorców sekwencji ignorujących prawą stronę, z wykorzystaniem rozszerzeń obiektów ekstraktorów. W tym kontekście wyrażenia for są użyteczne w formułowaniu zapytań. Te i inne funkcjonalności sprawiają, że Scala jest idealnym językiem do tworzenia aplikacji takich jak usługi sieciowe.

Scala jest statycznie typowana

Scala posiada ekspresywny system typów, który zapewnia, że abstrakcje są używane w bezpieczny i należyty sposób. W szczególności system typów wspiera:

Mechanizm lokalnej inferencji typów sprawia, że nie jest konieczne podawanie nadmiarowych informacji o typach w programie. Wszystkie te funkcje języka pozwalają na bezpieczne ponowne użycie programistycznych abstrakcji oraz rozwijanie oprogramowania z bezpieczeństwem dla typów.

Scala jest rozszerzalna

W praktyce rozwiązania specyficzne dla domeny często wymagają odpowiednich, również specyficznych domenowo, rozszerzeń języka. Scala dostarcza unikalne mechanizmy, dzięki którym można łatwo dodawać nowe konstrukcje do języka w postaci bibliotek.

W większości przypadków można to uzyskać bez potrzeby używania technik meta-programowania takich jak np. makra. Oto kilka przykładów:

Scala współdziała z językami JVM

Scala jest zaprojektowana tak, aby jak najlepiej współpracować z popularnym środowiskiem uruchomieniowym Java Runtime Environment (JRE). W szczególności interakcja z językiem Java jest tak płynna, jak tylko jest to możliwe. Nowsze funkcje języka Java takie jak interfejsy funkcyjne (SAM), funkcje anonimowe (lambda), adnotacje oraz typy generyczne posiadają swoje bezpośrednie odwzorowania w języku Scala.

Unikalne dla Scali funkcje, które nie mają odwzorowania w Javie, jak na przykład domyślne wartości parametrów oraz parametry nazwane, są kompilowane tak, aby zachować jak największą zgodność z Javą. Scala posiada taki sam model kompilacji (oddzielna kompilacja, dynamiczne ładowanie klas) jak Java, dzięki czemu umożliwa korzystanie z tysięcy już istniejących, wysokiej klasy bibliotek.

Do dzieła!

Przejdź do kolejnej strony aby dowiedzieć się więcej.

Contributors to this page: