Ok, Scala is neat. It’s certainly the only way I can bring myself to use the JVM. The idea of everything being an object is a good one. You can ‘cheat’ a bit since you can use statements, mix in side effects, do whatever, but I understand the compromises for Java-interop, without which it would would have been just another unused academic language.
It seems to be a completely unopinionated language, which IMO seems not so great since there are too many ways to do anything, so in practice you’d have to pick some subset of features and stick with that, enforced as a style guide rather than by the compiler (much like all reasonable C++ programming is done today).
Even if you never plan to use Scala, the two courses on Coursera are recommended viewing.
Having done that, would I still use Scala? If I needed to use the JVM or existing Java libraries, this is a no-brainer. But without that constraint? Not quite sure. One of Haskell (for the type safety) or Go (for the reactive concurrency) might fit the bill just as well.
Anyway, I’m still working through these videos and I’ve yet to build anything half-way complex with it, so take all this with a grain of salt.
One open question I do have is whether Scala benefits from subtyping (which Haskell lacks). I’ve heard/read many viewpoints on this but haven’t come to a conclusion yet …
Update: I got some feedback to the effect of “you’re an idiot, you should just drop everything and use Go instead”, so I’m going to try that for a while and report back in … many months? Maybe.