Clojure 是个神奇的语言

2020-12-30 08:24:16 +08:00
 Team

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

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

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

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

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

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

7719 次点击
所在节点    程序员
39 条回复
mascteen
2020-12-30 13:08:53 +08:00
@secondwtq emacs 是 lisp 写的
yanhh
2020-12-30 13:19:33 +08:00
Python 就是新的 Lisp
Jooooooooo
2020-12-30 14:44:25 +08:00
语言流行看生态
zfish
2020-12-30 14:52:39 +08:00
clean code 这本书的作者也在搞 Clojure 了,是个不错的语言,这是 JVM 端的函数式语言,也可以学学 BEVM ( Erlang )的 Elixir,也是函数式语言,天然分布式、高并发、容灾,同时支持 Lisp 类似的宏,用代码写代码。。。
defclass
2020-12-30 14:59:49 +08:00
我们在用 Clojure/ClojureScript 做一个开源的笔记软件 logseq, 对 Clojure 感兴趣的同学可以了解一下, : ) https://github.com/logseq/logseq
fengjianxinghun
2020-12-30 15:32:22 +08:00
@whileFalse 没有什么优势,lisp 血统就够了,纯粹是信仰。
chanchan
2020-12-30 15:36:48 +08:00
不喜欢,对比 scheme/racket
skenan
2020-12-30 15:52:18 +08:00
@defclass 哇塞,终于发现一个开源的 roam research 替代品,好奇为么 roam 和 你的这个 logseq 都要用 clojure 写呢?其他语言有啥瓶颈?
defclass
2020-12-30 15:58:54 +08:00
@skenan 其实还有类似的如 athens . 我觉得很大程度上是因为 ClojureScript 社区有比较方便的图数据库, 前端有 datascript, 后端有 datomic, 存储和查询笔记时的双向链接这种知识图谱比较方便.
oncethink
2020-12-31 09:44:02 +08:00
@skenan #28 roam research 不错的替代还有 obsidan
SmiteChow
2020-12-31 10:58:25 +08:00
学习曲线巨高 比 Rust 不知高哪里去了 只因它是 pure function

买了一本 Clojure 书 已经吃灰很久了
Nibelung
2020-12-31 14:37:16 +08:00
@SmiteChow 学过函数是语言就挺简单的,rust 其实不比 clojure 简单,要关注的逻辑之外的东西很多
skenan
2020-12-31 16:40:02 +08:00
@oncethink 都试过,但都感觉没有 roam 好用
lcj2class
2020-12-31 17:56:36 +08:00
欢迎入伙: https://t.me/clojurists
Team
2020-12-31 18:49:28 +08:00
@cmdOptionKana #15 据我了解两种语言并不是对等的关系,在 JVM 里面和 F#对等是有,而且还很流行,当然具体是怎么拼忘记了.

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

所以我推断你应该不太了解 LISP.
AndyAO
2021-01-04 09:40:24 +08:00
defclass 的项目挺好的,是个很有用的工具,源代码也值得看.
看了 defclass 那帖子里的求职简介,感觉他是个很资深的开发人员
Team
2021-01-04 17:52:20 +08:00
@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
2021-01-04 17:56:31 +08:00
如果用最短的话表示 Clojure 的优势就是,①LISP(或者元编程)和②函数式.

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

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

当然 Lisp 的很多方言也能实现,在方言当中 Clojure 的优势就是能够依托 JVM,CLR 和 JavaScript Host.
JohnXu20151211
2021-01-19 21:01:35 +08:00
@zhuangzhuang1988 同啃 metabase 源码,求拉群

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

https://www.v2ex.com/t/740180

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

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

© 2021 V2EX