V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
casillasyi
V2EX  ›  程序员

最近在准备弃了 Java ,入 Clojure 的坑

  •  1
     
  •   casillasyi · 2019-02-20 11:03:39 +08:00 · 12515 次点击
    这是一个创建于 980 天前的主题,其中的信息可能已经有所发展或是发生改变。
    面临的现实问题就是人少!
    无论从语言设计还是并发性能等等的各个方面,Clojure 都是一个更先进的生产力工具。但做 java 的人浩如烟海,要选择 Clojure 的坑,必然在公司会孤军奋战,承受各方面压力。

    现在刚开始学,求滋醒!
    第 1 条附言  ·  2019-02-20 14:23:38 +08:00
    看了大家的建议:
    1.jvm 上的语言不存在非黑即白的关系,都了解一下不是坏事
    2.Java 现在和未来 10 年都依然会大行其道,这点毋庸置疑
    3.kotlin 语言本身谷歌官方推荐,未来可能会成为安卓的默认语言,但服务端个人感觉没有推动力
    4.或许我真正该关注的是,学一个非 jvm 的语言作为第二语言,erlang 或者 ruby,哈哈
    第 2 条附言  ·  2019-02-21 15:18:43 +08:00
    我这个标题 naive 了
    96 条回复    2020-06-05 07:07:28 +08:00
    shylockhg
        1
    shylockhg   2019-02-20 11:05:45 +08:00   ❤️ 1
    贵公司管理这么宽松么
    casillasyi
        2
    casillasyi   2019-02-20 11:06:55 +08:00
    @shylockhg 请问什么公司会干涉你学习
    x7395759
        3
    x7395759   2019-02-20 11:09:57 +08:00
    比 Java 设计先进的语言多了去了。
    nicevar
        4
    nicevar   2019-02-20 11:11:23 +08:00
    不用滋了,就这两个还需要放弃一个?一起学了就行了
    casillasyi
        5
    casillasyi   2019-02-20 11:14:00 +08:00 via Android
    @x7395759 是这样,但 jvm 的会说顺我者昌逆我者亡
    VDimos
        6
    VDimos   2019-02-20 11:15:06 +08:00 via Android
    学 clojure 还不如学 rust 来得实在
    Lonely
        7
    Lonely   2019-02-20 11:19:02 +08:00 via iPhone
    没兴趣滋醒你
    BBCCBB
        8
    BBCCBB   2019-02-20 11:19:31 +08:00
    没必要,真的, 浪费时间... 当然如果你自己喜欢, 有时间提升自己, 不为当下的生活发愁, 那当我没说
    shylockhg
        9
    shylockhg   2019-02-20 11:19:36 +08:00
    @casillasyi 我听你你的描述像是要用在公司,如果不用再公司你说啥各方面压力?
    BBCCBB
        10
    BBCCBB   2019-02-20 11:19:52 +08:00
    不如学 go
    zcsz
        11
    zcsz   2019-02-20 11:20:30 +08:00   ❤️ 3
    C#写起来比 Java 爽不少,公司还是义无反顾的转了,我们这儿才刚转 Java,老哥都考虑 Java 下一阶段了,
    glues
        12
    glues   2019-02-20 11:20:35 +08:00   ❤️ 2
    不用滋了,一周后可能就被劝退了
    orangeade
        13
    orangeade   2019-02-20 11:23:16 +08:00 via Android
    反正个人项目我才懒得用 Java,工作的话看公司的
    casillasyi
        14
    casillasyi   2019-02-20 11:23:52 +08:00
    @shylockhg 是想在公司小范围推广,但氛围比较 open,不至于被干掉
    cuebyte
        15
    cuebyte   2019-02-20 11:27:05 +08:00
    醒醒,看看 kotlin 和 vert.x 吧。
    wutiantong
        16
    wutiantong   2019-02-20 11:29:28 +08:00
    如同舍本求末
    casillasyi
        17
    casillasyi   2019-02-20 11:33:28 +08:00
    @wutiantong 并不能这么说,jvm 是个优秀的东西,只给 java 用真是浪费,哈哈
    mooncakejs
        18
    mooncakejs   2019-02-20 11:34:59 +08:00
    换语言一时爽,换工作两行泪啊。
    wutiantong
        19
    wutiantong   2019-02-20 11:36:07 +08:00
    @casillasyi 你又不是直接用 jvm,所以呢?
    lihongjie0209
        20
    lihongjie0209   2019-02-20 11:37:38 +08:00
    你们怎么招人

    你推广同事为什么要学,不想早点下班嘛

    为了个人原因推广 xxx 导致同事加班你就不内疚嘛
    skyrem
        21
    skyrem   2019-02-20 11:39:13 +08:00   ❤️ 1
    为什么不试试 scala 呢
    zhaoliguo
        22
    zhaoliguo   2019-02-20 11:39:49 +08:00 via Android
    我们正在从 Java 转 goⅠang
    wutiantong
        23
    wutiantong   2019-02-20 11:39:57 +08:00
    @casillasyi 所以要我说,你应该把 base 在 jvm 上的语言都学一遍,最好能融会贯通。而不是去“舍 Java,入 Clojure ”。
    shylockhg
        24
    shylockhg   2019-02-20 11:41:35 +08:00
    casillasyi
        25
    casillasyi   2019-02-20 11:41:43 +08:00
    @lihongjie0209 您既然这么说,我只能说抛开 Clojure,学习带来的短暂的加班和长期的效率提升,然后长期的减少加班,您怎么选。
    casillasyi
        26
    casillasyi   2019-02-20 11:42:49 +08:00   ❤️ 1
    @mooncakejs 看了上半句,我以为下半句是一直换语言一直双爽
    casillasyi
        27
    casillasyi   2019-02-20 11:45:19 +08:00
    @wutiantong 也对,我 naive 了
    notreami
        28
    notreami   2019-02-20 11:55:33 +08:00
    @casillasyi 根据什么原理预估出来加班的呢??
    说其他语言不加班的,你们难道写的是 hello world ?
    业务需求不清晰,功能多,排期紧,啥语言不加班?
    HangoX
        29
    HangoX   2019-02-20 11:56:20 +08:00
    不说别的,java 就胜在多,人多,资源多
    smeraldo
        30
    smeraldo   2019-02-20 12:01:50 +08:00
    一个人用没问题。
    如果要在公司用,怎么说服同事接受,怎么和同事协作?
    如果想换公司,没有工程经验怎么找工作?
    wdv2ly
        31
    wdv2ly   2019-02-20 12:02:48 +08:00
    我司后端已经上 clojure 好多年,目前基本已经完全 clojure 化,有兴趣可以来看看。
    wispx
        32
    wispx   2019-02-20 12:06:33 +08:00 via iPhone
    求你们别学了,我真跟不上
    casillasyi
        33
    casillasyi   2019-02-20 12:09:07 +08:00 via Android
    @notreami 业务问题不在讨论范围,而且我说的是减少加班。同样的并发,java 的处理就是更加复杂,后期的运维成本也更高
    Raisu
        34
    Raisu   2019-02-20 12:11:08 +08:00 via Android
    不是为了钱,谁会用 Java
    casillasyi
        35
    casillasyi   2019-02-20 12:13:40 +08:00 via Android
    @Raisu 也不能这么说,java 工作机会多,但大部分写业务的,给的并不多
    murmur
        36
    murmur   2019-02-20 12:20:11 +08:00
    为什么不 kotlin
    ChiangDi
        37
    ChiangDi   2019-02-20 12:27:29 +08:00
    小孩子才做选择,大人全都要
    icerhe
        38
    icerhe   2019-02-20 12:35:04 +08:00
    学什么东西是你的自由,又没人拦着你,你来这边求什么?
    richard1122
        39
    richard1122   2019-02-20 12:35:55 +08:00
    如果从 java 开始换语言我觉得 kotlin 比较好,基本可以渐进试替换
    bumz
        40
    bumz   2019-02-20 12:40:11 +08:00
    1. 既然都是基于 JVM,「并发性能」的差异只能说是库、框架以及实现思路导致的差异,而不是 Clojure 导致的
    2. 曲高和寡的语言设计在实践中未必比大众的语言设计更有效益

    当然了解一个 lisp 系的语言对整个思维还是很有帮助的,只不过轻易换语言往往是火葬场
    sadhen
        41
    sadhen   2019-02-20 12:47:02 +08:00
    学 Scala 吧,可以无缝和 Java 项目混合编写,建议从用 Scala 写单元测试开始

    可以关注一下我的 闲话 Scala 知乎专栏 https://zhuanlan.zhihu.com/scalastyle
    aijam
        42
    aijam   2019-02-20 12:47:07 +08:00
    ?t=337
    sadhen
        43
    sadhen   2019-02-20 12:48:47 +08:00
    如果你对 Scheme 感兴趣,可以在业余时间参与我 Maintain 的项目: https://github.com/texmacs/

    不建议在 Clojure 上投入过多时间,从赚钱养家角度,投入产出比比较低。
    ssynhtn
        44
    ssynhtn   2019-02-20 13:08:34 +08:00
    你是在逃避些什么么?因为 Closure 未必是坑,但是坑位少
    sean328
        45
    sean328   2019-02-20 13:09:01 +08:00
    看到楼主最后一句现在刚开始学...我还以为前面一段话是实践出真知已经用在项目里才有感而发的内心感悟
    oldmanHua
        46
    oldmanHua   2019-02-20 13:38:20 +08:00   ❤️ 1
    360 行,行行转 Java
    hujianxin
        47
    hujianxin   2019-02-20 13:43:47 +08:00
    选择一个小众的语言并不会让你真正牛逼,只是会在少数不懂行的人眼里显得牛逼而已
    cgpiao
        48
    cgpiao   2019-02-20 13:59:13 +08:00
    kotlin or scala 吧,其他的我觉得没有必要学习。
    grantonzhuang
        49
    grantonzhuang   2019-02-20 14:05:14 +08:00 via Android
    @wdv2ly 大佬在哪的
    tinybaby365
        50
    tinybaby365   2019-02-20 14:06:27 +08:00
    孤军奋战,什么语言都可以。军团作战,我还只认 Java !
    myyou
        51
    myyou   2019-02-20 14:06:52 +08:00
    学另一门 JVM 语言不如学 Scala,对 Lisp 感兴趣不如学 scheme
    hkitdog
        52
    hkitdog   2019-02-20 14:08:57 +08:00   ❤️ 1
    CRUD 什么语言都可以
    casillasyi
        53
    casillasyi   2019-02-20 14:08:58 +08:00
    @hujianxin 不能认同,要为了装逼,学个 haskell 什么的不挺好吗。最终还是想开阔眼界,提升效率
    hkitdog
        54
    hkitdog   2019-02-20 14:10:37 +08:00
    @aijam 聽不懂。。。。
    RoyL
        55
    RoyL   2019-02-20 14:12:06 +08:00
    有多大意义,准备让公司不好招人离不开你?哈哈
    Jonz
        56
    Jonz   2019-02-20 14:12:51 +08:00
    来了新公司以后,用 clojure 和 kotlin 各写了两三个服务端的项目,感觉就是换换口味,尝试点新的总是不会错的。
    Jonz
        57
    Jonz   2019-02-20 14:14:27 +08:00
    @wdv2ly 做啥项目的~~
    yuyueMJ
        58
    yuyueMJ   2019-02-20 14:25:22 +08:00
    @shylockhg 是呀 楼主上来第一条回复就让人不太舒服
    momocraft
        59
    momocraft   2019-02-20 14:33:30 +08:00
    有哪些东西使得 clojure 并发性能好呢
    eternaldzw
        60
    eternaldzw   2019-02-20 14:34:37 +08:00
    把手上的项目全改一遍,然后没人会,公司不会辞退你,好像有点小开心
    Narcissu5
        61
    Narcissu5   2019-02-20 14:42:26 +08:00
    Clojure 作为一个业务爱好就好,吃饭靠这个就不靠谱了。我记得当年在 repl 里面按 backspace 不会删掉前面的字符而是会打印一个^B 出来,输错一点就斯密达,基本没法用。

    Clojure 唯一的大型项目大概就是 Storm 吧,然后被 jstorm 全面超越。之前有段时间说 storm 2 会全面采用 jstorm,后面好像没动静了
    kex0916
        62
    kex0916   2019-02-20 15:20:50 +08:00
    可以试试 scala 瑟
    tao147258
        63
    tao147258   2019-02-20 15:31:01 +08:00
    年轻人,哈哈
    waruqi
        64
    waruqi   2019-02-20 16:02:06 +08:00 via Android
    可以自己先做个新语言,然后再开始做项目 逼格更高
    passerbytiny
        65
    passerbytiny   2019-02-20 16:02:14 +08:00
    想学 Clojure 可以,别拿 Java 说事。

    看了下 Clojure 的百科,Clojure 是 Lisp 编程语言在 Java 平台上的现代、动态及函数式方言,即 Clojure 时 Java 平台的 Lisp 方言。你做多说弃 Spring、Hibernate 入 Clojure,弃个毛的 Java。
    shihty5
        66
    shihty5   2019-02-20 16:15:31 +08:00
    我们公司服务端全面使用 kotlin 已经快 2 年了,哈哈。
    完全没有客户端的
    aijam
        67
    aijam   2019-02-20 16:21:03 +08:00
    @hkitdog 视频大意就是说,别折腾了省省吧 :p
    casillasyi
        68
    casillasyi   2019-02-20 16:21:40 +08:00
    @shihty5 贵司有眼光啊
    fyxtc
        69
    fyxtc   2019-02-20 16:56:17 +08:00
    学语言真的没意思,语言要用在对应的领域里才有存在的价值。需求驱动开发是最好的学习路径。个人的价值是完全依赖业务能力,也就是领域知识,和语言精通能力不能说完全没有关系,占个 1%吧
    xpresslink
        70
    xpresslink   2019-02-20 17:00:06 +08:00
    不就是搬砖嘛,工地让你用什么砖夹你就用什么夹,让你怎么码你就怎么码。
    casillasyi
        71
    casillasyi   2019-02-20 17:19:34 +08:00 via Android
    @fyxtc 不能认同哦
    flyll
        72
    flyll   2019-02-20 17:23:14 +08:00
    正在学习 c++中。。。。ps:纯 swift 开发近 3 年
    liuyibao
        73
    liuyibao   2019-02-20 17:34:14 +08:00
    Java 的市场需求大,搞 Java 的人也特别多。这是优点,也是个缺点。
    casillasyi
        74
    casillasyi   2019-02-20 17:38:08 +08:00
    @flyll swift 是好东西,语言学习价值很高,可惜我不开发 ios,要是有时间真的可以单纯的学习一下这个语言。
    zhuangzhuang1988
        75
    zhuangzhuang1988   2019-02-20 17:39:35 +08:00
    拓展眼界
    不过工作上最好别
    rayingecho
        76
    rayingecho   2019-02-20 17:40:15 +08:00
    作为消遣还是不错的, 但假如是为了生产力(赚钱), 推荐看看王垠的<我为什么不再做 PL 人>
    ArcherD
        77
    ArcherD   2019-02-20 17:51:02 +08:00 via Android
    。动态的就不要对性能有太大的期待了吧
    fan123199
        78
    fan123199   2019-02-20 18:07:48 +08:00
    果断 kotlin,感受极简代码量
    wdv2ly
        79
    wdv2ly   2019-02-20 19:30:05 +08:00
    @grantonzhuang
    @Jonz

    坐标深圳,游戏公司。

    老板是程序出身,写了 20 多年代码,到现在还是后端“主程”级别的存在🙃

    公司技术氛围浓厚,目前运营同事都要求学 Clojure 了
    abcbuzhiming
        80
    abcbuzhiming   2019-02-20 19:47:40 +08:00
    生产力工具从来就不是越先进越好的,有篇文章专门谈过这个问题,当年的大牛们都认为 haskwell 是“先进设计”,而 C 语言是“落后,丑陋,愚笨”的设计,然后赢得历史的却是 C
    casillasyi
        81
    casillasyi   2019-02-20 19:55:40 +08:00 via Android
    @abcbuzhiming 生产力工具永远都是进步的,而且必然是越先进越好,只是兴衰不由单纯的设计决定。
    6MuDvoa2kh
        82
    6MuDvoa2kh   2019-02-20 21:16:04 +08:00
    语言只是一个工具,我觉得还不如 多刷刷算法 提升基础来的实在
    luozic
        83
    luozic   2019-02-20 21:28:14 +08:00 via iPhone
    要么 kotlin 要么 scala,上这个 Java 上的 lisp 是要写框架么?
    youngxhui
        84
    youngxhui   2019-02-20 21:41:15 +08:00
    kotlin 基本和 java 兼容,可以把业务代码一步步的换成 kotlin
    grantonzhuang
        85
    grantonzhuang   2019-02-21 08:52:41 +08:00 via Android
    @wdv2ly 那我大概知道是哪一家了,招聘网站上看过~
    szq8014
        86
    szq8014   2019-02-21 09:07:18 +08:00
    @oldmanHua 23333
    jjx
        87
    jjx   2019-02-21 09:28:09 +08:00
    java 系的语言, 换什么都离不开这个生态, 还是熟悉的味道
    abcbuzhiming
        88
    abcbuzhiming   2019-02-21 09:41:49 +08:00
    @casillasyi 极客的想法罢了,技术要服务于现实,你再先进,现实不接受又如何?不过就是孤芳自赏罢了,就像我前面说的,“设计良好”的 Haskwell 败给了“愚笨”的 C。说到底,生产力工具是要拿来用的,又不是光发论文,理论先进就行了
    CoderGeek
        89
    CoderGeek   2019-02-21 10:17:37 +08:00
    有什么区别... 看心情了
    lihongjie0209
        90
    lihongjie0209   2019-02-21 10:58:27 +08:00
    @casillasyi 你觉得加班的原因是语言嘛?多一些语言特性和语法糖能加快开发的话早就大面积铺开了
    lihongjie0209
        91
    lihongjie0209   2019-02-21 11:11:50 +08:00
    当我们在考虑一个技术的时候,要首先考虑它带来的代价, 其次才是它带来的好处
    lihongjie0209
        92
    lihongjie0209   2019-02-21 11:28:27 +08:00   ❤️ 1
    https://www.quora.com/What-are-the-downsides-of-Clojure


    参考一下这个,文章把 Clojure 的优缺点都列出来了



    你想要的可能是优点 1,3,5, 但是它带来的缺点是 1-10, 不管要使用多少特性, 请你记住,它带来的代价是固定的,做决定之前要考虑清楚
    defclass
        93
    defclass   2019-02-21 12:22:51 +08:00   ❤️ 1
    一个 4 年 clojure 程序员路过, 顺便贴一个链接 http://www.yinwang.org/blog-cn/2017/07/06/master-pl
    casillasyi
        94
    casillasyi   2019-02-21 15:16:22 +08:00
    @defclass 受益匪浅
    jingxujuan
        95
    jingxujuan   2019-05-16 11:55:03 +08:00
    我司一直用 clojure,目前也在招人,感兴趣可以加我
    3rdFaust
        96
    3rdFaust   2020-06-05 07:07:28 +08:00
    LISP 的确符合我的编程审美
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1345 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:36 · PVG 07:36 · LAX 16:36 · JFK 19:36
    ♥ Do have faith in what you're doing.