A blend of all the features you ever saw in different programming languages!
Scala is a “Scalable” Programming Language. How does Scala scale? By keeping the core language small and letting features to be added as libraries. You can build your own library and scale the language. How does Scala do that? Scala tries to answer: “So, if we want to let programmers implement this feature as language library rather than language syntax, what features do we need to introduce in the language?”
Features and examples of this concept:
Operators as Functions
Flexible syntax (Prefix, Infix, Postfix mixing)
Uniformity of Objects, Functions and Operators.
Makes Scala DSL friendly (“almost” English) and “scalable” (You can build libraries for Scala that look like language syntax additions.)
Makes the core language small (rest of the features are implemented in the library). “Lisp Philosophy”. But during the time Lisp was invented, it was early days in computer programming and few language constructs were known. Now that we have a lot of language constructs, Scala tries to define a language that lets programmers implement those features with a small core language.
Uniformity of Objects, Functions and Operators => Symbolic Programming. (<- A Function literal in Scala!)
What happens when you try to fuse OOP and Functional Programming on JVM?
You can apply battle-tested OO Design Patterns.
Functional Programming Patterns and Lisp Patterns are getting fashionable and of course useful (Multicores, Concurrency)! Scala lets you use those patterns in our code and design.
Well suited for data processing applications.
Functional Programming, Map, Reduce, Filter.
Control abstractions with Higher order functions
Improved syntax for Object Oriented Programming
Concurrent, Parallel and Distributed Programming.
Scala creator Martin Odersky himself takes Parallel Programming Challenge seriously .
Components and Composition.
How do you fuse Object Oriented and Functional Programming to facilitate the elusive goal of Component oriented Software Development?