Scala je multiparadigmatický programovací jazyk. Byl navržen tak, aby integroval rysy objektově orientovaného a funkcionálního programování. Jméno vzniklo z anglického slova „scalable“, tedy škálovatelný, protože Scala byla navržena tak, aby rostla s nároky uživatelů.

Historie

Autorem Scaly je Martin Odersky z École Polytechnique Fédérale de Lausanne ve Švýcarsku. Ten předtím zároveň pracovat na Javě, spolupodílel se na autorství překladače javac a rozšíření superset Generic Java. Samotný vývoj Scaly začal v roce 2001. První verze Scaly určená pro platformu Java vyšla na přelomu let 2003 a 2004, po dalším půl roce byla vydána v červnu 2004 i verze pro platformu .NET.

Specifika syntaxi

Scala byla designována s cílem, aby byla zpětně kompatibilní s jazykem Java. O rozšíření Javy se ovšem nejedná. Scala je zcela samostatný nový programovací jazyk, který se nesnaží striktně držet žádného velkého vzoru jako je Java, Lisp nebo Smalltalk. Zkušený programátor přesto v syntaxi jistě objeví prvky, které zná z jiných programovacích jazyků. Z opačného pohledu však Scala předkládá nové jazykové konstrukce, které v jejích předchůdcích nejsou obsaženy.

Integrace s Javou

Za dobu existence Javy bylo implementováno rozsáhlé množství tříd, které řeší různé typy úloh. Výhodou Scaly je to, že existuje možnost tyto třídy napřímo používat bez nutnosti překladu do Scaly nebo jakýchkoliv jiných změn. Veškeré výchozí třídy z java.lang balíčku jsou automaticky importovány. Třídy, které patří do jiných balíčků je nutné importovat explicitně.

Objektově orientované rysy jazyka

Scala je čistě objektový programovací jazyk. To znamená, že na rozdíl od Javy neobsahuje primitivní datové typy. Všechno se vytváří jako objekt a to včetně čísel. Každá aritmetická operace je reálně volání příslušné metody.

Funkcionální rysy jazyka

Syntax Scaly má podporu pro currying, anonymní funkce i funkce vyšších řádů. Zároveň povoluje psaní vnořených funkcí a obsahuje řadu dalších konstrukcí, které jsou typické pro funkcionální programovací jazyky. Scala tak kombinuje možnosti funkcionálního a objektově orientovaného programování.

Výhody použití Scaly

  • Jednoduchá syntaxe. Scala obvykle vyžaduje o dvě třetiny méně kódu než například Java. Syntax je zároveň flexibilnější. Je například možné nechat mezi jednotlivými voláními metod tečky, takže je kód pro člověka čitelnější a pochopitelnější.
  • Inherentní neměnné objekty. Scala redukuje mnoho bezpečnostních rizik, která se váží s tradiční Javou.
  • Vysoce funkcionalistická. Scala je založená na funkcích.
  • Vysoká rychlost implementace. Umožňuje rychlejší implementaci a zvýšený výkon.
  • Jednoduchost řešení problémů se souběžností. Knihovna Actor dokáže rychle řešit problémy se souběžností.
  • Podpora XML. Scala podporuje XML, což se hodí v případě kódování dokumentů.

Nevýhody použití Scaly

  • Menší komunita. Vzhledem k tomu, že má menší tradici nežli například Grails nebo Rails, má menší komunitu uživatelů a zdrojů, které by pomáhaly s řešením problémů.
  • Obtížná na učení. Scala je z hlediska syntaxi výrazně odlišná od Javy a představuje zcela jiné programovací paradigma, které vyžaduje vysokou úroveň znalostí.
  • Týmová práce. Týmová práce ve Scale se může snadno zvrhnout do hybridu mezi Javou a Scalou, což může působit problémy.
  • Omezená zpětná kompatibilita. Každý větší release Scaly je nekompatibilní s předchozí verzí, což vede k tomu, že spoustu věcí je nutné znovu objevovat.