The result is surprising … China, Russia, Poland are the top 3 countries based on the tests, not the usual expected countries such as USA, India, UK.
Reason: Mathematics ! China, Russia and Poland are strong in Advanced Math education in university. Functional Programming requires the Advanced Math eg. Category Theory.
Kotlin is a functional programming (FP) language which has the Category concept of co-Variance, contra-Variance. Java is object-oriented not FP, it has only Invariance.
Covariance and contravariance are terms that refer to the ability to use a less derived (less specific = CoVariance eg. Apple instead of Fruit) or more derived type (more specific = ContraVariance, eg. Gala instead of Apple) than originally specified.
Generic type parameters support covariance and contravariance to provide greater flexibility in assigning and using generic types.
Means that you can use only the type originally specified; so an invariant generic type parameter is neither covariant nor contravariant. (Java is always invariance.)
Delegation Pattern preferred over Inheritance : Why ?
eg. Rectangle (a, b) / Square(a, a)
- Inheritance: Square is a special case of Rectangle (b = a).
- Delegation: Square gets Rectangle to perform “Area” task …