Can you elaborate? Do you mean that the criticism is valid (which I agree is), or that you agree with the conclusion of the detriments outweighing the benefits?
While I haven't used Scala on an "enterprise" scale, I can certainly agree with many of the criticisms. However, in my experience, Scala is still worth it.
I don't deal with training a team of developers, nor do I have to integrate with enterprise-scale infrastructure, so those things just don't apply to me.
What are the benefits of Scala? I can think of a few, off-hand:
1. Traits: I really like traits and the way that you can use them to encapsulate cohesive and reusable functionality. In some ways, traits allow you to do a form of aspect-oriented programming.
2. Case classes are a nice, simple way of creating basic data structures. In Java, creating a data structure that should have a proper equality implementation and a nice toString is a tedious chore. Granted, I think Clojures record's are better since they give you immutability, too.
3. Closures. Other languages also have them, but Java does not. Being able to use closures can really help deal with things such as handling events. In Java, you have to resort to creating inner classes, some of which end up instantiated as members of the class.
4. Judicious use of implicits can give you some half-decent DSLs.
5. 3+4: A nice implicit conversion of a one- or two- line block into an appropriate instance of a ManagerAdapterEventListener can really simplifiy the code.
6. The mixed paradigm approach can be a blessing sometimes. I do prefer the functional approach. However, if you have integrate with a heavily object-oriented framework, being able to be object-oriented can be helpful.
Overall, I would generally prefer Scala over Java for my projects. However, I do prefer Clojure over Scala.
I can certainly agree with many of the
criticisms. However, in my experience, Scala
is still worth it
Considering the alternatives, C++ was and is still worth it. However because of its popularity, it prevented and still prevents other languages from gaining critical mass, making it the only game in town, with the sole exception being Obj-C, but that's only because Cocoa was designed for it and Apple doesn't mind a little technology lockin either.