4 ms·
It is only because you are familiar with Java. Scala is much different language so it looks unfamiliar to you. But familiarity is not objective simplicity. Java
by pkolaczk 7y ago
It is only because you are familiar with Java. Scala is much different language so it looks unfamiliar to you. But familiarity is not objective simplicity. Java has many more gotchas and irregularities than Scala, and you just got used to it, so you don't see it. Primitive types vs boxed types, static state, default methods (poor man's traits), unsound array types, etc to name a few.
Also it is funny to see how Kotlin or Swift are marketed as simple languages when they managed to literally copy 90%+ of Scala features and make some actually even more complex (eg nullability).
If you say "overcomplicated" it suggests you have a simpler solution for the same problem in mind. So, what exactly would you simplify in Scala? Which unnecessary features would you remove? It is easy to throw an "X is overcomplicated" statement but much harder to point to concrete things that could be done differently. Sure, some stuff could be easily removed, but not without making the language less expressive.
- gentaro_ 7y agoI think an issue is a different mindset. I haven't done OOP for a long time. After Haskell, Scala feels a bit verbose and actually rather complex. I had a go at Scala a few years ago, it felt like a breeze after Java and C++. I think I can confirm your perception that that's a question of familiarity. I'm now embracing the JVM, and Frege is not an option. It'll be a mid-term transition for me. But it's already nice to rediscover some functional paradigms in Scala and apparently sane design choices when it comes to mixing the object-oriented with the functional style, at least I think I like it better than OCaml. I'm bothered by Scala's performance as compared with Java. Kotlin's seems to be in parity with Scala in this context, but both by an order of magnitude off from Java's. However, I can't vouch for the "benchmarks" I've come across and I'm not yet familiar enough with either to conclude which features could be detrimental to JVM's performance. I would wholeheartedly appreciate your take on that.
- bitL 7y agoLook, Java was born when C++/CORBA dominated investment banking and everybody was having headaches with those. Java was like "manna from heaven" that made everything orders of magnitude simpler. It still didn't get everything right, like too much boilerplate, but simplicity of approach was there. Then Scala arrived, and obfuscated everything. It didn't retain simplicity of either Java or Haskell, instead went full-blown C++ "many styles" way. As a consequence, either all of your team is on the same level in the same areas in Scala, or you are going to have "fun" in production. In Java the syntax was quite trivial, in Scala one has to fight with DSLs of different frameworks and unintended consequences of various higher-order structures originally designed to be "simple".