Scala is multi-paradigm programming language. It was designed so it would integrate features of object-oriented and functional programming. The name origins from English word „scalable“, therefore Scala was developed to grow with the demands from users.
The author of Scala is Martin Odersky from École Polytechnique Fédérale de Lausanne in Switzerland. He also worked on Java before, participated in the authorship of java compiler and extension of superset Generic Java. The development of Scala began in 2001. The first version of Scala was intended for the Java platform and was released in 2003/2004, after another half a year was published in June 2004 version for .NET platform.
Scala was designed with the aim to be backward compatible with Java. But it is not a case of Java extension. Scala is purely independent new programming language, which does not try to strictly stick to any great model as is Java, Lisp or Smalltalk. Regardless, experienced programmer will find elements in syntax that he knows from different programming languages. From another point of view, Scala submits new language constructions, which are not contained in its predecessors.
During Java’s existence were implemented extensive amounts of classes, which solve different types of tasks. The Scala’s advantage is that there exists option to use these classes directly without the need of translation to the Scala or any other changes. All default classes from java.lang package are automatically imported. Classes, which belong to other packages is important to import explicitly.
Scala is purely object-oriented programming language. It means that in comparison to Java it does not contain primitive data types. Everything is created like an object and including the numbers. Every arithmetic operation is actually calling the appropriate method.
Scala syntax has a support for currying, anonymous functions and higher-order functions. It also allows writing nested functions and contains a lot of other constructions, which are typical for functional programming languages. Scala combines the options of functional and object-oriented programming.