虽然 Erlang 在某些方面做得很好,但从技术上讲,仍然可以从其他语言中获得相同的结果
让我们面对现实吧,实际上所有编程语言或多或少都可以做任何事情,并且有办法与 C 库接口以访问它们没有原生库的任何东西。
要指出的最明显的一点是,归根结底,所有 Erlang 都归结为 C,还有一点汇编程序,但这与重点无关。
因此,您应该很清楚,您可以用 Erlang 编写的任何东西都可以用 C 编写,并且因为您正在消除抽象和解释层,如果您做得合理,它应该会更快。有时会快一点。有时会快很多。
Erlang 不是灵丹妙药,在图像和信号处理、操作系统设备驱动程序等方面尤其糟糕。
这是一个真正的字节和位移魔术的舞台,如果您为每个位移位引入一个抽象层......您很容易最终将可能实现的最佳性能降低多个数量级。
并且会在诸如服务器使用的大型软件(即:队列、map-reduce)、与其他语言结合进行一些提升、更高级别的协议实现等方面大放异彩
这是有趣的一点。我们已经确定,如果你用 C 编写它,除非你的工作做得很差,否则结果只会在性能方面更好。
但性能并不是一切。在当今世界,CPU 和内存很便宜,但上市时间非常重要。一家公司可能会花费数千美元购买运行您的应用程序所需的额外硬件,因为它是用 Erlang 而不是 C 编写的,但由于该产品是第一个推向市场的,因此可以节省(或赚取)数百万美元。
事实是,如果您将给定的软件问题与具有正确范式的高级语言相匹配,则普通软件工程师通常可以比使用 C 语言编写给定产品快很多倍。
此外,编写 C 语言很容易出错,并且为犯错和错误选择提供了更大的空间。这意味着软件工程师可能会用 C 编写一些东西,以至于等效的 Erlang,基于一些非常精细调整的成熟聪明的 C,如果 Erlang 本身做得很好,它可能会表现得更好!
根据需要评估每个问题,并根据要解决的问题选择合适的工具
一般来说,Erlang 是一个非常棒的工具,但它确实比其他领域更适合某些问题领域。有些问题可能会更好地用 perl 或 C、python 等来解决。当它适合问题域时,Erlang 可能是无与伦比的,但如果它不适合,绝对最好考虑其他东西。