1 minute read

我为什么选择 elixir 作为学习的目标

在选择函数式语言的时, 主要考虑了 elixir 和 clojure, 而在学习之前, 对这两种语言的很多了解都是来源于我的朋友, 以及一些技术 podcast.

在这之前, 参加过 elixir 爱好者的线下聚会, 当时分享的是 elixir 的宏, 感觉十分惊艳, 但是又非常懵b, 好多概念都不太懂, 而再那之后, 又看了点 clojure 的文章, 感觉 clojure 也很惊艳啊. 选择困难来了, 什么都想学, 什么都学不成.

细细一算, 这种挣扎都伴随我1年了, 而这两门语言根本没入门嘛…

正好在上一家公司最后半年的时间里, 把 PHP 扔了, 把主要的项目切成了 go, 感觉学习过程非常刺激, 一个是语言相对简单, 另一个是实际上了项目, 遇到的问题你自己必须要竭尽全力去处理, 压力大的同时进步也大.

最终, 问题又回到了是 elixir 还是 clojure 这个终极问题上了.

对比一下两种语言的共性都是基于另一种语言的 VM, 生态上, clojure 可能更有优势, 语言设计也更优秀, 反观 elixir, 生态相对不是那么活跃(尤其是国内), 语法类似 ruby, 更像是加强版的 erlang 的语法糖.

但是我最终选择了 elixir, 首先, clojure 作为一种 lisp 方言, 学习曲线对比 elixir 还是更陡峭的, 同时, 在我看来, erlang VM 和 JVM 比较, 我可能更倾向去学习 erlang. 还有挺重要的一点, 语言设计.

elixir 更像是为开发者准备的玩具, 有趣. 而像 golang 是为工程准备, 枯燥但是高效, clojure 更像是精心雕琢的工艺品, 处处透露出设计者的精心. 而我作为一名开发者, 可能有趣对我挺有吸引力的.

学习 elixir 我需要准备什么

我自己为自己准备了一个小小的清单

  1. 了解语言本身
  2. 了解 erlang/OTP
  3. 学习 elixir 的生态
  4. 尝试用 elixir 解决一些现实的问题
  5. 记录下来

计划中的可能, 一系列的文章, 以及一个示例 repo 或者 page, 参照 gobyexample.

Updated: