The last two days a quote of James Gosling from this talk gets retweeted over and over again:

James Gosling on #Scala: "The most depressing thing on scala is [...] most people pick up scala as #java with more concise syntax"

I kind of disagree with James statement and therefore replied with:

What's wrong with picking up #scala as #java with concise syntax? Most people picked up java as #vb with oo or #c++ with garbage collection

And I even went so far to claim:

Although I like the functional stuff + the strong type system. I think it's doing scala a bad service to emphasize it.

Which in turn triggered Mario Gleichmann to ask for an explanation.

So here it is, because there is no way I gonna fit this into 140 characters.

Everybody involved in this discussion including myself would like Scala to gain more traction. Maybe even become the next big language. Probably most of the people using Scala right now love its functional features and its type system. I can certainly see someone like James Gosling who did tons of Lisp coding feel sorrow when he sees people using Scala just as they would use Java.

BUT there aren't only friends of Scala out there. Many people out there consider Scala a complicated (or complex or difficult) language. And in SOME sense they are right!

It is cool you can prove the Scala type system is turing complete. I'm sure Monads are cool and useful thing, but I haven't grasped them, and I know many people that will never even try to understand them. The map implementation of Scala is so cooool, but its type declaration looks really scary for people that don't understand the type definition of Enums in Java.

All this stuff is cool for people who like to sit in the front row. But very few people actually do like that. Most developers just want to get their work done. And all these confusing (powerful) features won't convince them to switch to Scala. I actually think it scares people away from the language.

Really simple stuff is much more useful in selling Scala (or any language):

  • Case Classes are so much easier and shorter to read and write the Java Beans
  • Exception Handling is way more concise, especially when you want to handle various exceptions in the same way
  • Concise syntax for collection literals
  • With ScalaTest there is a really nice extremely flexible Testing Framework that allows for a wide array of testing styles
  • The subset of Scala that you need to replace Java is easy and possibly even simpler then Java itself.
  • Maybe some processing of Collections (without emphasizing the different paradigm so much)
  • ...

Once people feel more secure with Scala they may and many will explore the more interesting and challenging parts of the language.

Having said all that I will still enjoy topics that make my brain hurt. But I will focus more on simple everyday stuff when writing about Scala, because I think we need more of that and because I'm just to stupid to really grasp the more powerful stuff. BTW: If anybody in my proximity would like to test her monad explaining skills ... I'm a willing test subject.


Wan't to meet me in person to tell me how stupid I am? You can find me at the following events: