who exactly are those Java developers that dismiss current Java options and are waiting for prototype languages? I was honestly unaware that someone important in the community had that opinion, can anyone provide references of those opinions?
It claims that we should "start by being honest", and the whole article argues that there should be no other alternative JVM language except Scala?
Well, for some people Scala means just too much incidental complexity for too little power gains, and are trying to find different balance on complexity/power scale by inventing different languages. I can't see what's wrong with that.
Well, for some people Scala means just too much incidental complexity for too little power gains, and are trying to find different balance on complexity/power scale by inventing different languages. I can't see what's wrong with that.
Exactly! It's easy to make sweeping predictions of obsolescence when you don't even address the criticisms these alternatives levy against Scala. For many, Scala is too functional/academic, and alternative implementations have a real chance of snatching up developers who want just want a cleaner/simpler Java.
The fact that so many people think that Scala is too complicated is empirical evidence that it is, in fact, too complicated, where "too complicated" is defined as "a lot of people find it too complicated". I'm comfortable with that definition.
Gosu has plenty of problems and, admittedly, covariance is a logical hole, but it was an explicit choice: we didn't think the power to weight ratio of the other options were high enough. Daniel Spiewack (Scala expert, very nice guy, and incredibly smart) gave a talk at OSCON on the complexity of the Scala type system:
So even a Scala expert is starting to wonder about the wisdom of pursuing the One True And Sound Type System.
At some point, the statically typed guys have to look at the success of dynamically typed languages and wonder just how much static typing matters. We think it matters for tools, mostly, so we picked a type system that isn't sound, but usually does what you want and gets out of your way. That might work for you, it might not: but we are grownups and we've though about it more deeply than this guy apparently thinks we have.
Here here. I can not agree more about your statement:
"for some people Scala means just too much incidental complexity for too little power gains"
I've been telling fellow developers this when asked why I'm not interested in Scala: There isn't enough there for the trade-off in switching to another language. If I use Clojure I get the magic of a LISP. If I use Groovy I get all the power of a dynamic language. If I use Scala, I get..... Java++? Not enough for me, there's so many good options for JVM languages, I will happily use Clojure/Groovy AND plain ol' Java underneath the hood if needed.
3. Static typing with a concise syntax => no need to write tests for type errors. The Lift devs claim allows less total code than an equivalent Ruby app. (See David Pollack on Quora)
4. Functional syntax and Erlang style lightweight message passing, giving you the ability to more quickly pick up Haskell, Ocaml, Erlang etc. if you ever desire.
Not a bad list.
Regarding Clojure, I'm a fan of it too, but wasn't planning on jumping on that bandwagon till the JVM has invokedynamic, lambdas, and closures (eg, Java 8 out and relatively stable). But lots of people obviously are now, especially Rubyists it seems, including Heroku. Why is that?
You need not wait for invokedynamic to try Clojure. There is hardly any dynamic dispatch that can take advantage of that AFAICT.
Lambdas/Closures when they come to Java will certainly be backward compatible with the JVM (and hence just syntactic sugar) and will implement Runnable/Callable in some form.
9 comments
[ 3.0 ms ] story [ 24.2 ms ] threadIt claims that we should "start by being honest", and the whole article argues that there should be no other alternative JVM language except Scala?
Well, for some people Scala means just too much incidental complexity for too little power gains, and are trying to find different balance on complexity/power scale by inventing different languages. I can't see what's wrong with that.
Exactly! It's easy to make sweeping predictions of obsolescence when you don't even address the criticisms these alternatives levy against Scala. For many, Scala is too functional/academic, and alternative implementations have a real chance of snatching up developers who want just want a cleaner/simpler Java.
Gosu has plenty of problems and, admittedly, covariance is a logical hole, but it was an explicit choice: we didn't think the power to weight ratio of the other options were high enough. Daniel Spiewack (Scala expert, very nice guy, and incredibly smart) gave a talk at OSCON on the complexity of the Scala type system:
So even a Scala expert is starting to wonder about the wisdom of pursuing the One True And Sound Type System.At some point, the statically typed guys have to look at the success of dynamically typed languages and wonder just how much static typing matters. We think it matters for tools, mostly, so we picked a type system that isn't sound, but usually does what you want and gets out of your way. That might work for you, it might not: but we are grownups and we've though about it more deeply than this guy apparently thinks we have.
Sometimes I want to give up on HN.
1. The performance of Java
2. The brevity of Ruby/Python
3. Static typing with a concise syntax => no need to write tests for type errors. The Lift devs claim allows less total code than an equivalent Ruby app. (See David Pollack on Quora)
4. Functional syntax and Erlang style lightweight message passing, giving you the ability to more quickly pick up Haskell, Ocaml, Erlang etc. if you ever desire.
Not a bad list.
Regarding Clojure, I'm a fan of it too, but wasn't planning on jumping on that bandwagon till the JVM has invokedynamic, lambdas, and closures (eg, Java 8 out and relatively stable). But lots of people obviously are now, especially Rubyists it seems, including Heroku. Why is that?
Lambdas/Closures when they come to Java will certainly be backward compatible with the JVM (and hence just syntactic sugar) and will implement Runnable/Callable in some form.