Erlang/Elixir Elixir 会成为明日之星么?似乎是

chenge · 2016年11月29日 · 最后由 piaohailin 回复于 2019年09月16日 · 12958 次阅读
本帖已被管理员设置为精华贴

下面这个图来自演讲:ElixirConf 2015 - Keynote: Elixir Should Take Over the World by Jessica Kerr

她用了一个惊人的标题。演讲中以库恩的科学范式,引出了编程范式的跃进。除了 Elixir 外,还提到 Elm。可惜我英文一般,不能完全听懂。

希望 Elixir 能把函数式编程带入主流开发,看明年能否进入前 10 名排行。

入门学习请参考:

学习 Elixir 有什么新思路

作为一门函数式的语言,我觉得 Elixir 值得去学习的

我三年前就说过 Elixir 在语法上比 ERlang 有一定进步,但不是绝对优势。个人认为 Elixir 很鸡肋。Elixir 的最大亮点是他对字符串的处理,管道调用,宏什么的在 Erlang 中也能搞定。

#3 楼 @lilijreey 对有些人来说语法是很大的优势

程序员觉得好不一定能流行,得老板觉得好才行。别的不说,有培训班培训 Elixir 吗?Elixir 程序员辞职了老板能花低薪马上招一个补上吗?PHP 那么丑陋那么混乱仍然生生不息,老板喜欢啊

#5 楼 @Trump 川普先生,您一带头,培训班就起来了。

我认为软件工程最大的挑战是:持续满足业务复杂度的同时,保持工程的可维护性 ,语言对这方面的作用也是最关键的。

以前我认为最合适的是 Ruby。但 Ruby 的性能确实限制了在很多场景的使用,有时候我不得不转用其他语言。 而 Elixir 出现后,不仅在语法上有改进(模式匹配、管道、宏),代码更加简洁明了,而且性能还很高,是个极好的选择。

不管是不是流行,只要好用,能解决问题,就会有价值。至于是不是需要和大众一样,就见仁见智了。推荐一篇文章:

“The best way to build a dev team: Go where the devs aren’t.”

https://medium.com/@cameronp/the-best-way-to-build-a-dev-team-go-where-the-devs-aren-t-d3f226cfe749

btw. 我们在生产环境用 Elixir,已经快半年了,开发过程很流畅(自己写了一些库),运行一直很稳定。我们在寻找有冒险精神的 Elixir 开发者。😄

#9 楼 @qhwa 你们在哪个城市啊?可以远程么?

#10 楼 @chenge 我们在北京和杭州。目前还不能远程。

#11 楼 @qhwa 我们可以接触一下,不过我还是初学。做过一段时间 Clojure,不过我发现,对我来说 Elixir 更有吸引力。我已经决定发展 Elixir 了。

明年进入前十?5 年之内进入前 20 比较现实。

Elixir 能不能火起来关键还是得要有一些比较牛的工具作为宣传效果。

#13 楼 @gyorou 单月上升 20 位,目前 60 左右。Phoenix 框架也很成功。而且不难学习,所以我觉得流行是八九不离十了。

#14 楼 @chenge 明年能超过 ruby 的可能性不大,ruby 现在 10 左右,所以。这个就像差生稍微努力学习几个月,可以从倒数狂追很多名次,但是,越往前越艰难。

另外 Phoenix 本身知名度不大,需要的是用 Phoenix 的知名服务,或者像 Ruby 的 Chef,HomeBrew 之类的东西。

#15 楼 @gyorou 你说的有道理,就像 docker 促进了 go,我们一起看吧,Elixir 等待它 docker 出现。

#11 楼 @qhwa 你们监控是如何做的呢?貌似 Elixir 现在还没有好的监控服务。

huacnlee 将本帖设为了精华贴。 11月30日 13:10

#19 楼 @huacnlee 好吧,第一条平手了,可是 西部世界 似的浪漫主义,是独一无二的。😹

我觉得会。但反正不管 Elixir 是不是,Rails 是绝对不要再用就对了

#3 楼 @lilijreey 不止是语法好吧。。看看 Erlang 的生态就知道了,不是一般的烂,Elixir 简直给 Erlang 带来了新的希望。另外,语法(包括宏)意味着生产力的上升,这个作用也是很大的

@darkbaby123 用这个好了 http://aldusleaf.org/monitoring-elixir-apps-in-2016-prometheus-and-grafana/ 基本相当于自造的 Newrelic。当然还可以考虑 statsd 打到各种地方

Elixir 真的很惊艳👍

#9 楼 @qhwa 我们生产环境 elixir 都用了一年多了

#17 楼 @hisea 赞一个。最近在啃 Programming Elixir 1.3,这个语言带给人的思维改变是非常有意思的。做练习的时候经常有种感叹“居然还可以这样用!” 。有些事情对没了解过 Elixir 或者 FP 的人来说是很难描述清楚的。

我一开始也不理解 let it crash 的设计,觉得如果每个异常都 crash 去了那也太频繁了。深入了解一些后才明白不是这么一回事。很多语言把异常作为控制流的一种,有些地方甚至只用 if/else/case 描述理想状态的流程,其他情况一律设计成异常类。Elixir 并不把异常作为控制流的一种,异常只用在那些“正常情况下几乎不可能发生的事情”上,比如数据库断线,HTTP 请求超时,配置文件不存在等等。那些在预料之中情况一般都用 {:error, reason} 加模式匹配处理掉了。这样想其实也挺合理。更进一步思考,没有哪个程序能保证处理了一切意外情况的,这种时候简单重启一下保证服务不挂掉反而是更好的做法。

