I think arguing for Scala to have a pronounced “better Java” aspect was reasonable until the aforementioned changes in the JVM ecosystem as it had the potential to drive adoption. Now when you are picking a statically typed JVM language, you have to justify Scala not only against Java but also against Kotlin. Both enjoy wider adoption and bigger names behind it. This on itself makes arguing for Scala a difficult uphill battle. Then you look at the actual languages and see that you have a “better Java” on the one hand and a “better Java with HKT and implicits/givens and a buch of alien-to-Java-devs concepts on the other”. I just don’t see someone who’s after a “better Java” to choose Scala over Kotlin at this point.
At the current climate Scala just has to target a different segment. Offer a better language and a consistent world view of its own, thus differentiating itself from both Java and Kotlin. Does this mean it has to become exclusively a “poor man’s Haskell” on the JVM? I don’t think so, but it is probably benefinial to allow that paradigm to have a substantial influence. Maybe others too, but the kitchen sink syndrome should also be avoided in the process. It does however mean that it needs to be different, better, and better not just from the devs’ but from the business’ point of view.
I replied to what you wrote. Maybe you had more specific concerns in mind than what you expressed, but given the title of the topic and what I quoted from you I find my reply relevant.
The good news is it never will. I would be surprised if anyone with influence over the Scala Improvement Process would ever say “let’s remove support for imperative programming”. I for one wouldn’t mind if in the name of offering a clean and consistent world view / paradigm some “javaisms” would be behind a compiler flag, but even that is more than unlikely to happen and either way, this stuff will stay with the language forever AFAICT.
That’s as far as you mentioning procedural/impreative approach goes. I find your “processing big data” orthogonal to all this, so won’t address it. It does however open a different discussion, the one of the killer app, that is so often seen as a prerequisite for a language to succeed. Scala is loosing on the JVM to Kotlin (and Java), on the Spark and big data front Python is eating up everything…
I personally don’t buy the killer app argument. A language either is a better choice or it is not. But I can see that the world does buy it. Maybe the best would be to pick one or more application(s)/domain(s) where things can be improved at least as much as Ruby/Rails improved web dev compared to J2EE/EJB of the early 2000’s, in addition to providing this unique world view. What these should be though… good question.