On Sun, Feb 16, 2014 at 8:57 PM, clay <[email protected]> wrote:
> Kotlin is odd in that it is extremely Scala-like and looks like it was
> created as a reaction to a few gripes with Scala such as compilation speed
> and better IDE toolability.
>
To me, Kotlin is much closer to Java than Scala. It's really the very
definition of an incremental improvement over Java: lambdas, extension
methods, properties, a few things that are quite unique to it, such as
delegated properties (which are very interesting beasts) and syntactic
sugar.
Ceylon is more in the middle between Java and Scala. It's a much more
ambitious effort to improve over Java and it's a language that is not
afraid of redefining the game (and using different keywords in the
process). Its greatest and most innovative contribution to the language
field is its native support for union and intersection types, something
which I am very excited about. From this simple concept flow some very
powerful type properties that solve a lot of the problems that languages
that have to deal with variance and subtyping have never been able to solve
cleanly (I'm including Java, Scala and Kotlin in this generalization).
For example, in Scala, the type of List(1, "a") is List[Any], while in
Ceylon, it's a fully typed tuple. Similarly, the most specific common
subtype of List(1) and List("a") is List[Any] in Scala and
List[Int|String]in Ceylon, arguably the best type you can infer.
Null support flows very naturally from union types as well, so that a
nullable value has the type Foo|Null and it can't be assigned to a
Foountil you explicitly make sure it's not of type
Null.
I'm very much looking forward to the next couple of years, when we start
getting a better idea where the JVM is headed once the fight between Java
8, Scala, Kotlin and Ceylon start shaking itself out.
--
Cédric
--
You received this message because you are subscribed to the Google Groups "Java
Posse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/javaposse.
For more options, visit https://groups.google.com/groups/opt_out.