vlambda博客
学习文章列表

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

Clojure 昨日发布了 2020 年度调查报告。官方表示,通过今年的调查能看到越来越多的开发者在工作中使用 Clojure、对 Clojure 关键价值主张的持续关注以及不断发展的用户社区。

Clojure 的使用场景

受访者在被问及使用 Clojure 的场景时,答案包括工作、业余项目、修复错误以及学习研究。不过从今年的结果来看,开发者在工作中使用 Clojure 所占百分比最高

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

此外,从下图可以看到,在使用 Clojure 的公司中,规模较大的公司(1000+ 员工)所占的比例增加了大约 3%,而小公司(1-10 员工)则有所减少。

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

受访者在被问及组织中有多少人在使用 Clojure 时。不出所料,许多 Clojure 团队的规模都非常小(小于 10 人)。不过作为一个具有高附加值的工具,Clojure 确实非常适合小型且高生产力团队。而且具有 40+ Clojure 开发者的组织也不在少数。

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

在被问及 Clojure 的使用领域时,Web 开发和开源项目依然保持着一直以来的热度,不够我们也看到今年“企业软件”有了显著增长,达到了有史以来最高的水平,这说明更多的开发者乃至公司愿意尝试使用 Clojure 开发企业软件。

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

社区

调查结果显示,Clojure 开发者最活跃的社区分别是:Clojurians Slack、Reddit 的 clojure 子版块和 StackOverflow。

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

受访者在被问及如何参与建设 Clojure 生态系统时,通过维护开源项目的方式进行贡献所占比例最大。

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

开发工具和语言版本相关

又到了喜闻乐见的开发工具和语言版本环节,首先是 Clojure 开发者主力使用的系统,不出所料,macOS 是领先者(55%),其次是 Linux(35%)和 Windows(9%):

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

至于主力开发工具,今年的数据出现了细微的变化。Emacs 虽然还是大多数开发者的主力工具,不过其比例出现了略微下降(43%),IntelliJ/Cursive 则略微上升至 32%。值得注意的是 VS Code,它的增长最大,直接飙升至 10%,甚至超越了 Vim。

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

开发工具不止编写代码的工具,还有“构建工具”也值得关注。由于在之前的调查中都是单选项,无法反映开发者如何管理 Clojure 项目,因为他们可以在此过程中的不同阶段使用多种工具,特别是在 Clojure/ClojureScript 混合项目中。为此,今年的调查针对依赖管理的问题进行了更紧密的调整,并提供了多选项,结果如下:

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

可以看到,Leiningen 的使用量迅速增加,而 clj/deps.edn 也在稳定增加。另外,在 ClojureScript Together 的大力支持下,shadow-cljs 也为开发 ClojureScript 项目提供了极大支持。

Clojure 是运行在 Java 平台上的现代、动态及函数式 LISP 方言,受访者在被问及所使用的目标 Java 版本时,Java 8 依旧是被使用最多的版本,其次是 Java 11,两者均为 LTS 版本。毕竟 Clojure 本身已经使用 Java 8 作为基准 JVM 已有两年,并将继续保持(当然会同时支持 Java 的较新版本)。官方建议运行 Clojure 时使用 Java 8 或 11。

Clojure 发布年度调查报告:用于开发企业软件的比例历史最高

至于开发者使用的 Clojure 版本,Clojure 1.10.0 和 1.10.1 是最受欢迎的两个,后者是今年发布的维护版本,在 Clojure 1.10.0 的基础上改进了错误处理,并缓解了 Java 8u201 及更新的版本中某些 Java 性能下降的问题。

最后,本次调查还增加了一个新问题,即受访者如何在生产环境中启动其应用程序。结果如下:

大多数用户正在使用诸如 Leiningen 或 clj 之类的启动器来启动其生产应用程序,而不是通过构建 jar 或 uberjars 并直接使用 Java 启动它们。此外,还看到一部分开发者在尝试使用 Graal 原生映像(在较小的脚本应用程序中很常见)。