Welcome to JavaPolis 2007!
OOP - The last 10 Years
OOP - The last 3 Years
Are the types to blame?
Programming languages - state of the art
How to advance?
Scala
Scala is interoperable
Scala is interoperable
Scala is interoperable
Scala is interoperable
Scala is functional
Scala is functional
Scala is functional
Scala is functional
Scala is functional
Scala is concise
Scala is precise
Scala is precise
Scala is precise
Scala is precise
Scala is precise
Big or small?
Scala is extensible
Implementing complex numbers
Implementing complex numbers
Implementing complex numbers
Implementing complex numbers
Implementing complex numbers
Scala is extensible
Implementing complex numbers
Tool support
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
The Scala compiler at work
Performance
Performance
The JVM as a compilation target
The Scala design
1st Unification: ADTs are class hierarchies
Pattern matching in Scala
Pattern matching in Scala
Pattern matching in Scala
Pattern matching in Scala
2nd Unification: functions are objects
Function classes
Why should I care?
Partial functions
Example: Erlang-style actors
Example: Erlang-style actors
Example: Erlang-style actors
Example: Erlang-style actors
Example: Erlang-style actors
A simple actor
A simple actor
A simple actor
Implementing receive
Implementing receive
Implementing receive
Implementing receive
Library or language?
An application: lift Web Framework
3rd Unification: modules are objects
Relationship between Scala and other languages
Predictions
Book
Scala is a general purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages. It is also fully interoperable with Java.
Martin Odersky heads the programming research group at EPFL. His research interests cover fundamental as well as applied aspects of programming languages. They include semantics, type systems, programming language design, and compiler construction. The main focus if his work lies in the integration of 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 concentrates on the Scala programming language, which unifies FP and OOP while staying completely interoperable with Java and .NET.
Martin Odersky got his doctorate from ETH Zürich, in 1989. He held research positions at the IBM T.J. Watson Research Center from 1989 and at Yale University from 1991. He was then a professor at the Univerisity of Karlsruhe from 1993 and at the University of South Australia from 1997. He joined EPFL as full professor in 1999. He is associate editor of the Journal of Functional Programming and member of IFIP WG 2.8. He was conference chair for ICFP 2000, and program chair for ECOOP 2004 as well as ETAPS/CC 2007.