popil1987
V2EX  ›  编程

以后我们都会是 Java /kotlin 程序员吗?学了下 kotlin,感觉 kotlin 啥都能干

  •  1
     
  •   popil1987 · Sep 10, 2022 · 6584 views
    This topic created in 1361 days ago, the information mentioned may be changed or developed.

    Android 原生开发:不用说了,标配,特别是 jetpack compose 推出后

    Android 和 iOS 开发:kotlin multiplatform mobile.看了下原理是界面和硬件交互还是原生开发,公共的库可以用 kotlin 开发,什么 api 请求啊,ai 算法啊都可以只实现一套,swift 可以直接引入,不需要写 wrapper

    桌面开发:jetpack compose for desktop ,是 java 的 swing 做底层,这可移植性不用说,其他库有 kotlin multiplatform

    web 开发:kotlin/js,转译到 js 。另一点是和 js 的 interop 也很好,可以很简单的引入 js 生态。我看到官方支持很多 react 生态的 lib,加上 jetpack compose for web 或 jb 自家的 ring ui

    服务端:这生态现在和 java 一样好,还有个 ktor 和 web 端,移动端都能 full stack 公用代码

    数据科学:jupyter notebook 加上 kotlin kernel,有能替换 python pandas numpy 的库,而且很好,大数据方面 java 肯定完爆 python,python 很喜欢,但 kotlin 是真香

    担心:没有深入进去,不知道有啥坑,java 生态倒是杠杠的。被 JetBrains 的 IDE 支配( vim, emacs 确实打不过 idea )

    fleet 出来以后对我们这种纯 linux 下工作的人来说是真香,不好忍住

    个人有时间还是要学习下小众技术,不为别的,小众技术啥生态没有,有利于学习底层知识

    33 replies    2022-09-13 15:15:11 +08:00
    popil1987
        1
    popil1987  
    OP
       Sep 10, 2022
    还想到一点不足就是正确性还不能和 haskell rust 相提并论,如果不论学习曲线的话。在我看来,正确性意味着少测试,少 debug ,生产效率
    内存问题不怎么算问题
    Leviathann
        2
    Leviathann  
       Sep 10, 2022 via iPhone
    目前用来写后端
    没什么问题
    MakHoCheung
        3
    MakHoCheung  
       Sep 10, 2022   ❤️ 4
    确实 Kotlin 涉及到了很多的方面,但是除了安卓开发,其他都是非常一般甚至多此一举。
    我只说跟 Java 比,如果是 Java 8 的话 Kotlin 绝对非常香,但是跟现在 Java 19 比就没啥用。除了扩展函数和尾随闭包,Kotlin 有的,比如数据类、协程啊,Java 都有,甚至模式匹配还不如 Java 的。
    fox0001
        4
    fox0001  
       Sep 10, 2022 via Android
    按目前的发展来看,Kotlin 只是 Java 的“跟屁虫”。没贬义的意思,只是想说,Kotlin 要平替 Java ,只能跟随 Java 发展。
    agagega
        5
    agagega  
       Sep 10, 2022 via iPhone
    当年大家也是这么想 Swift 的
    dcsuibian
        6
    dcsuibian  
       Sep 10, 2022
    问下隔壁什么都能写的 js 吧
    shot
        7
    shot  
       Sep 10, 2022   ❤️ 1
    感觉 Kotlin 是我用过的最舒服的语言。最喜欢的几点:
    1. 语法糖: null-safety, lambda, `val`, standard library
    2. coroutines
    3. 设计好 DSL ,写代码犹如写文章
    4. 全端开发

    我最近一次写 kotlin 代码大概是两年前,印象中有这么一些劣势/限制:
    1. 语法过于灵活很容易放飞自我, 普通开发者难以消化大量的 let/apply/run/also 和 filter/flatMap/associate/groupBy
    2. 除 Android 和 backend 外,其它端的工具/生态/社区还是不够完善,能用但不够好用
    3. 编译速度慢

    基于以上因素,我建议只在独行侠项目中使用 Kotlin 。
    如果能在团队中成功应用,也许需要是业界 top 10% 精英组成的超级团队。
    hankli
        8
    hankli  
       Sep 10, 2022
    3 楼+1
    搞不明白宁愿学 kt ,也不愿意升级 jdk 版本,是因为什么
    hsfzxjy
        9
    hsfzxjy  
       Sep 10, 2022 via Android
    kt 想撼动 python 在机器学习的地位没这么简单,主要是生态基本是围绕 python 开发的,而且学术界的人根本不想换
    iseki
        10
    iseki  
       Sep 10, 2022 via Android
    @hankli 即使是最新的 Java ,特性和 Kotlin 比也有很大差距。更别说很多项目不让你动 JDK
    xe2vherd
        11
    xe2vherd  
       Sep 10, 2022 via iPhone
    公司用的话没啥问题
    就是写自己的项目不想带个虚拟机,kotlin native 连个反射没有。
    HugoChao
        12
    HugoChao  
       Sep 10, 2022
    js 好像也啥都能干,前后端,多平台应用,还能 tensorflow 呢
    popil1987
        13
    popil1987  
    OP
       Sep 10, 2022
    安特的各位,不是杠大家,就是讨论,本人是个 java hater 但是通过最近对 kotlin 的了解,并且在各端都实验了下,确实震撼比较大。
    @MakHoCheung 对大公司,大家分工,各自做好自己的事就好。对于独行侠或者小公司可就太有意义了。而和 java 相比的话,web 、桌面、数据科学,双端开发 java 可就比不了了,java 行的 kotlin 也行,kotlin 行的 java 不一定
    @fox0001 你行的就 call 你,你不行的你想想办法吧----kotlin 对 java 说
    @agagega kotlin 是真做出来这些东西了,并且受到 google 支持
    @dcsuibian 隔壁 js 是真真的不行你就看 typescript, rescript, purescript, elm, ghcjs, clojurejs.......都想革 js 的命。RN 个人感觉比不了 flutter ,flutter 能直接 call c 接口,意味着能很好的跟 rust 配合,RN 移动端和桌面端只能各个平台的语言配合,数据科学也不行,当然了,小程序们是必须 js 的
    @shot 我就是独行侠,学了好多编程语言,多学一门编程语言新的概念并没有多多少,主要作为 java hater ,之前不太了解 java 一些著名的库,底层知识不够,先来发帖看大家意见
    @hankli 生态的问题,不是 java 语言本身的问题
    @hsfzxjy 市场问题,tensorflow 和 torch 只是被 python warpper 了,kotlin 也能 wrapper,向量的计算至少 kotlin 不太担心自己循环
    Jirajine
        14
    Jirajine  
       Sep 10, 2022   ❤️ 1
    swing 支持 wayland 遥遥无期,我桌面上 jb 系 ide 是唯一需要跑 xorg 的程序了。
    humpy
        15
    humpy  
       Sep 10, 2022 via iPhone
    这东西就是看起来很美好,实际还不成熟,你实际用 kmm 写个复杂点的库就知道了…尤其是在 ios 里用协程,老的内存模型恶心人,新内存模型 gc 又卡得爆炸
    s524256521
        16
    s524256521  
       Sep 10, 2022 via Android
    我现在就是左手 Kotlin ,右手 Swift ,中间 Python ,八端覆盖,那感觉呢,就是拥有了全世界。
    s524256521
        17
    s524256521  
       Sep 10, 2022 via Android
    @s524256521 拳打小程序,脚踢 Flutter
    Jooooooooo
        18
    Jooooooooo  
       Sep 10, 2022
    啥都能干的语言不一定是好事.

    语法糖多一般来讲都是坏事.
    rb6221
        19
    rb6221  
       Sep 10, 2022
    关于 jdk 不能升级的问题,我可以分三大类(姑且把比例定位 60% 30%和 10%吧,只是为了做成金字塔模型,数字并不准确)
    60%是政治因素,比如所谓的“屎山别动”、“动了出问题你负责”、“能跑就行”、“老大说别动,他只看得懂老风格的代码”。这些可以无脑升级,所以也可以无脑换 kt
    30%是技术因素,比如“框架只支持 jdk7”、“库只支持 jdk7”、“迁移成本高”等。这些花一点工夫也可以升级,但是不一定能无脑换 kt ,看框架有没有平替
    10%是架构因素,比如某些大厂有定制的 jdk ,自己魔改了源码,或者自研的框架(注意是自研,一般这类框架没有平替)依赖老版本 jdk 。这些就没法升了。这类应该暂时换不了 kt
    这样看来似乎有一多半是可以换 kt 的,但是别忘了成本和收益比。换了有什么好处?这才是支持你换的动力。
    在我上面说的 60%部分,可以说换了并没有什么好处,因为他本来就是屎山,屎山是不会在乎以后维护有多方便、开发有多爽的,更不用说那些来自老旧势力的阻力了,这也可以视为负收益的一部分。
    israinbow
        20
    israinbow  
       Sep 10, 2022
    > fleet
    我收到了 fleet 的内测邀请, 下载了 Linux 版本的, 但是程序根本无法运行启动, 还是别报太大希望了.
    duke807
        21
    duke807  
       Sep 10, 2022 via Android
    我随便说一个,你看看能不能干
    python 的 cocotb ,fpga 和芯片仿真
    dqzcwxb
        22
    dqzcwxb  
       Sep 10, 2022
    @MakHoCheung #3 其他语言有的,java 都会有(抄)
    lllllliiii
        23
    lllllliiii  
       Sep 10, 2022
    @Jirajine #14

    我是说我 idea 怎么切输入法都没用,原来是不支持 wayland 。。
    Jirajine
        24
    Jirajine  
       Sep 10, 2022
    @fzdwx 输入法应该可以通过 XIM ,当然 jb/swing 自己在输入法方面也有坑。不支持 wayland 最大的问题是性能低、hidpi 模糊、输入有延迟。
    akira
        25
    akira  
       Sep 11, 2022
    从来就没有一种语言打天下的事情。 不要拿个锤子 就看啥都是钉子
    pengtdyd
        26
    pengtdyd  
       Sep 11, 2022
    啥都能干 ??? 除了 C/C++敢这么说,我还没见过第二个这么狂的语言。
    rbq123456
        27
    rbq123456  
       Sep 11, 2022
    别的不知道,只说 web 开发这一块,都是扯淡
    musi
        28
    musi  
       Sep 11, 2022
    js 之前也是这么说的
    musi
        29
    musi  
       Sep 11, 2022
    @popil1987 #13 这么多都想革 js 的命,你看看哪个成功了,最后不还是要编译成 js 跑在浏览器里。
    要真正革 js 的命,一定要从浏览器下手
    popil1987
        30
    popil1987  
    OP
       Sep 11, 2022
    @musi typescript 算成功吧
    musi
        31
    musi  
       Sep 11, 2022
    @popil1987 严格意义上来说并没有,因为 ts 是兼容 js 的
    popil1987
        32
    popil1987  
    OP
       Sep 12, 2022
    @musi 这么说也对,毕竟 TS 无痛使用 js ,其它多多少少得做点引入的工作。其它语言使用的场景可能是特性足以有动力做点 js 引入的工作或者不需要 js 生态。如你只需要 react 全家桶,又不想用 TS 就可以用 kotlin 开发
    mysunshinedreams
        33
    mysunshinedreams  
       Sep 13, 2022
    实际生产环境中使用过,感觉别的东西都挺好,唯一的缺点就是 Kotlin 的插件有点卡,有的时候代码提示不跟手,编译时间变长。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5600 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 01:28 · PVG 09:28 · LAX 18:28 · JFK 21:28
    ♥ Do have faith in what you're doing.