译者序
尽管 Google 在 2017 年的 I/O 大会上就宣布 Kotlin 为 Android 开发的首选语言,但在
2019 年的 I/O 大会被再次提及之前,Kotlin 在国内的推行都并不顺利,常常有人问为什
么一定要用 Kotlin,为什么要学习 Kotlin。我也常常能听到一些老生常谈的回答:空
安全,代码简洁,新增了函数式的语法,等等。但是今天我想从另一个角度来谈谈这个
问题。
如果你和几年前的我一样,是一个“保守”的 Android 开发者,那你对技术的理解可能
会被局限在这个单一的技术栈中。例如,你也许认为编程范式只有面向过程和面向对象
两种,而面向对象是最好的编程范式;你对异步并发模型的理解也可能仅限于 Java 上的
线程抢占式调度,而对其他调度方式未有所闻;你也许对 JVM 相关的各种原理非常熟
悉,但对一些直接编译为操作系统二进制码的语言不甚了解,甚至有所抗拒。
但 Kotlin 是一个引子,在 Kotlin 中你将学到初等的函数式编程,可能会因此了解
Haskell、Lisp 等正宗的函数式编程语言,而这是一个近乎与命令式编程相对的平行世
界;在学习 Kotlin 协程的过程中,你会发现除了抢占式调度,还有协同式调度,这是一
种更安全的实现异步与并发的方式;当学习到一定阶段后,你也许会尝试 Kotlin/Native,
从而了解原生二进制程序是如何工作的。当然,Kotlin Multiplatform 也许会帮助你触及
iOS 开发,而 Kotlin/JS 也许会带你走入前端的大门。
在我看来,Kotlin 是 Java 技术栈通向更广阔的编程世界的万向门,在你通向这些曾经所
不了解的技术领域的初期,你不必精通多种语言,只需要使用 Kotlin 足矣。当然了,本
书并不包含范围如此之广的内容,它将带你迈出走进 ...