Comment by timshel2

9 hours ago

Scala punching the air rn

80% of Java features in the last few years are Scala features with worse syntax, because the better syntax would not be backwards compatible. It's not good for Scala 3 adoption in industry , but I would argue Martin has no interest whatsoever helping that. He's happy with his research language that somehow has enough good features some companies put it in prod. Languages that care about industrial usage just organize themselves differently.

No affiliation with either, but I don't think Java and Scala are punching at each other, and they're both doing great. Needless to say Java has continued to exceed expectations and given its huge role in the world, that's worth [handwave very huge number] in consumer welfare. Scala has evolved the last several years to again become perhaps the most interesting big-ish application language, eg see Odersky's recent https://scaladays.org/session/opening-session-keynote/ and https://dl.acm.org/doi/10.1145/3786335.3813127

I still write Scala. But not sure for how long. I swear, it's such a joy to write code in Scala.

It's like French poetry.. So much elegance. An no effect system BS. Just like Martin Odersky intended it to be!

  • I like a lot of Scala but dislike implicits. I feel like it is the wrong abstraction in that it is similar to implicit type conversion in C/C++, making it harder to reason about what the code is doing and navigating to the types/methods being called.

    I prefer extension methods for what Scala implicits do [1], [2]. The only part that is lacking with extension methods is to be able to extend a type to implement an interface, e.g. Comparable, but you can create extension methods that return anonymous objects [3].

    [1] https://kotlinlang.org/docs/extensions.html#anonymous-extens...

    [2] https://learn.microsoft.com/en-us/dotnet/csharp/programming-...

    [3] https://discuss.kotlinlang.org/t/extensions-function-to-impl...

  • >it's such a joy to write code in Scala.

    Yes, but also a bit of a torture to read code in it..

    • Scala is its own worst enemy in this respect. It’s both too close to Java and too far.

      Too far: there are several dialects one can use with it e.g., I can speak Haskell with Scala grammar. Unlike with Java there is no central Scala dialect, so reading/maintaining a Scala codebase can be a challenge.

      Too close: its type system, as advanced as it is, is still stuck in Java’s inheritance and all its limitations. Traits, for example, are not runtime components, they dissolve into the hosting class’ single object, giving up the independent identity and flexibility of runtime configured composition. And the Scala 3 `exports` feature that departs Java’s inheritance is just forwarding, not true delegation; it is the inverse of traits: it trades self identity for independent identity (no late-bound self that comes free with impl inheritance).

  • Yes it is like French poetry - not many people like it. I've been on a Spark project the last 2 years and its a horrible code base. Everyone on the team hates it, will move to PySpark next year. Scala is dead.