Dr. Martin Odersky, the lead designer/developer of the Scala Programming Language, Generic Java, and Pizza requires no introduction, but the motivation for this micro-interview does. That is, there is an unfortunate view in some circles that sees the existence of Scala and Clojure as somehow being at odds. In chatting with Dr. Odersky it is my hope to dispel the notion that there is a need for ill-will. I would like to quote Brenton Ashworth, as he sets the tone nicely:
We should choose languages based on how accurately they allow us to think about the problems we are trying to solve. – Brenton Ashworth
Not only is the mutual existence of Scala and Clojure important, it is indeed absolutely vital. As it happens, Clojure more closely fits the shape of my own thoughts and ways of working, but Scala serves as muse for a great minds like Daniel Spiewak and Jonas Bonér. I could continue along this train of thought, but I think that Dr. Odersky makes a better point than I could.
No, this is silly. Let’s be realistic. Functional programming is still far from being mainstream. A lot of hard work is needed to get it there. And infighting will just damage the adoption of functional programming as a whole. By contrast, any win of a functional language in an enterprise raises the credibility of all other functional languages. We should help each other, not fight each other.1
I have not programmed in Clojure. From what I can see it is a very well put together language, that brings the power of Lisp to the JVM in a practical package. There are things we liked so much in Clojure that we copied2 them, for instance the data structures for sequences and hash-tries. I believe there are, and will be, many other areas of fruitful cross-pollination3.
Erlang was the template after which Scala’s actor’s library was modeled and it might have influenced Clojure’s agents as well. Lisp, Scheme and Prolog had some indirect influences to Scala. But the tricky part of any language design in Scala is really getting the static types right, so in that sense Haskell, SML, OCaml and F# had a stronger influence. Then of course there’s Java which as the primary host language influences what’s possible in Scala and Clojure to no small degree.
I think it’s mostly people who want to put Scala down making that comment. They take my EPFL affiliation and the papers4 we publish as an excuse to attach that label to the language. What’s funny is that often senior industrial Scala programmers get also accused as being academic. All this is rather ironical because Scala is foremost an industrial language5 with many well known companies using it. By contrast it’s much less taught at universities than Haskell or Lisp, let alone Java!
Maybe it’s the creative pauses forced on them when they wait for the type-checker to finish ;-)
Emphasis mine.↩︎
A comment by Daniel Spiewak clarifies this point and leds us to an interesting ticket.↩︎
I think that it would be wonderful to explore the ideas in Jonas Boner’s Akka Actor framework.↩︎
A recent gem being Deprecating the Observer Pattern (PDF)↩︎
I am giving a talk at CUFP about my own experience using Scala in industry.↩︎