I was recently talking to @SeanTAllen about Scala, and we both agreed that there was something about it that made us uneasy. Sean talked about being bothered by it’s “high cognitive load,” but it took us a bit to be able to verbalize why that cognitive load exists. One thing that Sean said that struck me was “There is a lot to like about Scala, but I keep being like ‘why do I have to remember that?’” I think what it really comes down to is lack of elegance.
When a tool or a programming language is elegant, its use and application feels intuitive: you can infer things and makes guesses about how to accomplish things, and those guesses usually turn out to be right. Part of its power comes from making sense in an organized, predictable way. In Scala’s case, however, power seems to come from a grab-bag of features and shortcuts which are mostly there to satisfy the longings of Java developers for greater programming efficiency. But why be a better Java, with all the baggage that entails, when you can be a better language period?
I think Scala is the wrong direction to be taking.