Tommy, your view appears to be the same view as many in my company,
but I see some flaws in it.  My response is inline below:

On Sep 10, 3:03 am, Tommy <[email protected]> wrote:
> You mentioned you'd chose Scala over Clojure because it's easier to
> migrate to.  What do you mean by that?  Migrate from what and to
> what?  Are you sure your company needs to adopt Scala for a strategic
> reason?

Migrating from Java.  To be fair, people started looking at Groovy to
make unit testing easier.  But it wasn't long before that started to
make its way into the production code.  And that's fine with me...why
keep the good stuff relegated to just the tests?  The problem, in my
mind, is that adopting a new language is a Big Deal.  I'll admit
that.  If I'm going to introduce a disruptive technology for the
purpose of making an investment in the future, is Groovy really the
best investment I can make for production code?  I don't think it is.

> It's especially good for quick/prototype/RAD type apps.

I don't doubt it.  Not sure Scala isn't also good at that, though.
True, you do have to type some things, but type inference makes that
not really a  hurdle.

> It's also great for maintenance/support perspective

Here's where I significantly disagree.  Data types are a valuable and
non-trivial form of self-documentation.  If I'm looking at code I've
never seen before, it's difficult to know what's going on.  If that
code also doesn't have any types, I *really* don't know what's going
on.

> From my experience, companies don't decide to building
> realiable, robust, enterprise apps all the time whereas the small,
> quick, "out the door" apps are more common and Groovy/Grails probably
> suits better.

This strikes me as puzzling.  Reliable, robust applications are not
the common pattern?  Throwaway applications are the norm?  Maybe I'm
reading too much into that.

> IMHO, it's difficult for Scala to gain widespread use until the
> industry realises the benefit of functional/declarative languages.
> From what I hear, the power of Scala comes from its functional
> aspects.

The functional aspect is *a* significant feature for scalability,
concurrency, and parallelism, and really hits to the "investment" I
was referring to.  But it's just that: a feature, it's not the
feature.  Scala is also more object-oriented than Java AND it's
functional AND it has type inference.  It's all these features that
give it that frequent complaint that it's "too complex".  I'll concede
that more features means more cognitive load, but I'd also argue that
"too" complex is a very subjective opinion.  A team could adopt Scala
and use absolutely none of the functional features and still get
benefit, but I guarantee this would never happen.  It's impossible,
once you start, to not start seeing the advantages that simply
predicates on collections give you.  Heck, a major part of Google
Collections are built on this very premise.

> From a management/strategic perspective, it's probably more risky to
> adopt Scala too.  Imagine a super-duper Scala programming builds this
> awesome enterprise app and leaves.  Where are you going to hire the
> skills to support, maintain and extend it?  Even if you do find the
> skills, he or she will probably be just as expensive as the super-
> duper Scala programmer that built it in the first place.

If the application in question is written in Groovy using full Groovy
features, is that really any different?  You introduce a new language
and build a significant application in it, the person who takes it
over will have to learn that language.  You're essentially arguing
that Groovy is significantly easier to learn than Scala, and I have no
evidence to refute this possibility, but you're also implicitly
arguing that in order to learn Scala you have to be a "super-duper"
developer: hard-to-find, extraordinary, and extra costly.  I know this
is not true.  It *is* true that you *can* write a very complicated DSL
in Scala that would be very hard for someone else to pick up and
modify.  But you run this risk in any language that supports DSLs
(hence the argument against Lisps) and wouldn't apply in the vast
majority of applications that have nothing to do with custom DSLs.

-- 
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en.

Reply via email to