| For me personally, main problem with Scala is somewhat hard to explain, but can be summarized with few very abstract phrases which are overlapping: * Dirty (opposite of Clean) language. * Relationship between theory and practice is so far away from being "1 to 1". * "Not In My Head" anti-patterns (something that will constantly require checking your notes/internet if you haven't worked with it within e.g. a month) everywhere. Everything seems to be made overcomplicated on purpose for no reason (apart from JVM compatibility I guess, which is no excuse for me as user). Starting from simple things, variable function declarations, so many ways to declare functions, so much theory on var/val/def/lazy/ and how they differ at some corner cases. Function vs. Method stuff in combination with currying/partial application makes things so overcomplicated with so many corner cases which I will never be able to remember. I mean I have many pages of my notes from time I studied Scala, consisting just of corner cases and explanations of why they are present. If you consider how Golang is viewed by many - as huge step back in our knowledge of language design. I consider Scala as step back in what is known in clean code, overall lessons from designing nice products. It just makes me feel like, it betrays everything I care internally and if Scala becomes dominant platform, it would just show to me that we as an industry just don't have standards and can accept just anything, we will never have something nice, close to perfect. So my stance on Scala: * If you just want to learn functional programming - pick something else, F# for me looked a lot cleaner and much closer to "1 to 1" - you can just apply functional theory without fighting the language. * If you looking for language to make you happy - don't pick Scala. Unless you're into "The Abyss" thing @ Crockford. * If this is for the money or because it sucks less than X (e.g. Java) in some ways - Scala is good consideration. |