朱涛 · Kotlin 编程第一课
朱涛:中国区第 2 位 Kotlin、Android 领域的谷歌开发者专家(Google Developer Expert),前陌陌内部创新业务的 Android 负责,博客《Kotlin Jetpack 实战》作者
课程介绍
Kotlin 最吸引目光的地方就在于它与 Java 100% 互操作,它知道开发者喜欢什么、讨厌什么,它甚至知道开发者容易犯什么样的错误,从而在语言设计的层面就规避错误。
Kotlin 是一门易学难精的语言。Kotlin 的语法非常简洁,极其容易入门;但同时它又拥有许多的新特性,比如协程、函数式编程,这些并不容易掌握。这就导致,在学习时很容易浮于语法表面,却体会不到 Kotlin 设计的美感,悟不出 Kotlin 特性的应用场景,看不到 Kotlin 底层的实现原理,也很难能写出优雅的 Kotlin 代码。
课程主要分为四大模块。
- 基础篇:这个模块会帮你集中精力攻克 Kotlin 的核心语法
-
协程篇:协程是 Kotlin 当中极其重要、也是极其难学的特性。这个模块会深入讲解协程当中的各个概念,并且会给你介绍协程的思维模型,帮助你完成
线程思维到协程思维的转换。 - 源码篇:Kotlin 官方源代码里面充满了 Kotlin 的最佳实践。通过研究 Kotlin 的源代码,可以去探究它底层的原理,进一步加深对 Kotlin 理解。
- Android 项目篇:Kotlin 目前最主要的应用还是在 Android 领域。如何使用 Kotlin 来提升开发效率?如何将 Kotlin 的特性融入到 Android 的架构设计中?
课程目录
开篇词 | 入门Kotlin有多容易,精通Kotlin就有多难
基础篇 (14讲)
- 01 | Kotlin基础语法:正式开启学习之旅
- 02 | 面向对象:理解Kotlin设计者的良苦用心
- 03 | Kotlin原理:编译器在幕后干了哪些“好事”?
- 04 | 实战:构建一个Kotlin版本的四则运算计算器
- 05 | object关键字:你到底有多少种用法?
- 06 | 扩展:你的能力边界到底在哪里?
- 07 | 高阶函数:为什么说函数是Kotlin的“一等公民”?
- 08 | 实战:用Kotlin写一个英语词频统计程序
- 09 | 委托:你为何总是被低估?
- 10 | 泛型:逆变or协变,傻傻分不清?
- 11 | 注解与反射:进阶必备技能
- 12 | 实战:用Kotlin实现一个网络请求框架KtHttp
加餐
- 加餐一 | 初识Kotlin函数式编程
- 加餐二 | 什么是“表达式思维”?
春节特别放送 (4讲)
- 春节刷题计划(一)| 当Kotlin遇上LeetCode
- 春节刷题计划(二)| 一题三解,搞定版本号判断
- 春节刷题计划(三)| 一题双解,搞定求解方程
- 春节刷题计划(四)| 一题三解,搞定分式加减法
开篇词 | 入门Kotlin有多容易,精通Kotlin就有多难
Java 语言的一些缺陷:
- 语法表现力差:不支持 Lambda 表达式(1.8 之前),不支持高阶函数、参数默认值、函数命名参数
- 可读性差,难维护:一旦 Callback 嵌套超过 3 层,代码可读性就会急剧下降
- 语法更容易出错:基础类型的隐式转换,内部类持有外部类的引用
- 并发编程是一大难题:线程、并发、同步机制
Kotlin 就是为了解决这些问题而生的。
Kotlin 为什么值得学?
-
第一,极高的生产效率:Kotlin 具备
简洁的语法和现代化的语法特性,让使用者可以用更少的时间,以更高的标准,来完成更多的工作 - 第二,强大的兼容性:Kotlin 可以与 Java 混合编程,可以复用从前的 Java 代码,可以在老旧工程的基础上用 Kotlin 开发新功能
- 第三,科技巨头加持:2017 年,Google 宣布 Kotlin 成为 Android 的官方语言
随着 2021 年 Android Jetpack Compose 的发布,JetBrains 在其基础上又扩展出了 Compose-jb,让 Kotlin 还能跨平台编写 UI 界面。
Kotlin 到底难在哪?
带着 Java 经验学习 Kotlin,这既是一种助力,同时也是一种阻碍。在 Kotlin 学习的前期,Java 经验可以帮我们快速掌握它的语法,但到了后期,我们脑子里的 Java 老一套会限制我们进一步提升。如果我们迟迟不转变自己的思维,只会在 Kotlin 学习之路上越跑越偏。
Java 开发者学习 Kotlin 的难点,主要在于思维的转变:
- 不变性思维:Kotlin 中定义一个变量、集合的时候,要明确它的不变性,以尽可能地消灭可变性
- 空安全思维:Kotlin 的类型系统分为可空和不可空类型,这样的设计彻底改变了我们的编程习惯
- 表达式思维:Kotlin 当中的 if、else、when 之类的语句,也能作为表达式来使用
- 函数思维:Kotlin 是一门积极拥抱函数式编程的语言,函数是 Kotlin 中的一等公民
- 协程思维:Java 开发者脑子里只有线程思维,而对协程一无所知
Kotlin 学习之路大致分为三个阶段:
- 第一阶段,初窥门径:以 Java 的思维写 Kotlin 代码,而 Kotlin 独有的特性却很少用到
- 第二阶段,登堂入室:开始钻研 Kotlin 新特性的原理、使用场景,开始感受到 Kotlin 语法的美感
- 第三阶段,豁然开朗:学习 Kotlin 的协程,研究协程源码、在工作中实践,最终豁然开朗
怎么学习 Kotlin?
Kotlin 当中涵盖了很多新的语言特性,要学会这些新特性的语法其实很简单,但是要理解 Kotlin 设计这些新特性背后的意图,却不容易。只有当我们知道 Kotlin 为什么要设计这些新特性,我们才能弄清楚这些特性的最佳使用场景。
在课程中,我会尽量去揣测 Kotlin 设计者的思路,去对比 Kotlin 和 Java 语法的差异,然后用一些实际案例来给你讲解 Kotlin 新特性的使用场景。
2018-01-03