Interview with Scala's Martin Odersky

See the reddit thread or the original article. Both are very interesting reads.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Disappointing

I read the original article today and found it quite disappointing. I find it hard to say why I like or don't like an interview. The headline is very attractive : "What Scala did right, what needs to be improved, and where the language is headed". But I'm not sure the content is up to it. I'm sure it's not Odersky's fault; it might be that the questions where not well-chosen -- the Syntax part is particularly bad imho -- or that the target audience is actually not really interested in Scala as a language, but rather in its adoption and other entreprisy concerns.

Ordersky insists about the tooling, which is interesting and has been discussed here before. The other thing I would take away from the talk is Odersky's genuine opinion that a mixed object/functional language is objectively better than a non-OOP language -- Scala is not only meant to lure OOP programmers into a "true" functional paradigm. I don't have an opinion about that question yet, but it's nice to hear Odersky give one.

One thing I specifically found strange in the interview, even misleading, is the following question:
"DDJ: On the Scala website, you list the qualities of code associated with increasing expertise in Scala. It seems to get more functional as one becomes more expert."

The "qualities of code" is an attempt at defining "expertise level" for Scala, from a beginner knowing, and needing to know only the simplest part of the language, and an expert "library designer" being aware of the subtlest type-system mechanisms to use to attain genericity. The partition of the features into those levels is objective and debatable, but what I found weird here is the assumption that they "get more functional as the level increase".

Here is the last level of the hierarchy: "Early initializers, Abstract types, Implicit definitions, Higher-kinded types".
Is it "more functional" ? To me, none of this is characteristic of functional programming. The first one, I don't know what it is, but it looks like an OO concept, and the other ones seem agnostic of the paradigm used. I mean, (statically typed) OO languages also have data types, and there is nothing "functional" about abstract or higher-kinded data types.

The first three (out of six) levels indeed look like an initiation to functional programming; as Martin explained in the interview, it was thought from the point of view of a Java programmer transitioning to Scala, assuming knowledge of OO and not of the FP stuff. But I find it very strange that one would specifically associate Variance Types, Existential Types or By-name parameters to "functional programming".

Scala style checker

Oh, I forgot about something. Martin mention the work on a "style checker" tool that would enforce some syntactic presentation criterions but also, possibly, "expertise levels" (to allow people to forcefully restrict themselves to a "not too complex" subset of the language, I suppose) or idiomatic uses.

That's very interesting. That's the kind of tooling which is relatively easy to deploy -- compared to the continuous-feedback tools of an IDE, which have high entry costs in terms of knowledge of a huge external framework and software stack -- and can get very interesting results.

That's one of the things the Go people have got right, in my opinion. They have a tool which enforces a single presentation style among all Go programmers, and it's beginning to pay back. For example, the Gofix tools allows them to rewrite user code to make it compatible to an API change of the standard library. These things are not possible if you are afraid to break the custom indentation or style of the programmer.