链接:https://www.zhihu.com/question/21144196/answer/44397463
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
Erlang 不仅仅是一门编程语言,它背后有强大的 OTP 开发框架作支持。Erlang 的语法概念简洁明了,除了一些FP方面的知识在首次学习时需要适应外,其他很多语法细节其实都非常容易上手。所以,单纯从语言层面上来说,Erlang 挺简单的。但是,Erlang 最大的用途是做分布式网络应用开发,用 Erlang 做开发不仅仅只是简单地用一门小众的语言来堆砌 A/B/C/D 语言也能描述的逻辑,而是要利用这门语言和提供的开发框架怎么去更好地搭建分布式平台,而你在这个开发过程所学习到的知识是跨语言、迁移性很强的;
Erlang 生态圈中的很多开源代码非常具有研究和学习价值。比如cowboy,RabbitMQ,riak等等。如果你感兴趣,甚至可以深入 Erlang 语言的实现,去学习调度器是怎么实现的(C语言),去研究OTP的实现等等。Erlang 得天独厚的分布式网络开发特性让你有机会去深入研究网络开发的诸多细节,只要你学有余力。而且,研究之后得到的体会也是跨语言跨平台跨架构;
作为一个工程师,必需善于思考总结和脚踏实地。当你选择学习 Erlang 的时候,你是在进行你的技术投资。但是,投资是有分轻重的。你可以短线持有,浮光掠影地玩一玩;也可以长线持有,为你提供稳定且增长的收益。特别是作为一个程序员,我们的技术生命不应该只局限于一种编程语言/框架/系统,我们要开阔视野,有容乃大。在把握好技术深度的前提下,到处探索计算机编程的乐趣,这难道不是一种难得的体验吗 ?当你有火候到了的时候,你还担心说你前些年从事的是 Erlang 编程工作,怕找不到工作吗 ?
不要随便给别人贴标签,也不要随便给自己贴标签。作为一个工程师,朴实严谨地研究技术,开开心心地解决问题,这些都是快乐的本源(似乎离题了......)。
Erlang我也是最近接触,并且下定决定一定要在今年之内入门,并且做一个小项目出来。
现在我不能告诉你,学习这么语言有多挣钱,我只能告诉你,我为什么想学这么语言。
Erlang,个人认为,更多的是做后台上的高性能高负载的服务。那么为什么不用其他的语言呢?因为现在的计算机CPU的单核运算速度,已经基本上可以说遇到瓶颈了。3.x,再往上提,散热就很成问题了。所以多核CPU就相对应的诞生了。但是面对多核服务器,其他的语言利用率就全看程序员个人了。Erlang则能够自动的分配资源,全面利用你的多核CPU,让运算速度无限趋近于最低值。所以掌握一门多线程语言,是很有必要的。而Erlang就是我选中的语言。
好吧,我的表达可能会相对乱一些,凑合着看吧
1、erlang有异常成熟、经过电信级别大规模验证的OTP应用库,只需要很简单的代码就能建立起异常稳定、容错性强、扩展性强、高并发的服务器框架,这也是erlang最宝贵的核心价值所在。2、erlang是 天生的并发语言 : erlang的并发特性是语言级别的,从开发伊始就采用了CSP并发模式, 以进程为单位,进程间没有共享内存,变量不可变的实现方式保证了无锁的并发模型,因此也是异常高效的,换句话说:你只要像平常一样写代码就能并发,完全不用操心任何底层实现,你的代码能完美的并行运行在多核服务器上,如果你能写出漂亮的并发级别的算法和代码(尽量少的顺序代码),那在32核机器上就能跑出32倍性能!!!! Go 语言的并发模型也是取经于Erlang,但是我认为Erlang的并发模型更优秀,因为进程间完全没有共享内存,完全无锁。
3、由于Erlang和Go都是非常棒的语言,这里就出现一个问题:二选其一还是物尽其用?经过深思熟虑后,我和团队选择了后者。
erlang有独特的支持SMP多核CPU的能力,可以把大量计算任务分拆到多个核心中进行,以便减轻系统压力。在游戏服务器开发领域必须满足能够热更新的条件,方便及时排除BUG修补漏洞,基本上只有C++,GO带Lua脚本和erlang的OTP能够做到,以前的页游也用java的netty框架做服务器,不过现在页游衰落了用java的也少了,感觉akka的并发模式和netty很相似,在App应用领域做信息推送的应该比较多吧,这种应用场景对服务器的要求没那么苛刻,也没那么强调实时性和高负载。所以楼主同学真的想做游戏服务器开发的话,还是努力学erlang吧,毕竟这个语言有很成熟的OTP框架做支撑,而且被游戏圈用了好几年了,一些现成的解决方案比较齐全,可以使你少走弯路啊
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)