Unfortunately the article has no content whatsoever.
I expected reasons for why Scala is interesting, not the same opinions that fly around, like how Scala mixes OOP and functional programming with elegance (examples, please!) ... which IMHO, is quite far from the truth as there can be no elegance in a statically typed OOP language with functional features simply because you have a type-system mismatch.
I also take issue with this statement ...
> features like explicit sub- and supertype annotations, covariance and contravariance annotations, etc. which goes beyond what I've seen in other OO languages
... is quite false. Even if Scala's generics are quite advanced, they are still useless for offering anything resembling parametric polymorphism (unless you count Manifests from Scala 2.8, which are an ugly hack offering only limited relief ... but it's not like in Scala the features are orthogonal, so at least in that regard it has consistency).
You can paint a crow in so many ways, but it's still a crow.
I use Java, Groovy and Scala on a daily basis and the only thing I dislike about Scala is the fact that they seem to have chosen to be as unfamiliar as possible to the average Java programmer. It often feels like "although we could have designed it in a way so that it is familiar to you, we chose something different although it means the same thing".
Whereas Groovy tries to decorate existing Java classes and add some nice functional abstractions on top of them, Scala very often tries to enforce its own way of thinking or renaming identical concepts in a different way.
Groovy is much easier to adopt in my mind because of that. You can gradually adopt Groovy and groovify your code as you progress your skills with the language. In contrast to that, learning Scala is harder, because it often requires a complete mental shift.
2 comments
[ 4.3 ms ] story [ 16.4 ms ] threadI expected reasons for why Scala is interesting, not the same opinions that fly around, like how Scala mixes OOP and functional programming with elegance (examples, please!) ... which IMHO, is quite far from the truth as there can be no elegance in a statically typed OOP language with functional features simply because you have a type-system mismatch.
I also take issue with this statement ...
> features like explicit sub- and supertype annotations, covariance and contravariance annotations, etc. which goes beyond what I've seen in other OO languages
... is quite false. Even if Scala's generics are quite advanced, they are still useless for offering anything resembling parametric polymorphism (unless you count Manifests from Scala 2.8, which are an ugly hack offering only limited relief ... but it's not like in Scala the features are orthogonal, so at least in that regard it has consistency).
You can paint a crow in so many ways, but it's still a crow.
Whereas Groovy tries to decorate existing Java classes and add some nice functional abstractions on top of them, Scala very often tries to enforce its own way of thinking or renaming identical concepts in a different way.
Groovy is much easier to adopt in my mind because of that. You can gradually adopt Groovy and groovify your code as you progress your skills with the language. In contrast to that, learning Scala is harder, because it often requires a complete mental shift.