From: <Сохранено Windows Internet Explorer 8> Subject: A Tour of Scala | The Scala Programming Language Date: Fri, 18 Sep 2009 12:57:27 +0300 MIME-Version: 1.0 Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_000_0000_01CA385F.93301190" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 This is a multi-part message in MIME format. ------=_NextPart_000_0000_01CA385F.93301190 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.scala-lang.org/node/104 =EF=BB=BF
Scala is a modern multi-paradigm programming language designed to = express=20 common programming patterns in a concise, elegant, and type-safe way. It = smoothly integrates features of object-oriented and functional = languages.
Scala is a pure object-oriented = language in the=20 sense that every = value is an=20 object. Types and behavior of objects are described by classes and traits. Classes are = extended=20 by subclassing and a=20 flexible mixin-based = composition mechanism as a clean replacement for multiple=20 inheritance.
Scala is also a functional language in = the sense=20 that every function = is a=20 value. Scala provides a lightweight = syntax for=20 defining anonymous functions, it supports higher-order functions, = it allows=20 functions to be nested,=20 and supports currying.=20 Scala's case=20 classes and its built-in support for pattern = matching model=20 algebraic types used in many functional programming languages.
Furthermore, Scala's notion of pattern = matching=20 naturally extends to the processing of XML = data with=20 the help of right-ignoring=20 sequence patterns. In this context, sequence = comprehensions are=20 useful for formulating queries. These features make Scala ideal for = developing=20 applications like web=20 services.
Scala is equipped with an expressive = type system=20 that enforces statically that abstractions are used in a safe and = coherent=20 manner. In particular, the type system supports:
A local type=20 inference mechanism takes care that the user is not required to = annotate the program with redundant type information. In combination, = these=20 features provide a powerful basis for the safe reuse of programming = abstractions=20 and for the type-safe extension of software.
In practice, the development of = domain-specific=20 applications often requires domain-specific language extensions. Scala = provides=20 a unique combination of language mechanisms that make it easy to = smoothly add=20 new language constructs in form of libraries:
A joint use of both features = facilitates the=20 definition of new statements without extending the syntax and = without=20 using macro-like meta-programming facilities.
Scala is designed to interoperate well = with the=20 popular Java 2 Runtime Environment (JRE). In=20 particular, the interaction with the mainstream object-oriented Java = programming=20 language is as smooth as possible. Scala has the same compilation model=20 (separate compilation, dynamic class loading) like Java and allows = access to=20 thousands of existing high-quality libraries. Support for the .NET=20 Framework (CLR) is also = available.
Please continue to the next page to read =
more.
Copyright =C2=A9 2009 =C3=89cole = Polytechnique F=C3=A9d=C3=A9rale de=20 Lausanne (EPFL), Lausanne, Switzerland