In this talk I'll describe the design principles of the Scala
programming language, which has scalability as its primary design
objective.

Today's software landscape resembles increasingly a tower of Babel:
Systems are built using many different languages, combining
server-side and client-side languages, scripting and systems
programming languages, general and domain specific languages, all
glued together with a hefty amount of XML. The advantage of this
approach is that each individual language can be tailored to a
specific application domain. Its disadvantage is that the necessary
amount of cross-language glue can make applications cumbersome to
write, deploy, and maintain.

An alternative is offered by scalable languages, which can be used for
many different applications, ranging from small scripts to very large
systems. An important aspect of a scalable language is that it itself
is extensible and malleable. It should be possible to define very
high-level libraries in it, which act in effect as specialized domain
specific languages. The advantages of this approach is that it leads
to more regular system designs, gives better static checking, makes
applications easier to deploy, and increases their reliability.

In this talk I'll describe the design principles of the Scala
programming language, which has scalability as its primary design
objective. Scala combines lightweight syntax with strong static
checking on a Java-compatible platform. It encourages the embedding of
domain-specific languages as high-level libraries. I discuss how Scala
affects systems design and discuss its suitability for large scale
industrial deployment.