I don't think the CoffeeScript comparison is fair. Kotlin fixes some major Java problems (NPEs and checked exceptions), CoffeeScript was almost purely sugar over JS semantics.
If you stick to two rules, you're out of misery
- never store null in a field, a collection, etc
- checks all parameters that are not nullable (most of them) with Objects.requireNonNull
(it's what Kotlin does automatically BTW)I would go as far as say 95% of them are. So now your code is filled with effectively pointless checks (you run into an error at runtime instead of compile time) if your language had non nullable variables in the first place.