在 Programming Erlang 的开头,有以下内容:
是什么让 Erlang 成为您项目的最佳选择?这取决于您要构建的内容。如果您正在考虑编写数字运算应用程序、图形密集型系统或在手机上运行的客户端软件,那么抱歉,您买错书了。
隐含的信息是 Erlang 不适合计算昂贵的工作。是什么让 Erlang 如此不合适,或者我误解了?
在 Programming Erlang 的开头,有以下内容:
是什么让 Erlang 成为您项目的最佳选择?这取决于您要构建的内容。如果您正在考虑编写数字运算应用程序、图形密集型系统或在手机上运行的客户端软件,那么抱歉,您买错书了。
隐含的信息是 Erlang 不适合计算昂贵的工作。是什么让 Erlang 如此不合适,或者我误解了?
Erlang 适用于 I/O-bound 应用程序,即限制因素是 I/O 操作的延迟和吞吐量而不是指令可以通过 CPU 管道推送的速率的问题。Web 服务器和数据库是 I/O 密集型应用程序的好例子:限制因素可能是磁盘和网络,而不是 CPU。传统上“计算量大”的应用程序包括密码工具和科学模拟。
至于为什么 Erlang 在计算密集型问题上无法匹配 C 和 Fortran 等语言,我们必须考虑代码生成和缓存友好性等问题......我会尝试一下:
请记住,这只是冰山一角,我绝不是 Erlang 或语言实现方面的专家。不过,不要让 Erlang 可能永远不会运行科学模拟的事实吓到你;对于许多应用程序来说,它是一种绝对出色的语言。
*HiPE 可通过 Debian 中的 erlang-base-hipe 软件包或./configure --enable-hipe
源代码 tarball 获得。
只是 C 代码在大多数情况下可能会相当快。Erlang 擅长容错、分布式计算和并发。程序员往往同样精通编写 erlang 或其他语言,但如果您想要速度,请使用 C 或 C++,可能来自 erlang 端口,因此可以在您自己的 erlang 应用程序中使用此代码。
Erlang 是一种并发函数式编程语言,专为大型工业实时系统编程而设计。没有什么特别能阻止您开发“数字运算应用程序或图形密集型系统”,但该语言在实时事件处理中大放异彩。