Handwringing about Scala
There has been a flurry
of blogs
and email threads with hand-wringing about the fact that Scala hasn't yet
achieved world domination.
- Scala is too complicated. Sure, it has its complicated corners, but
complexity hasn't stopped C++ from being #3 in the TIOBE ranking for over
ten years.
- Scala has no killer app. That's true—it doesn't. What was the killer
app of C++ again? I forgot.
- Scala tooling is atrocious. Is it? I think it's now where Java was around
2002 (seven years after its first release). Think back—that's when the
first usable versions of Eclipse and NetBeans appeared. People who
complained about their shortcomings were told to try IntelliJ :-) And the
Scala tooling is improving at a pretty nice rate. By the way, I don't think
PHP, Python, Perl, Lua or Ruby tooling is all that great either, but that
hasn't stopped those languages from being #4, 8, 9, 10, and 12 on the TIOBE
scale.
- Unlike Ruby, Scala doesn't tell people one true way of doing their work.
Well, Ruby doesn't do that either. Rails does. And PHP? Don't get me
going.
I think Scala is going to grow steadily and undramatically because it's such
a natural progression from Java. If you are a Java programmer and want to learn
something new that at the same time expands your horizon and makes you more
productive, what are your choices?
- C#. That's not really going to expand your horizon
- Haskell. By all means, but it doesn't help you a lot with your day-to-day
work
- Racket. Ditto
- Lua. Objective C. PHP. Those might contract your horizon
- Ruby. A contender
- Scala. The easy choice. Interoperable with Java. Less boilerplate. Ease
into functional programming. What's not to love?
That's what I see as the second phase of adoption (after the first one—by
the language enthusiasts who currently dominate the Scala scene). Of those
individual people, more and more will release toolkits and frameworks in Scala,
not Java. The third phase will be, as with all successful languages, consolidation, compatibility, and stagnation.