#28 楼 @darkbaby123 就像遇到电脑死机了,重启,不追究原因了,好主意。

#25 楼 @tony612 这个不错!

#28 楼 @chenge 是的,有些错误不用追究原因,下次还能工作就行。

#25 楼 @tony612 这两个监控软件都是 go 写的,用户不少,看来可以搭配使用。

#32 楼 @chenge 是的,Prometheus 基本是照着 Google 里边一套监控做的,Grafana 感觉是现在监控方面画图的首选了。如果公司自己搞的话,这套方案值得考虑

#18 楼 @darkbaby123@tony612, erlang-solutions,今年会议赞助商就是做监控的,不过是收费的。

我正在看 Programming Elixir,看了一半,感觉是不会火,不过很有意思。

erlang 的并发思想很有意思,进程模型做并发确实提供了很好的鲁棒性,再加上 fp,简直不要再美。不过流行的希望确实不大,已经诞生二十多年的语言,不能指望一夜翻身。

不管 Elixir 会不会火,但是绝对是值得去学习和尝试的。 我刚开始写 Erlang 代码的时候,也感觉很别扭,各种不方便,可是到后面思维方式发生转变之后发现越写越爽,这是我之前发的一篇文章,当时接触 Erlang 时间不长,认识还比较浅显 https://ruby-china.org/topics/21520

我的下一个项目可能会采用 Elixir 来搞😎

#33 楼 @tony612 Prometheus 的亮点不是 monitor,而是 alerting。

Elixir 解决了很多 erlang 遗留的问题,有明日之星的样子。但是,普通 web 项目,Elixir 上的框架不如成熟的 Rails 好用。

#23 楼 @tony612 完了。才刚差不多学会使用 rails。。已经要被淘汰了么。。

#40 楼 @xiaoping_rubyist PHP 都没被淘汰,担心啥

还是要看场景啊

比较难,ruby 火了是因为 rails 出现,go 是因为 docker,Elixir 现在还非常小众,而在现在这个大环境下,各种仿 rails 的框架,Elixir 如果想靠 Phoenix 杀出一条血路还是比较困难的。也许等它成为明日之星时,你我早已经不写代码了。

#45 楼 @doabit go 是因为 docker 吗?不是吧 Elixir 社区也不仅仅 Phoenix

#46 楼 @yukihiro_matz 可以求趣好玩的小项目推荐下么?

48 楼 已删除

給樓上點個讚,俺也是先自己瞎學了一通然後才找到用 Ruby 的工作的。不過老實說,Rails 的適用範圍比 Elixir/Phoenix 廣多了,如果不是高負載高併發場景,後者並沒有什麼用武之地。

#50 楼 @blacktulip 这也是萝卜白菜各有所爱。Web 框架的适用范围也不就那些。如果说比功能现在流行的框架都不差,细节处各有优劣。这些框架多余么?我觉得不多余。毕竟除了考虑功能,照顾开发者偏好也很重要。能让做 Web 的 Elixir 的开发者有个好工具,Phoenix 达到这点就足够了。至于高并发么,我只能说,虽然大多普通人都是钱够用就好,但也没人会嫌自己钱多。

#49 楼 @hisea 算起来我 GitHub 上也断断续续 Elixir 写了两年了,各种东西都写过、玩过😊

#53 楼 @tony612 这个大全,谢谢分享。你们前不久聚会有没有 ppt 分享呢?

#54 楼 @chenge 每次基本都有的,我回去可以把之前所有的整理一下。上次的要 @jiyinyiyong

对 elixir 的递归很头疼。

#58 楼 @fuyang 举个例子看?多练习,习惯就提高了。

Elixir 用起来却是很不错呀,再过几年确实有明日之星的潜力。

#5 楼 @Trump 需求才是最重要的额

#9 楼 @qhwa 你好,如果要入手学习 Elixir 有什么引路指南么,

#62 楼 @kooglezhang 我看的是《Programming Elixir》有中文版,入门挺好的。

看完书把官网 guides 仔细过一遍,就入门了。

另外还有一些书适合进阶。比如《Programming Phoenix》、《Metaprgramming Elixir》。

#49 楼 @hisea 佩服你,有这样的能力与时间,下班还可以回家“磨刀”,我下班回家都觉得好累,不想动

#28 楼 @darkbaby123 let it crash 在 erlang 里面是因为有监督机制,其他语言没有这种内建的监督机制。其他语言例如 java,可以将主控程序 try catch 下层库的异常,捕获到一些异常后重新初始化下层库。但总的说来,没有监督机制这样规范。

#67 楼 @jimrokliu 是的,Supervisor 是 OTP 内建的行为之一,经历了这么多年足够稳健。类似的机制其他语言并不是不能做,不过稳定性这东西是需要时间积累的。

@tony612 这个方案可以监控 channel 吗?

#69 楼 @plan9 看上去 prometheus-phoenix 这个库应该不能直接支持,但应该可以自己在 channel 一些地方自己加,比如 handle_in 函数那里

hisea 我来诈个尸,顺便道个歉。 提及了此话题。 09月20日 12:26

三年过去了,现在大家如何看?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号