Ten questions to Martin Odersky about Scala

Yauheni Akhotnikau: Did you embody all your ideas into Scala or is something left outside because of lack of time or other reasons?

Martin Odersky: There are several things we left out because we did not have enough experience with their design and/or implementation when we first released Scala. Things we would like to tackle in the future include extensible pattern matching, constructor polymorphism, and extended support for concurrency. The first two of these are by now well-studied and should find their way into the language soon. Richer support for concurrency is potentially the most important, but this requires much more experience to get it right. At present, we offer a pretty nice API of actors (in the style of Erlang) which runs on top of standard Java threads.

YA: Is there something in Scala that you want to reimplement or redesign another way?

MO: We had a major version change earlier this (2006) year where we fixed most of what we felt was not right in the first Scala version. The syntax got more lightweight, with semicolons now being optional. We eliminated some traps relating to first-class functions which we discovered in the first version. We cleaned up the mixin model.

YA: Someone (IIRC it was Bjarne Straustrup) said that any tool will be definitely used in very different ways than the tool's author can imagine. Do you see any usage of Scala which can be very unexpected for you?

MO: That's a matter of degrees. There are always things you did not anticipate, but that in retrospect make sense. For instance the heave use of actors in web apps as shown in the liftweb framework:


I have not yet seen something I would never have imagined, but expect that will come in the future :)

YA: Do you consider Scala as a general purpose or niche (like Erlang) language? In which fields do you think Scala looks more prettily and competitive?

MO: Scala is a general purpose language. I think of it as an alternative to Java in all application areas. It's big advantage is that it makes programmers more productive, especially good ones. Currently we see the most widespread adoption of Scala in web applications, where its support for XML and functional tree transformations are a big plus.

YA: At present mainstream languages include languages in which great financial funds were invested (like Java, C#, Visual Basic) and OpenSource projects with more than ten years history (like Perl, Python and Ruby). Do you hope Scala will be able play noticeable role under such conditions?

MO: It can succeed only if supported by a dynamic user community. The success of Python and Ruby has shown that it is possible to grow such a community, even if it takes time. Given the relatively young age of Scala we are currently well on track towards that goal.

YA: At this moment Microsoft is actively working on C#. There is another very promising language for .Net platform -- Nemerle. There is a C++ descendant the D language. There is a constantly growing interest to dynamic (Python, Ruby, Groovy, ) and functional languages (OCaml, Haskell Erlang, ). Which languages do you consider as very dangerous competitors for Scala? Which features of Scala can help Scala to win that struggle?

MO: I don't want to talk in terms of competition. My interest is to have decent programming languages and to have them adopted on a wide scale. If in the end that is some future version of Nemerle, or F#, fine by me. Like Scala, these languages try to bridge the gap between object-oriented and functionional and between static and dynamic. They are all very good as far as I can tell. We currently see a lot of cross-fertilization of ideas between these languages and others as well.

YA: Currently the functional programming languages aren't be widely used. Which future for Scala do you prefer: as a language for millions of programmers or as a language for small audience?

MO: Scala is not exclusively a functional language. It already has reached an audience far beyond typical functional programmers. We currently see about 2000 downloads a month, with a rapidly rising curve. Scala is also quickly picked up in industry.

YA: What are your plans about Scala future?

MO: We try to further improve Scala's usability. A key to that is good tools. We offer an Eclipse plugin, and we know that similar efforts for IntelliJ and Netbeans are under way. We also concentrate on more libraries and frameworks, for instance for GUI interaction or web services. Right now we mostly use Java's libraries for this, but there is a great potential of better interfaces by using Scala's more advanced abstraction capabilities. Another area of work concerns more advanced language research. This is much more experimental in nature. Some areas of interest are concurrency and distribution, pluggable types, staging, virtual classes, and new forms of packagings. Some of this might make it into a future Scala release, but it is far too early to tell.

YA: There are some very good introductions to Scala ScalaOverview, ScalaTutorial and ScalaByExample. But there aren't any more deep description of the language except ScalaReference. And ScalaReference is very uncomfortable as a language teaching book. Do you plan to write a textbook about Scala? Something like to 'The C++ Programming Language' or 'Programming Ruby'.

MO: Yes, I am in train of writing a book in the `Programming Ruby' style. It will be published by Artima. Even before the book is out, much of the material will appear on Artima's site for free on the web.

YA: How intensive do you work on Scala development? Is the Scala development a part of your job or is it just your hobby now?

MO: It's the main part of the jobs of about 10 people: me, 2 postdocs and 7 Ph.D students.

© 2003-2007 Yauheni Akhotnikau
$LastChangedDate: 2007-04-27 19:10:18 +0400 (Пт, 27 апр 2007) $

Hosted by uCoz