Scala allows you to do the same thing in many different ways, and with operator overloading ... the approach you chose to coding defines almost a 'custom syntax' for a project.
Which makes it very hard to read sometimes - you have to infer the 'style' before you can get too far.
To be fair - that's a different kind of 'inconvenience' than C++ from C - but the comparison is pragmatically valid.
The problem is that Scala seems to attract the same type of thinking as C++, where there is a culture that rewards obscure, bizarre syntax.
I mean, why is it an exclamation mark to send messages to actors in Akka?
I need to write code to get things done. I want to spend minimal time figuring out bizarre operator-overloaded library syntax.
http://www.flotsam.nl/dispatch-periodic-table.html
When I was a teenager, it was fun to do that in C++ until I realized everybody thought it was fun but their version of fun wasn't compatible with my version of fun.
Yes. But their cultures are a little different.
C++ I think is 1/2 academic, 1/2 Engineering - with a lot of voices, and a lot of anachronistic 'grey beards' arguing over stuff. Even for Java, James Gosling said 'Sun less less a company than it is a debating society'.
Scala is almost purely academic - but driven by a single person / small team. Scala was not designed to solve an Engineering problem, thus it seems a little 'intellectually masturbatory' (pardon the term).
Scala is way to hard to learn - partly because it's a 'new paradigm' but partly for the reasons aforementioned. So it's only going to make it's way into production for specific entities.
Scala may have a 'big future' if tutorials, training and approaches settle down on commonly accepted standards and practices.
But it's not going to go mainstream because the alternatives are far more accessible.
The examples you mentioned are relative small. You know what's big? Walmart. WellsFargo. Honeywell. Novartis.
I don't think 'it will be a while' before Scala gets into those shops, I think it will be 'never' unless there is a change to how Scala is presented. As of 2016, it's still a little academic and cliquish.
Though I predict some things will change and it might gain popularity.
> The examples you mentioned are relative small. You know what's big? Walmart. WellsFargo. Honeywell. Novartis.
https://www.lightbend.com/resources/case-studies-and-stories...
https://www.lightbend.com/resources/case-studies-and-stories...
https://medium.com/@kvnwbbr/transitioning-to-scala-d1818f25b...
Which is cool, and doesn't surprise me.
But I don't see the trend lines of Scala heading in the direction they need to be in such that it becomes and incumbent language.
I don't see it as having enough disruptive power to break into the Javascript/C/C++/Java or even C# club.
My own experience is with Scala is that there is just way, way to much 'change' for some added value.
I wish they could make some tweaks to Java to incorporate some elements of Functional programming and I would be happy.
And before you blow up, it's possible to mix both styles, obviously Scala itself is an example of that.
A specific example: a lot of FP comes along with how collections, lists, maps etc. are managed and used. Lodash/underscore provides a lot of that for JS and makes a lot of JS 'functional-like'. If Java had such libraries with the mechanisms to use them (first class functions - Lambda's are not quite that) - then Java would be a lot better. Anyhow - to get the 'good things' about FP I don't think you need an entirely new linguistic paradigm.
So being able to use this language as a system language, I very much look forward to.
But your mileage may vary.
I don't think it is possible to create a language that can prevent dumb code from being written.
Some languages may be slightly worse than others, but the root cause (and solution) is the same across the board.
For starters, there's not the syntactic ambiguity (or at least human uncertainty) found so often in C++.
There may be language complexity, e.g. how visibility interoperates can be difficult in weird cases. But I can at least parse it.