Aha, then I did not understand your initial statement correctly. I most certainly agree that this approach is preferable and that it’s quite the consensus.
I don’t know if I like Scala because it’s a “better Java”; I’m not even sure that I see it that way. I do, however, believe that it’s one of the major advantages that the language has - the ability to (almost) seamlessly use Java’s SDK, libraries and tools.
I’m not sure it’s an orthogonal issue. First, the richness of the language might not come without a cost, but that cost can be mitigated, as is being done with Dotty. Second, there is always the option to give up on expensive features that are not so popular.
Type-safety is hardly a unique feature for Scala. That’s one of the most common characteristics among programming languages. However, I do believe it has a unique combination of these characteristics:
- Type safety.
- Subtyping.
- Classes as first-class citizens.
- Functions as first-class citizens.
- Heavy bias towards immutability.
- Pattern matching.
- Generics.
- Extension methods.
- Type classes.
- REPL.
- Extensive concurrency API.
- Interoperability with JVM ecosystem.