
1.1.1 多范式编程
Kotlin把我们当作成年人对待,它提供选择,让我们选择最适合手头问题的方法。这种语言很少有什么仪式,你不需要在类中编写所有的内容,也不需要编译每一段代码。该语言在很大程度上是非武断的,并提供了不同的编程范式供你选择甚至混合使用。
你可以在下图中看到Kotlin支持的不同编程范式。

你可以像在JavaScript或C中一样直接在文件中编写过程代码,也就是说,编写代码和函数,并且将其作为脚本来运行,而无须任何额外的编译步骤,但却具有所期望的静态类型语言异常类型安全性。这样做的好处是,你可以对自己的想法进行快速原型化,或者演示如何使用特定的设计模式,但又不会被其他语言经常强加的仪式所淹没。这给你提供了从创意到演示的最短时间。
就像在Java中一样,你可以用Kotlin创建类并编写面向对象的代码,但是不需要太多样板代码。因此,使用更少的代码就可以获得与Java相同的结果。Kotlin指导你有意而不是无意地创建类的层次结构。默认情况下,类是final(最终)类,如果你想将一个类用作基类,必须显式指定。此外,委托具有语言级的语法,因此我们可以在继承和委托之间谨慎选择。
尽管主流世界主要使用命令式编程风格,但使用函数式风格编写的代码没有那么复杂,更简洁、优雅和流畅且具有表现力。Kotlin对命令式和函数式编程风格都提供了特殊的支持。你可以很容易地从支持该范式的其他语言中常用的关键功能中获益。
你可以直接使用Kotlin语法的优雅和简洁特性来创建内部领域特定语言(DSL)。除了创建自己的流畅的API之外,还可以从大量不同库的流畅性中获益,例如用于Spring框架的Kotlin API[1]。
除了使用Java开发工具包(JDK)进行并发编程外,还可以使用Kotlin的协程来编写异步程序。对于使用云服务或部署为微服务的应用程序,该特性至关重要,它允许你与其他服务有效地交互,来异步交换数据。
[1] https://spring.io/blog/2017/08/01/spring-framework-5-kotlin-apis-the-functional-way