Scala introduction
Scala, which stands for Scalable Language, is a multi-paradigm programming language.
Martin Odersky of the Federal Institute of Technology Lobsang (EPFL) began designing Scala in 2001 based on Funnel’s work.
Funnel is a programming language that combines functional programming idea with Petri net.
Odersky’s previous work was Generic Java and javac (Sun Java compiler). Scala for the Java platform was released at the end of 2003 / early 2004. Scala for the .NET
platform was released in June 2004. The second version of the language, v2.0, was released in March 2006.
As of September 2009, the latest version is version 2.7.6. The expected features of Scala 2.8include the rewritten Scala class library, named and default parameters for methods, package objects (package object), and Continuation.
In April 2009, Twitter announced that they had migrated most of the back-endprograms from Ruby to Scala, and the rest were going to be migrated as well. In addition, Wattzon has publicly announced that its entire platform has been written based on the Scala infrastructure.
Scala characteristics
Object-oriented characteristic
Scala is a pure object-oriented language, and every value is an object. The data types and behaviors of objects are described by classes and attributes.
There are two ways to extend the class abstraction mechanism: one is subclass inheritance, and the other is flexible blending mechanism. These two approaches can avoid the problems of multiple inheritance.
Functional programming
Scala is also a functional language, and its functions can be used as values. Scala provides lightweight syntax for defining anonymous functions, supports higher-order functions, allows nesting of multi-tier functions, andsupports Corialization. Case of Scala class
and its built-in pattern matching are equivalent to the algebraic types commonly used in functional programming languages.
Further, programmers can use Scala’s pattern matching to write regular expression-like code to process XML data.
Static type
Scala has a type system that ensures code security and consistency through compile-time checking. The type system specifically supports the following features:
Generic class
Covariant and inverter
Dimensioning
Upper and lower bound constraints of type parameters
Treat classes and abstract types as object members
Compound type
Explicitly specify the type when referencing yourself
View
Polymorphic method
Expansibility
Scala is designed based on the fact that in practice, domain-specific application development often requires domain-specific language extensions. Scala provides many unique language mechanisms to easily and seamlessly add new language structures in the form of libraries:
Any method can be used as a prefix or suffix operator
Closures can be constructed automatically based on the expected type.
Concurrency
Scala uses Actor as its concurrency model, and Actor is a threaded entity that sends and receives messages through mailboxes. Actor can reuse threads,so you can use millions of Actor in your program, while threads can only create a few thousand. In versions later than 2.10, Akka was used as its default Actor implementation.
Who uses Scala?
In April 2009, Twitter announced that they had migrated most of the back-endprograms from Ruby to Scala, and the rest were going to be migrated as well.
In addition, Wattzon has publicly announced that its entire platform has been written based on the Scala infrastructure.
UBS uses Scala in general products.
Coursera uses Scala as the server language.
Scala Web framework
Here are two popular Web application frameworks for Scala:
Lift framework
Play framework