I mentioned that Kotlin is less verbose than Java. That’s because it embodies a “less is more” philosophy requiring less boilerplate code, resulting in less maintenance and fewer errors to fix. Kotlin has other features that make it clean and fluent, like synthesizing some code instead of making you write it and deeming the semicolon optional.
Beyond its relative elegance, I like that Kotlin surpasses a lot of other statically typed languages by offering more compile-time safety.
For one thing, it distinguishes nullable types from non-nullable types. In addition, Kotlin embodies the strong type inference of languages like Scala, F#, and Haskell. Kotlin saves you from entering certain type details that are otherwise apparent, but it also requires enough specificity to make code type safe.