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.
Martin Odersky is a professor at EPFL in Lausanne, Switzerland. His research interests focus on programming languages, more specifically languages for object-oriented and functional programming. His research thesis is that the two paradigms are just two sides of the same coin and should be unified as much as possible. To prove this he has experimented with a number of language designs, from Pizza to GJ to Functional Nets. He has also influenced the development of Java as a co-designer of Java generics and as the original author of the current javac reference compiler. His current work centers around the Scala programming language, which unifies FP and OOP while staying completely interoperable with Java and .NET.