如果真的想学点新鲜的,为什么不学 Erlang 呢?
首先相比较其他两个语言来说:
一个是 Lisp 的二奶,与其不如直接学老祖宗 Lisp 或者勉强点 Common Lisp(2013 年我开始学 Lisp,到底领略一下学过的人所说的神奇之处)。 一个是学院派的纯函数式语言,老学究们搞出来的语言,用来做研究做学术,现在貌似也就只有论文里才用用了。 Erlang 最开始就是为了使用而生,爱立信为了研发下一代(当时)的电信产品而生(现在好像用 Erlang 最多的也是电信和银行业)。
我不会那 Erlang 跟其他语言进行什么比较,每个语言都有期精华和糟粕的地方,我就从这一年多使用 Erlang(实际做项目)来说说你能得到什么:
进程化的编程思想 从小我就知道 C 是过程式编程,长大了又知道了 OO,还能有什么新鲜的吗?就是这个,把你要解决的问题拆分成进程(请自行搜索 Erlang 中的进程)来解决问题,这可是我从来没接触过的。
崩溃恢复机制 现在的服务软件都是需要不间断运行的,如果程序崩溃了怎么办?那就让他崩溃好了,这就是 Erlang/OTP 使用的思想,一个进程崩溃以后会由其他的进程负责擦屁股,重启或者恢复,总之这是在语言级别上提供给开发者的好处而不是还要另外整一大堆解决方案,用 Erlang 做项目精髓都在 OTP 当中,很多现在鼓吹的编程方式 Erlang 很早就有了。
分布式机制 想把最开始写好的程序扩展到多台或整个集群?那用 Erlang 你几乎不用改框架或者甚至一行代码,Erlang 的进程编程方式对于程序员来说是透明的,你发送信息的接收进程很有可能就在地球的另外一边,这些都不需要你操心。
处理二进制的好手 Erlang 一开始作为电信产品的编程语言,处理二进制是必须给力的,具有专门的二进制处理语法,可不简简单单是与或非这种操作,谁用谁知道。
函数式编程 这个就不多说了,函数式编程理解这个是必须的,好玩也好玩在这里。
近些年用 Erlang 来实际做东西我想比其他几门语言都多吧(也许我孤陋寡闻),阿里和企鹅还有很多页游都在用。
我也接触 Erlang 时间不长,实际做的项目也都是开源的,自己做着玩而已,有兴趣的可以参考:
hpyhacking/openpoker 扑克类游戏服务端 hpyhacking/webtekcos WebSocket 服务端
其实说那么多也没有,想学新东西的自然会去找东西学,2013 我要学 Photoshop 和 Lisp。
没人在乎你说了什么~