Scala – język programowania łączący cechy języków funkcyjnych i obiektowych. Scala działa na Wirtualnej Maszynie Javy, a także na Java Platform, Micro Edition Connected Limited Device Configuration i platformie .NET. Nazwa ma podkreślać skalowalność języka, stąd Scala (z ang. scalable language).
Scala została stworzona w 2001 roku na Politechnice Federalnej w Lozannie przez Martina Odersky’ego. Język ten został upubliczniony w styczniu 2004 roku na platformie Javy, a w czerwcu tego samego roku na platformie .NET. Wersja druga została udostępniona w marcu 2006 roku.
Wspierane paradygmaty Scala wspiera programowanie funkcyjne. Składnia pozwala zwięźle definiować funkcje anonimowe, obsługuje funkcje wyższego rzędu, zagnieżdżanie funkcji i currying. Użycie słowa kluczowego lazy opóźnia przypisanie wartości do chwili, gdy wartość ta będzie potrzebna. W języku Scala większość konstrukcji językowych definiuje wyrażenia (posiadające wartość). Scala pozwala definiować wyrażenia przy pomocy słów kluczowych def, var oraz val. Słowo def pozwala na zdefiniowanie wyrażenia, którego wartość będzie wyliczana zawsze w chwili odwołania się do tego wyrażenia (np. def doubleMe(x: Int) = x * 2). Przy pomocy słowa var można zdefiniować wyrażenie, którego wartość może podlegać zmianom (ang. mutable – np. var x = 2;