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. This interview will give you more information on how Scala was found and what it actually is.
This podcast is also made available at the JavaPosse.
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.
Performance Considerations in Concurrent GC Systems— The presentation discusses and explains relevant GC terminology and phrases common in concurrent and mostly concurrent GC, focusing on their effects and relationship to metrics such as heap size, real and effective live set size, and object allocation rates. These include concurrent and mostly concurrent marking, live set and card marking, generational operation, and compaction.
Towards a Universal VM— This talk will look at the improvements to the JVM as part of JSR-292, including invokedynamic, interface injection, tail calls, and other features that are on every language designer's wish list.
Cross-Language Development Experience on the JVM— During this talk we'll describe our experience extending a large Java application with those languages, the problems we've faced and the benefits we've achieved. We'll also demonstrate the cross-language development features of IntelliJ IDEA, including cross-language navigation, refactoring and cross-compilation. We hope that our experience will let you decide whether to start using one of these JVM-based languages in your own project.
The Feel Of Scala— This talk will focus on the design choices of Scala, and what they mean for developer productivity. The talk will highlight what it means to program in a functional style, and show you how Scala facilitates programming in a hybrid of both functional and imperative styles.
The Challenge of Scalable Languages— 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.