Erlang

维基百科,自由的百科全书

跳转到: 导航, 搜索
Erlang语言
编程范型: 多种范型函数式并发式
面市時間: 1987年
設計者: 愛立信
實作者: 愛立信
最近釋出日期: R12B-2/ 2008年4月
啟發語言: PrologLISP
影響語言: Scala
作業系統: SolarisSUSEMicrosoft WindowsVxWorks


Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang是运行于虚拟机解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)[1]开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式并发式分布式

目录

[编辑] 开发及演变历史

Erlang得名于丹麦数学家统计学家Agner Krarup Erlang,同时Erlang还可以表示Ericsson Language。

[编辑] 发行版本

1998年起,Erlang发布开源版本,采用修改过的Mozilla公共许可证协议进行发放,同时爱立信仍然提供商业版本的技术支持。目前,Erlang最大的商业用户是爱立信,其他知名用户有北电网络Amazon.com以及T-Mobile[2]

[编辑] 当前的语言特征

  • Fail-fast(中文译为速错),即尽可能快的暴露程序中的错误.
  • 面向并发的编程(COP concurrency-oriented programming).
  • 函数式编程
  • 弱类型
  • 脚本语言

[编辑] 函数式编程

Ering函数大致写法如下,以一个求整数阶乘的模块为例:

-module(fact).
-export([fac/1]).

fac(0) -> 1;
fac(N) when N > 0 -> N * fac(N-1).

下面是快速排序算法的一个Erlang实现:

%% quicksort:qsort(List)
%% Sort a list of items
-module(quicksort).
-export([qsort/1]).

qsort([]) -> [];
qsort([Pivot|Rest]) ->
    qsort([ X || X <- Rest, X <= Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y > Pivot]).

[编辑] 并发及分布式编程

代码示例如下:

% create process and call the function web:start_server(Port, MaxConnections)
ServerProcess = spawn (web, start_server, [Port, MaxConnections]),

% create a remote process and call the function web:start_server(Port, MaxConnections) on machine RemoteNode
RemoteProcess = spawn(RemoteNode, web, start_server, [Port, MaxConnections]),

% send the {pause, 10} message (a tuple with an atom "pause" and a number "10") to ServerProcess (asynchronously)
ServerProcess ! {pause, 10},

% receive messages sent to this process
receive       
        a_message -> do_something; 
        {data, DataContent} -> handle(DataContent);
        {hello, Text} -> io:format("Got hello message: ~s", [Text]);
        {goodbye, Text} -> io:format("Got goodbye message: ~s", [Text])
end.

[编辑] 参见

[编辑] 参考资料

  1. ^ High Performance Erlang.於2008年4月13日查閱.
  2. ^ Who uses Erlang for product development?.Frequently asked questions about Erlang.於2008年4月13日查閱. “The largest user of Erlang is Ericsson. Ericsson use it to write software used in telecommunications systems. Many (dozens) projects have used it, a particularly large one is the extremely scalable AXD301 ATM switch.” FAQ中列出的其他用户包括: Nortel、Deutsche Flugsicherung、T-Mobile等

[编辑] 外部链接

个人工具