• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Team
V2EX  ›  程序员

Clojure 是个神奇的语言

  •  1
     
  •   Team · Dec 30, 2020 · 9806 views
    This topic created in 2135 days ago, the information mentioned may be changed or developed.

    在读《程序员的修炼之道》的时候,每每提到一些编程思想,如变换式编程、契约式编程等等,都会提到 Clojure 和 xxx 在语言层面支持这种编程方法。

    《黑客与画家》中捧 LISP 的 Paul Graham,在此书出版近 20 多年后依然推荐 LISP,不过他这次推荐的方言是 Clojure,因为这已经是事实上最流行的方言。

    A Programmer's Rantings的作者说,「实际上,我已经开始认为它是我见过的最好的程序设计语言了,然而不知怎么它就流行起来了」。

    这门语言在很多主流的平台上都有实现,例如 JVM,CLR 和 JavaScript Host,所以在任何平台上都有用武之地。

    本来我猜这个语言相关的书籍应该并不太多,结果我有点低估它了,真的有挺多资料。

    最近开始看 Clojure 书籍的前言了,也许某个时候就会深入的学习和使用它。

    Supplement 1  ·  Jan 3, 2021
    Supplement 2  ·  Jan 4, 2021

    @lcj2class 开设的电报群交流气氛很好,现在将邀请链接放在这里,便于有需要的人进入讨论 0.0

    欢迎入伙: https://t.me/clojurists

    39 replies  •  2021-01-19 21:01:35 +08:00
    cgpiao
    cgpiao
    Dec 30, 2020
    1
    close 的主流应用是哪方面,一直想了解纯函数式语言。
    holulu
    holulu
    Dec 30, 2020
    2
    大学 CAD 画图的时候就写过 lisp
    pythonee
    pythonee
    Dec 30, 2020
    3
    想到了红烧肉姐
    whileFalse
    whileFalse
    Dec 30, 2020
    4
    对这个语言不了解,既然 LZ 这么捧,那能说说这个语言适合哪种场景吗?在该场景下对比竞品语言有什么优势?
    Jeb
    Jeb
    Dec 30, 2020
    5
    国内 LeanCloud 在用 Clojure
    linux40
    linux40
    Dec 30, 2020 via Android
    6
    @cgpiao 这门语言不是纯函数式。
    Wincer
    Wincer
    Dec 30, 2020 via Android❤️2
    7
    vscode 的插件写 clojure 挺舒服的
    ethusdt
    ethusdt
    Dec 30, 2020❤️1
    8
    上一家公司全员 Clojure, 前端 ClojureScript. 老板在 17 年时候就开始推荐 clojure. 有兴趣我可以帮忙联系下.

    https://tva1.sinaimg.cn/large/0081Kckwly1gm5n9zgklvj30u050p1ky.jpg
    ytll21
    ytll21
    Dec 30, 2020
    9
    语言不错,可是太小众了,招不到人,上一点规模的企业都不敢用
    nthhdy
    nthhdy
    Dec 30, 2020
    10
    @cgpiao 了解纯函数式看 haskell 啊
    zhuangzhuang1988
    zhuangzhuang1988
    Dec 30, 2020
    11
    我们群里有人在看 metabase 源码, 经常问的是这个参数是啥意思, 该传啥, darklang 作者 也提到为何不选择 clojure(we spent a whole lot of time with dealing accidental complexity, specifically "what type is this field" and nulls all over the place. So I deliberately chose not to have a dynamically typed language, even though Clojure is a lovely language. ) https://blog.darklang.com/why-dark-didnt-choose-rust/
    molika
    molika
    Dec 30, 2020
    12
    @Wincer emacs+cider 才叫真香
    Kanavi
    Kanavi
    Dec 30, 2020
    13
    不容易,难得能见到人提到 Clojure,在 17 年的时候,写了一年的 Clojure,不得不说,语法上面,Clojure 让人写起来还是很舒服的。
    VHacker1989
    VHacker1989
    Dec 30, 2020
    14
    反人类的函数式语法,oop 才是主流,这玩意不知道能干嘛,知名框架就一个 storm
    QingXuJiaZhi
    QingXuJiaZhi
    Dec 30, 2020 via Android
    15
    F#更好一点,楼主不妨也了解一下
    TypeError
    TypeError
    Dec 30, 2020 via Android
    16
    还是 oo 语言带一点函数式写法舒服,受不了纯函数式的
    aloyuu
    aloyuu
    Dec 30, 2020 via Android
    17
    php C# 完美,其它一概不考虑
    nguoidiqua
    nguoidiqua
    Dec 30, 2020
    18
    学着挺有意思的,但从来没真正用过,语法我觉得比其他 Lisp 方言要更好读一点。
    P233
    P233
    Dec 30, 2020
    19
    我也是最近一有空就看 clojure + clojurescript
    secondwtq
    secondwtq
    Dec 30, 2020❤️1
    20
    据我所知,Clojure 最牛逼的应用是 Datomic,一个利用 Datalog 技术的数据库。也是 Clojure 的创造者 Rich Hickey 搞得
    而该应用的一大硬伤在于,他是闭源的 … Cognitect 公司需要它赚钱来投入到 Clojure 中,而另一方面如果一个语言的 killer app 是闭源的,那么必然会严重影响该应用和该语言的应用(虽然我很怀疑任何一个 LISP 在现在能有什么大的应用)
    mascteen
    mascteen
    Dec 30, 2020 via Android
    21
    @secondwtq emacs 是 lisp 写的
    yanhh
    yanhh
    Dec 30, 2020
    22
    Python 就是新的 Lisp
    Jooooooooo
    Jooooooooo
    Dec 30, 2020
    23
    语言流行看生态
    zfish
    zfish
    Dec 30, 2020
    24
    clean code 这本书的作者也在搞 Clojure 了,是个不错的语言,这是 JVM 端的函数式语言,也可以学学 BEVM ( Erlang )的 Elixir,也是函数式语言,天然分布式、高并发、容灾,同时支持 Lisp 类似的宏,用代码写代码。。。
    defclass
    defclass
    Dec 30, 2020❤️4
    25
    我们在用 Clojure/ClojureScript 做一个开源的笔记软件 logseq, 对 Clojure 感兴趣的同学可以了解一下, : ) https://github.com/logseq/logseq
    fengjianxinghun
    fengjianxinghun
    Dec 30, 2020
    26
    @whileFalse 没有什么优势,lisp 血统就够了,纯粹是信仰。
    chanchan
    chanchan
    Dec 30, 2020
    27
    不喜欢,对比 scheme/racket
    skenan
    skenan
    Dec 30, 2020❤️1
    28
    @defclass 哇塞,终于发现一个开源的 roam research 替代品,好奇为么 roam 和 你的这个 logseq 都要用 clojure 写呢?其他语言有啥瓶颈?
    defclass
    defclass
    Dec 30, 2020❤️1
    29
    @skenan 其实还有类似的如 athens . 我觉得很大程度上是因为 ClojureScript 社区有比较方便的图数据库, 前端有 datascript, 后端有 datomic, 存储和查询笔记时的双向链接这种知识图谱比较方便.
    oncethink
    oncethink
    Dec 31, 2020
    30
    @skenan #28 roam research 不错的替代还有 obsidan
    SmiteChow
    SmiteChow
    Dec 31, 2020
    31
    学习曲线巨高 比 Rust 不知高哪里去了 只因它是 pure function

    买了一本 Clojure 书 已经吃灰很久了
    Nibelung
    Nibelung
    Dec 31, 2020
    32
    @SmiteChow 学过函数是语言就挺简单的,rust 其实不比 clojure 简单,要关注的逻辑之外的东西很多
    skenan
    skenan
    Dec 31, 2020 via iPhone
    33
    @oncethink 都试过,但都感觉没有 roam 好用
    lcj2class
    lcj2class
    Dec 31, 2020❤️1
    34
    欢迎入伙: https://t.me/clojurists
    Team
    Team
    OP
    Dec 31, 2020
    35
    @cmdOptionKana #15 据我了解两种语言并不是对等的关系,在 JVM 里面和 F#对等是有,而且还很流行,当然具体是怎么拼忘记了.

    Clojure 主要还是个 LISP 方言,F#没听说和 LISP 有关,至少不在维基百科的 LISP 列表中.

    所以我推断你应该不太了解 LISP.
    AndyAO
    AndyAO
    Jan 4, 2021❤️1
    36
    defclass 的项目挺好的,是个很有用的工具,源代码也值得看.
    看了 defclass 那帖子里的求职简介,感觉他是个很资深的开发人员
    Team
    Team
    OP
    Jan 4, 2021
    37
    @cgpiao #1
    @whileFalse #4

    这两个问题很大,泛泛的回答的话,只能抛出几个词,但是没有深入的解释,其实那几个词也白给.

    最近看到一篇文章,讨论 2020 年平均薪资最高的岗位,主要是应用什么编程语言,答案是 Clojure,这是 StackOverFlow 给出的数据,应该还是比较准确的.

    文章简要的介绍了 Clojure 最近开始火爆的原因,我感觉比很多地方都讲得简洁而清晰,这里就贴一下,直接贴谷歌翻译的中文版,如果想看原文下面也有:


    > 根据 StackOverflow 的数据,Clojure 是收入最高的编程语言列表中的第一名,每年的收入超过$ 72,000 。
    >
    > Clojure 之所以变得流行是因为它是一种简单的语言,可以解决大多数其他语言无法解决的许多现实问题。
    >
    > 由于 Clojure 具有不可变数据结构的支持,因此可以更轻松地进行代码推理。您可以安全地孤立地考虑一段代码,而不必知道整个应用程序的状态。
    >
    > 这也使编写处理并发性和并行性的应用程序变得容易得多。Clojure 在其标准库中提供了许多出色的并发原语,而最近的增减器和 core.async 进一步扩展了此工具集。
    >
    > Clojure 的表达能力很强,您可以编写简洁而简洁的代码,而无需花费太多的仪式或样板。最重要的是,宏允许您轻松抽象代码中的重复模式。
    >
    > 托管在 JVM 上意味着 Clojure 具有成熟的运行时,其中包含许多可用的现有库。在 TechEmpower 基准测试中,Clojure 框架运行良好,并且远远领先于 Ruby 和 Python 等效项。
    >
    > 您还可以学习有关区块链的编程,这在最近非常需求。
    >
    > 函数式编程绝对是值得关注和学习的东西。在生产中使用 Clojure 的公司的成功案例越来越多,没有理由期望这种趋势在可预见的将来会改变。

    What are the highest paid programming languages? - Technology
    https://expertain.net/what-are-the-highest-paid-programming-languages/

    至于为什么,这些新起的小众语言薪资比较高,感觉这个观点是比较有解释力的:


    > 相当长一段时间里,豆瓣招聘的主要根据地就是 CPyUG 。找了解 Python 的程序员本身就完成了对员工的第一层筛选。在那几年里 Python 一直小众,一个懂 Python 的程序员大概率具备独立的审美与思考,而能主动学习一门自己认可的语言也已经完成了个人成长能力的证明。基于这些特质建立的早期团队也成为豆瓣的中坚。

    [“教授”洪强宁和他穿越的技术江湖]( https://mp.weixin.qq.com/s/UCQaNMQ3rfCwfsOApCupyA)
    Team
    Team
    OP
    Jan 4, 2021
    38
    如果用最短的话表示 Clojure 的优势就是,①LISP(或者元编程)和②函数式.

    前者能够实现'设计模式'的复用,能定制 DSL,这个功能是非常强大的,Java 只能总结出'设计模式',而复用还是要靠码农脑子完成的,而 LISP 可以让机器自动完成.

    FP 中的函数,是没有任何副作用的,数据也是不可变的,这就导致处理数据的时候会非常方便,出错的时候稳定性强,而且天然的适合处理并发问题.

    当然 Lisp 的很多方言也能实现,在方言当中 Clojure 的优势就是能够依托 JVM,CLR 和 JavaScript Host.
    JohnXu20151211
    JohnXu20151211
    Jan 19, 2021
    39
    @zhuangzhuang1988 同啃 metabase 源码,求拉群
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5379 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 151ms · UTC 03:22 · PVG 11:22 · LAX 19:22 · JFK 22:22
    ♥ Do have faith in what you're doing.