詞語解釋
1、Erl是話務量單位。話務量等于單位時間的呼叫次數(shù)與呼叫的平均占用時長的乘積。單位是ERL(愛爾蘭)。 公式:A表示話源話務量,λ表示單位時間內(nèi)發(fā)生的平均呼叫數(shù),S表示呼叫的平均占用時長,根據(jù)話源話務量的定義,則A=λ•S
2、Erlang是一種通用的面向并發(fā)的編程語言,它由瑞典電信設備制造商愛立信所轄的CS-Lab開發(fā),目的是創(chuàng)造一種可以應對大規(guī)模并發(fā)活動的編程語言和運行環(huán)境。Erlang問世于1987年,經(jīng)過十年的發(fā)展,于1998年發(fā)布開源版本。Erlang是運行于虛擬機的解釋性語言,但是現(xiàn)在也包含有烏普薩拉大學高性能Erlang計劃(HiPE)[1]開發(fā)的本地代碼編譯器,自R11B-4版本開始,Erlang也開始支持腳本式解釋器。在編程范型上,Erlang屬于多重范型編程語言,涵蓋函數(shù)式、并發(fā)式及分布式。
開發(fā)及演變歷史
Erlang得名于丹麥數(shù)學家及統(tǒng)計學家Agner Krarup Erlang,同時Erlang還可以表示Ericsson Language。
發(fā)行版本
1998年起,Erlang發(fā)布開源版本,采用修改過的Mozilla公共許可證協(xié)議進行發(fā)放,同時愛立信仍然提供商業(yè)版本的技術支持。目前,Erlang最大的商業(yè)用戶是愛立信,其他知名用戶有北電網(wǎng)絡、Amazon.com以及T-Mobile等。
當前的語言特征
Fail-fast(中文譯為速錯),即盡可能快的暴露程序中的錯誤.
面向并發(fā)的編程(COP concurrency-oriented programming).
函數(shù)式編程
弱類型
腳本語言
函數(shù)式編程
Ering函數(shù)大致寫法如下,以一個求整數(shù)階乘的模塊為例:
-module(fact).
-export([fac/1]).
fac(0) -> 1;
fac(N) when N > 0 -> N * fac(N-1).
下面是快速排序算法的一個Erlang實現(xiàn):
%% 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]).
并發(fā)及分布式編程
代碼示例如下:
% 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.
掃碼付費即可復制
X