Języki

Erudis - your road to knowledge
Podsumowanie

Obserwując ostatnio popularne poszukiwania nowych kierunków rozwoju języków programowania widać tendencję do wzbogacania języków imperatywnych w konstrukcje pozwalające programować funkcyjnie. Jednocześnie silny nacisk jest kładziony na pełną obiektowość wszystko jest obiektem oraz zmuszanie kompilatorów lub interpreterów do zgadywania intencji programistów, co często znajduje wyraz w rezygnacji ze statycznego typowania. Scala w pewnym sensie wpisuje się w ten trend, co starałem się pokazać w artykule (szczególnie funkcyjność języka). Są jednak co najmniej trzy elementy Scali, które wyróżniają ją od innych nowych języków:

  1. zachowanie statycznego typowania, przy czym programista nie zawsze musi deklarować typ obiektu, jeśli kompilator może go jednoznacznie odkryć;
  2. możliwość pełnej interoperacyjności z Javą i (w przyszłości) z platformą .NET;
  3. niezwykle prosty interfejs do obsługi XML-a.

Scala jest nową technologią i z tego powodu nie ma zbyt wielu źródeł informacji o tym języku. Poniżej jest kilka miejsc wartych odwiedzenia:

O dziesiątym prawie Philipa Greensupna można przeczytać na stronie Wikipedii. Osoby, które chciałyby szukać pozostałych dziewięciu praw od razu uprzedzam, że ich nie ma. Jak to powiedział sam Greenspun, nazwa dziesiąte prawo brzmiała po prostu dobrze, sugerując, że jest częścią jakiejś większej i bardziej przemyślanej całości.

Źródła informacji o Scali

Pierwszą cechę jedni uznają za wadę inni za zaletę, z mojego punktu widzenia osoby używającej na co dzień języka Java i PHP statyczne typowanie dostępne w Javie ułatwia mi na dłuższą metę pracę, mimo, że pewne rzeczy można mniejszym początkowym wysiłkiem zaimplementować w PHP. Argumentem za statycznym typowaniem jest także możliwość szerokiego stosowania automatycznej refaktoryzacji kodu, aczkolwiek nie przeceniałbym tak bardzo znaczenia tego elementu.

Drugi punkt, współpraca z Javą i .NET, jest za to bardzo znaczącą zaletą Scali, która może być tak na prawdę decydującym czynnikiem w szerszym upowszechnieniu się tego języka. Możliwość korzystania z setek bardzo dobrej jakości, wypracowanych przez lata bibliotek jest nie do przecenienia w świecie napiętych terminów i równie napiętych budżetów.

Trzeci wymieniony element ma również znaczenie ze względu na to, że XML jest de facto standardem w dziedzinie usług sieciowych i przechowywania danych o charakterze hierarchicznym.

Czy zatem Scala może się stać następnym głównonurtowym językiem, takim jak dziś jest Java czy w coraz większym stopniu C#? Trzeba przede wszystkim pamiętać, że głównonurtowość jest cechą dość subiektywną. W przypadku aplikacji korporacyjnych faktycznie można uznać Javę za główny nurt, z kolei programista tworzący gry komputerowe bardzo by się ubawił, gdyby mu powiedzieć, że Java zepchnęła w niebyt C++. Ze względu na to, że oprogramowanie komputerowe jest wykorzystywane coraz częściej i w ciągle nowych zastosowaniach, to dominacja jednego języka raczej nam nie grozi.

Lepiej postawione pytanie brzmi czy Scala ma szansę znaleźć sobie miejsce pośród języków o podobnym charakterze, takich jak Ruby, Groovy czy Python. Wydaje się, że Scala jest na dobrej pozycji startowej – programista Java czy C# znacznie szybciej można stać się produktywnym w Scali niż innym z wymienionych języków.