tags:

views:

942

answers:

7

I'm trying to figure out the popularity of scala and how many SO users actually use it in the workplace?

+6  A: 

Nobody has a crystal ball, and somebody could come up with something better (or something worse with a powerhouse behind it) anytime.

There's been a lot of articles, podcasts, etc. Here on SO, I suggest you read: http://stackoverflow.com/questions/33744/is-scala-the-next-big-thing

Personally, I think Scala is promising, but may fail to ever attract the crowd. A lot of the production use of Java today revolves around J2EE and I don't see these folks making the transition. For non-Java users, more established languages like Python may provide all the functional features they need even at the cost of not using the JVM.

Uri
+1  A: 

I heard about Scala some months ago, and was pretty excited to see "a better Java than Java" for the JVM. Scala fixes a number of Java's problems with annoying boilerplate code, adds some functional programming and concurrent programming support. It has good (though not perfect) compatibility to Java's libraries, so all that code is instantly available. It's also possible to mix Scala with Java and possibly other JVM languages in the same project.

I tried to learn Lift (the Web framework) and found I wasn't smart enough to handle it. Scala syntax is very terse and cryptic in some places (where Java is wordy) and takes some getting used to. I wrote some small projects and they worked well; but bigger projects were no fun with the half-adequate support of the Eclipse plugins available at the time.

Personally, I gave up on Scala and moved on to Clojure, which offers many of the same advantages and is more (sorry to be subjective here) "fun" to program.


My personal conclusion: Scala has a lot of features crammed into it, which raises the learning curve. It feels like the complexity of C++ with the syntax of Java and the FP constructs of Ruby. I think it will be hard to persuade industry that Scala has significant advantages over Java, enough to justify the costs in re-tooling and re-training.

Carl Smotricz
Same here. I was excited about Scala (and it **does* have much to be excited about), but ended up moving to Clojure as my "next best thing" to work with.
Brian Knoblauch
Good to hear I'm not alone in being crazy - or sane! ;)
Carl Smotricz
+3  A: 

I've just started working with Scala and I'm starting to see more interest in the financial arena.

I'm now getting more people/colleagues showing interest in this. A number of people have asked me to keep them posted as to my progress. I didn't see the same level of interest in Groovy (or other JVM languages post Java itself).

So it's definitely the Java language de jour, and I think it has more momentum than anything before it in the Java arena. How this carries forward is anyone's guess, however!

Brian Agnew
+1  A: 

I heard about Scala in a recent convention (JavaEdge2009) and everyone seemed quite convinced that Scala is a great language. The keynote of the conference was that the future of Java is not just a new JVM Programming language, but rather programming languages ARE the future of Java. Since JDK 7 will have support for dynamic languages built in, the prophets are saying you'll be developing in your own language in a few years, (DSL - Domain Specific Language)

On the practical side, I've downloaded Scala Eclipse plugin and was disappointed. The fact that automatic imports doesn't work yet, drew the line for me from an interesting language to a practical language. Although it may sound a bit whiny, being required as in the ancient days to manually add imports is too much for me.

Ehrann Mehdan
You might like to try IntelliJ IDEA v9, Community Edition. It is free and the (optional) Scala plugin (also free) is much, much better than Eclipse's.
oxbow_lakes
Yes, the Eclipse plugin is still in development. That's not the fault of the Scala language, though. There are only so many qualified volunteers...
Carl Smotricz
It's not really an issue of fault assignment so much so as a requirement for productive use of the language.
Pavel Minaev
+19  A: 

I've been using Scala for a year now at work (finance technology) and would not want to move back to Java at all! The things that concerned me most when originally considering the migration were:

  • Tool Support (what are the IDE's like?)
  • Interop with existing Java libraries and build technologies (ant, Spring, internally-written stuff)
  • Talent Pool (where do I find good scala developers?)
  • Transition-time (how long before I'm writing good scala?)

I found that IDEA's scala plugin (for the now free v9 Community Edition) is excellent: not quite as good as Java's tool support but certainly good enough for our needs. It has basic refactoring and debugging and great syntax-highlighting. My experience with Eclipse has been extremely disappointing: I'm led to understand that great improvement is expected for scala 2.8 but I've seen a recent Eclipse-nightly and it was, frankly, awful.

The interoperability with Java is first-rate - I have had no problems whatsoever and still make heavy use of Spring and our bespoke (ant-based) build-system. The developer-pool is only a consideration for a large company with moderate-to-high staff turnover; it has not been an issue for us so far and interviewees have expressed interest in using Scala anyway.

Perhaps the biggest issue is transition-time. I've found this to be 2 weeks to being able to write anything reasonable, 3 months to start to really "get it" and 6 months-1 year to start taking advantage of the functional and DSL-sides of Scala. So, what are the really big gains for me?

  1. Type inference and co- and contra-variance built in (code is more readable and intuitive - genereics just works, unlike Java where it can be extremely painful)
  2. Functional Programming style and closures (code is more readable and quicker to write)
  3. The actors concurrency library (simplifies concurrent programming hugely)

So to conclude:

  • Is scala any good? Yes - it's fantastic
  • Is it ready for real enterprise use? Yes - there are quite a few compaies using it now, including Twitter, Sony and EDF
  • Are the gains worth the adoption cost? Yes - absolutely
oxbow_lakes
I wouldn't advertise that Twitter uses it... not with the notoriety Twitter has. I knew what the Twitter Fail Whale was years before I actually created an account there.
R. Bemrose
The Twitter migration of its message queues from Ruby to Scala occurred in the last 18 months I believe. Very possibly the scala migration was made to address the issues you are familiar with. I'm not a twitter user myself!
oxbow_lakes
I don't have direct knowledge of the circumstances, but the Twitter migration to Scala was to address the fail whale issues, and post-migration Twitter now has better uptime than Facebook according to some recent reports.
Alex Neth
+2  A: 

I have been programming in Java for many years, and Haskell and OCaml for the last two years. A few months ago I began developing a personal project in Scala, and it's wonderful. A real type system and all the Java supporting libraries.

The ease of mixing Java and Scala means the language definitely has a future. Adoption costs for an existing Java project are very low.

David Crawshaw
+2  A: 

Not sure if this info helps, but I'm building an online gaming server for a successful and established gaming company, using Scala and Project Darkstar.

Our design is specced to scale to half a million to ten million users (thanks, Amazon EC2!), and Scala gives me extra confidence in my code for five reasons: 1. I catch more things at compile time. 2. It's easy to make much of my game data immutable. 3. Higher level code means that I'm less likely to get a trivial implementation mistake. 4. Shorter, simpler code makes it easier for me to review and find errors. Implicit conversions are a big part of this. 5. The happier I am writing code (and Scala generally makes me happy), the better job I do.

Scala isn't a panacea, and it's got plenty of warts (namely lack of any great tool support) but it's by far the most productive language I could be using for this purpose.

My only complaint is that I wish it could compile down to C or heavily macro'd assembler, as the limitations of the JVM often irk me (type erasure, lack of stack types and by-value object arrays).

I don't think Scala is that popular yet, the 2.8 conversion is woefully behind and has created a rift in the community, and the tool support just isn't there. But if you're a cowboy coder who's not afraid of algebraic type theory and lack of autocomplete, it's hard to go wrong.

If you do decide to use it, do yourself a huge favor and buy Odersky's book. I tried for a while to code in Scala without it, and it was almost impossible to do anything the "scala way" (not that there's consensus on that).

Justin W