慌的一批, Kotlin 这么优雅的语言为什么不火呢

2020-07-13 17:10:17 +08:00
 iseki

真是,两年没写 Java 了,之前写了两礼拜 Java 没给我急死,手速远远跟不上脑子的速度。。。 但是看看社区,有一种不温不火的感觉呢,慌······

43925 次点击
所在节点    Kotlin
181 条回复
iseki
2020-07-13 20:26:12 +08:00
在我看来 Coroutine 就是个大号语法糖,你不用他也能写,就是得多费点脑细胞 emmm
sagaxu
2020-07-13 20:26:16 +08:00
@wysnylc IO 意味着要么阻塞要么回调,阻塞会占用线程数,而回调写起来太麻烦了。
wysnylc
2020-07-13 20:26:39 +08:00

协程并没有你们想象中的厉害,反而暴露出一些已经被解决的问题
sharpy
2020-07-13 20:27:40 +08:00
kt 里那个 sum enum 写法,和 scala 一样,设计得有点儿难看
wysnylc
2020-07-13 20:28:05 +08:00
@sagaxu #62 回调地狱在 2014 年发布的 Jdk8 中的特性 Completablefuture 早已经被解决,6 年过去了你还是没有更新过对 Java 的知识点
iseki
2020-07-13 20:29:16 +08:00
@sharpy 哪一点? sum enum 是指···
iseki
2020-07-13 20:32:04 +08:00
其实就 Java 生态(如 Spring )大量利用 ThreadLocal 的这些问题,Coroutine 都有对应的支持,Kotlin coroutine 本身也在不停演进······另外 Coroutine 提供的功能是 Completable 的超集
sharpy
2020-07-13 20:32:27 +08:00
@iseki 只是粗看了一下,记忆里是这样,和 scala 好像都是 sealed 关键字,当初做那本 scala 红皮书,这玩意儿写起来有点儿蛋疼,swift 和 rust 里简洁多了
hslx111
2020-07-13 20:38:31 +08:00
现在好多后台开始用 Go 了。。。
sagaxu
2020-07-13 20:38:41 +08:00
@wysnylc 别扯了,future 和 promise 只是解决了回调的代码缩进问题,根本没解决流程控制的复杂度。一旦业务复杂,涉及到循环和递归等控制,异常的传播,future 写起来还是太麻烦了。曾经负责过公司一个大量使用 future 的项目协程化,协程真香。
iseki
2020-07-13 20:40:40 +08:00
@hslx111 直来直去的讲,我总觉得 go 是一个 xx 的设计( xD
wysnylc
2020-07-13 20:43:21 +08:00
@sagaxu 关于协程上面我有知乎讨论的地址和截图,你看看再说吧
hantsy
2020-07-13 20:43:28 +08:00
@sagaxu Kotlin 的 Coroutines 还是用 Thread 实现的。
hantsy
2020-07-13 20:45:11 +08:00
@sharpy 莫急,马上 Java 15 的 Sealed 就出来了,配合现在 Java 14 的 Pattern Matching 你就不用羡慕 Scala 了。
iseki
2020-07-13 20:45:36 +08:00
Kotlin 中的 Coroutine 本质是语法糖,本质是 CPS 变换,和 Thread 不是一个层面的概念,不要混淆比较好 详情建议阅读: https://github.com/Kotlin/KEEP/blob/master/proposals/coroutines.md
hantsy
2020-07-13 20:48:36 +08:00
实在对 Coroutines 没太多好感,同时也讨厌类似的 Promise ( async, await 这些),要么用同步方式,要么 Functional 流式。
Mistwave
2020-07-13 20:52:40 +08:00
@sharpy 大概是想说 algebraic data type 的 sum type 吧,Scala 这个确实恶心,没办法,要兼顾 oo 。Haskell 就爽多了。

写 Scala 吧,更爽🐶
hantsy
2020-07-13 20:55:44 +08:00
以前看 Android 的时候,看 Kotlin Coroutines 针对不同的情况用不同的 Dispatchers ( UI,Network IO 等),感觉挺复杂的。

https://codelabs.developers.google.com/codelabs/kotlin-coroutines/#3

到了 Spring 里面,我都是没关心过用 Spring 内部用的哪种。
hantsy
2020-07-13 20:59:33 +08:00
@Mistwave Scala 与 Java API 互通太差了,特别是 Collections,相对这方面 Kotlin 优势很大。

https://github.com/hantsy/scala-sandbox/blob/master/spring-boot-demo/src/main/scala/com/example/demo/DemoApplication.scala#L34-L41

用 Scala 除非你全部用 Scala 的库,否则用 Java API 太痛苦了。
hantsy
2020-07-13 21:02:35 +08:00
@iseki 国内开发团队基本都是一个尿性,如果你不是 Team Lead,强制加入一些东西,一些巨婴都会以各种借口拒绝新东西。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/689648

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX