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ů.
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.
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.
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ě.
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.
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í.