piątek, 27 stycznia 2012

Na początek


Motywacja, czyli po co ten blog?

Ostatnio w świecie dużo się mówi o języku Scala, że jest taki fajny i w ogóle, więc postanowiłem się z nim zapoznać. Wiadomo, że nie można krytykować rzeczy, których się nie zna, jeśli nie chce się wyjść na głupka. A jeśli okaże się, że "miliony fanek nie mogą się mylić" to będę o jedno dobre doświadczenie do przodu (czego życzę również moim czytelnikom).
    Gdy się czegoś człowiek uczy to łatwo po drodze zapomnieć niektóre ciekawe rzeczy, więc warto je zanotować.

    Nie znalazłem na chwilę obecną polskojęzycznych pozycji książkowych na temat tego języka, a skoro ja w miarę znam angielski to dlaczego nie pomóc kolegom (i koleżankom oczywiście), którzy trochę gorzej radzą sobie w tej materii?
       

      Co to jest ta Scala i kto tego używa?

      Według definicji na oficjalnej stronie języka:
      "Scala jest językiem ogólnego zastosowania, zaprojektowanym tak by wyrazić powszechne wzorce programistyczne w zwięzły, elegancki i bezpieczny dla typów sposób. Gładko łączy zalety języków obiektowych i funkcyjnych, pozwalając zarówno programistom Java jak i pozostałym być bardziej produktywnym. Rozmiary kodu są zwykle dwu- trzykrotnie zredukowane w porównaniu do aplikacji napisanych w Javie."
      Spektakularnym użytkownikiem Scali jest serwis Twitter, którego programiści przerzucili się z Ruby'ego, aby uzyskać większą skalowalność kodu i niezawodność kodu.

      Scala przezroczyście integruje się z Javą. Kod, który został już napisany w Javie może być ponownie użyty bez konieczności przepisywania go na nowy język. Programy napisane w Scali są uruchamiane na wirtualnej maszynie Javy, a skompilowany byte-kod jest całkowicie kompatybilny z kodem Javy. Funkcje javowe z powodzeniem można wywoływać bezpośrednio z kodu Scali. 
       
      Kompilator Scali jest produktem dojrzałym i od wielu lat używanym przez profesjonalnych programistów. Jego twórcą jest Martin Odersky, który jest również współautorem kompilatora Javy. 
       
       

      Główne cechy języka Scala

      • Scala jest zorientowana obiektowo
        Wszystkie wartości w tym języku są obiektami, np. dopuszczalne jest takie wywołanie:

        1.toString()
        Typy oraz zachowanie obiektów opisują klasy (ang. class) i cechy (ang. trait). Klasy mogą być rozszerzane za pośrednictwem pod-klas (ang. subclass) i kompozycji typu mixin (jeszcze nie wiem co to jest).
      • Scala jest językiem funkcjonalnym
        Każda funkcja jest wartością (można ją przypisać zmiennej tak jak C/C++). Można tworzyć funkcje anonimowe, zagnieżdżać je i tworzyć funkcje wyższego rzędu (ang. higher-order functions).
      • Scala jest bezpieczna typowo
        System typów w Scali zmusza programistę do używania abstrakcji w bezpieczny i spójny sposób.
      • Scala jest rozszerzalna
        Dzięki temu, że każda funkcja może być również operatorem oraz dzięki domknięciom (ang. closure), możliwe jest tworzenie bibliotek definiujących nowy, wyspecjalizowany do danego zadania język (ang. Domain Specific Language - DSL).
      Wszystkie te cechy wyglądają interesująco i będę je analizował w kolejnych artykułach. 
       
       

      Źródła wiedzy na temat Scali

      • scala-lang.org
        Główna strona języka. Zawiera wiele informacji, samouczków i dokumentacji oraz najświeższe kompilatory języka do pobrania.
         
      • typesafe.com
        Firma propagująca język Scala w celach komercyjnych, jednak na zasadach otwartego oprogramowania (ang. open source). Dystrybuują swój stos składający się m. in. z kompilatora Scali, pakietu Akka (o tym później... duuużo później :)) i frameworku do tworzenia aplikacji internetowych "Play!" (dzięki któremu zainteresowałem się Scalą). Z tej strony można pobrać darmową książkę w postaci pliku PDF "Scala for the Impatient", z której również będę korzystał w trakcie uczenia się tego języka.

      Brak komentarzy: