You have a very narrow view of what makes a good general purpose programming, it's not just about its syntax and its type system.
Scala suffers from a lot of hurdles that make it awkward to use in production and which lessen its productivity:
- IDE support, still very shaky, each new version of the plugin adding new features and breaking old ones, and the plugins randomly refusing to work now and then
- Tool support in general (it's sad that the best build tool is sbt, I was hoping we had learned from ant and maven that we can build better build tools)
- Slow compilation and getting slower at every release (memories of C++ and template linking)
- Backward compatibility still a problem. The compiler is a bit better now but the library story is simply a non starter for most production work
- And overall, the overwhelming impression that Scala is to Java what C++ is to C. It's a very big language that keeps getting bigger at each release, despite Typesafe promising they are working to fix that. They also promised that Scala development would no longer be driven by papers published at conferences, but that's a lie as well.
Also, some influential Scala people have been leaving Typesafe recently, and not in very good terms (e.g. Paul Philips, who was the guy keeping the releases together).
I just have a bad feeling overall about the future of such a language.
SBT is not simple, particularly for complex edge cases, but once you get your feet wet SBT is really quite awesome.
The notion that Scala compilation gets slower with every release is complete nonsense and is a clear indication of one who is not using the language. Scala 2.10 + SBT 0.13 combined with sub projects (modules) completely obviates the notion that Scala is "slow" since incremental builds are near Java speed (full builds, yes, much slower than Java, but for development, where you spend most of your day, working in Scala is relatively snappy).
Scala is Java++, fair enough, no complaints there.
> some influential Scala people have been leaving Typesafe recently
some is plural, other than Paul P what significant core Scala member has left Typesafe recently? Paul is a compiler addict, he may have "left" Typesafe, but look at his commits, he's still going strong, I don't think the guy can stop, he's obsessed.
> I just have a bad feeling overall about the future of such a language.
OK, leave it to those that use the language: wanting a language to fail is different than watching it succeed.
I have a really great feeling overall about the future of Scala. This feeling is based on my 20 years programming experience with all sorts of languages, and Scala is the best one out there right now. The IDE support and tooling is far greater than for any other language that comes close to Scala. (When you code in Java, even the greatest tooling in the world will not help your productivity).
Good from what I understand. Counterclockwise for Eclipse (https://code.google.com/p/counterclockwise/) received commercial support and sponsorship last year and is under active development. Chris Granger's Light Table (http://www.chris-granger.com/lighttable/) is an interesting contemporary look at an IDE. Tim Pope's fireplace (https://github.com/tpope/vim-fireplace) adds inline evaluation, a repl and some other tools to Vim. There's emacs of course.
Complaining that Scala has too many features is like complaining that C++ has too many features, which is a valid complaint.
By the way, I didn't use capslock, I used shift.
Doesn't that only work if you're coding in isolation from bottom up? As soon as you include some library or start collaborating with someone who likes a different subset, you can't simply stick to what you know.
BUT: This is even exaggerated in Clojure, where you are forced to learn all the little libraries your collaborators use...
Many people complain about the complexity of Scala, or how many features it has, etc. Yes, there are some odd features (I am looking at you, native XML support), but these are features I NEVER use. Just learn the fucking type system (it's not that hard, all you need to understand for most of your coding is [A], [+A] and [A <: B] and you are set) and stick to the features you like / understand.
To those who praise the purity of Clojure: That is nice, but comes with a high prize. For example that you have to wait for something like Clojure.Typed, which is already a non-issue with Scala, because Scala comes with BATTERIES INCLUDED. Complaining that Scala has too many features is like complaining that Clojure has too many libraries.