Erlang比主流语言做得更好并满足投资的用例是什么?
答案 0 :(得分:8)
对于Erlang而言,最大的吸引力可能是(大部分)始终是线程安全的。由于对单核处理器的限制,进行并行编码有很大的吸引力。 这可以用C ++这样的语言或带有线程的Java来完成,但是如果没有细微的错误就可以很难运行。
使用Erlang,编写并行代码要容易得多,虽然它可能没有其他语言的顺序速度,但它更安全,并且最终花费更少的时间(通常没有时间)调试棘手的并行问题。
作为一个特例,Erlang非常善于处理Web界面。对于可靠的,Yaws可以处理大量的并行会话,而且为了提高速度,Misultin的运行请求比我见过的任何其他Web界面都要快。
我想说Erlang值得投资,因为至少,因为它是一个功能性的语言,它让你进入编写好的顺序代码的习惯(遵循函数语言模式)
答案 1 :(得分:3)
理想的用例是基于发送/接收消息的分布式系统,例如,聊天服务器或分布式键值数据库。 Erlang基于所谓的演员模型。 actor是一段代码,用于侦听消息并做出反应。每个actor都在自己的线程中运行。与Java或pthreads相比,线程非常轻量级。给演员的消息可能会导致它向另一个演员发送消息,依此类推。消息也可以是一段代码。 Erlang允许在不关闭系统的情况下热交换代码。您也可以将Scala和F#视为替代方案,因为它们在库级别上支持actor模型,并且是真正的通用语言。 Erlang不支持可变变量。
答案 2 :(得分:2)
这是把它卖给我的同事的一件事:
Apache在大约4000个并行会话中消失。 Erlang在更高的负载(~90k)下工作得更好。这个想法是,作为一种函数式语言,Erlang可以比命令式语言更好地处理并发性。
答案 3 :(得分:1)
与Ruby和Rails一样,Erlang具有内在的优点,但其部署范围更多地取决于已经编写的内容。现在,部署Erlang的是RabbitMQ。
关于内在的优点,Erlang的吸引力可能不是语言,而是基于Actor Model和消息传递而不是共享内存并发的框架。
我们中的许多人都非常确定共享内存线程是引入并发的错误方法。可视化和测试可能的交互几乎是不可能的,并且一个曾经工作的程序有可能开始失败,因为它在具有更多实际并发性的硬件上运行,即使线程模型和二进制代码没有完全改变了。