Understanding immutable strings aren't at the same level. People concatenate immutable strings all the time in Java/Python, but that is despite the documentation mentioning immutability and proper concatenation method(StringBuffer followed by toString, list.append() followed by " ".join(list))
What-do-you-know, Scala has documentation too[1]! And it mentions that appending to a List is O(n).
[1] http://www.scala-lang.org/api/current/scala/collection/immut...
It takes a long time for a new general purpose programming language to displace existing general purpose programming languages if it doesn't fill a very particular niche for which there is a great demand.
Re performance, I recently implemented an algorithm in Scala that performs quite well. It didn't at first, but it was very easy for me to profile it using Java profiling tools and to tighten a couple of loops where most of the CPU was being consumed. I don't have any deep knowledge of Scala collections, but I know how to use a profiler. I don't think the initial implementation would have performed any better if it had been written in Java.
Once I had gotten things speedy enough, I was further able to speed everything up by 4X just by changing a collection to the parallel version of the collection. Then all four cores could crunch on it. If I had 8 cores, it would have no doubt run 8X faster. That parallelization came from tweaking only one line of code! I would have never achieved this 4X speedup in Java.