Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Introduo
Introduo
Linguagem de programao
concorrente
Sistemas
de telecomunicaes
Sistemas de controle
Aplicaes distribudas
Soft Real-Time Applications
Open Source
til para Servidores de aplicao da
Internet
Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Histrico
Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Caractersticas
Linguagem Funcional
Funes matemticas
Prova de propriedades
Concorrncia
Baseada em processos
Concorrncia explcita
Caractersticas
Tempo Real
Projetada
Programao Distribuda
Possui
Caractersticas
Robustez
Tolerncia a falhas
Operao contnua
Gerenciamento de Memria
Garbage Collector
Processos no compartilham memria
Integrao
Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Utilizao
Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Especificao
Getting Started
Documentation
Examples
Downloads
Source
Binary
Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Implementao
Tipos de Implementao
Open
Source Erlang
Ericssons
Comercial Erlang
Implementao
Mquinas Virtuais
Old BEAN
Transformar de Erlang para C e depois para cdigo
nativo
Foi abandonado devido a problemas com eficincia
Ambientes de Desenvolvimento
Erlang Shell
Desenvolvido
ErlyBird
IDE
pela Ericsson
baseado no NetBeans
Erlide
Plug-in
para o Eclipse
Instalao:
http://www.cin.ufpe.br/~dclal/arquivos/instalacao.pdf
Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Sintaxe
Nmeros
Integers
10.
-234.
2#110111010. (BASE#VALOR)
$A. ($CHAR)
Floats
17.368.
-56.654.
12.34E-10.
Sintaxe
tomos
O
Sintaxe
Tuplas
{123, bcd}.
{person, 'Joe', 'Armstrong'}.
Listas
[123, 456].
[{person, 'Joe', 'Armstrong'}, {person,
'Robert', 'Virding'}].
Sintaxe
Variveis
Devem
Sintaxe
Casamento de Padro
{A,
[H|T]
= [1,2,3,4]
H = 1, T = [2,3,4]
{A,_,[B|_],{C}}
= {abc,1,[2,3],{4}}
A = abc, B = 2, C = 4
Sintaxe
Boolean
No
String
So
hello = [$h,$e,$l,$l,$o] =
[104,101,108,108,111]
Sintaxe
Seqncias Especiais
Sintaxe
Operadores
- 3.
5 + 10.0.
3 / 2.
3 div 2.
true and (1 =< 3).
Sintaxe
Lgicos
Operadores
Relacionais
Aritmticos
Sintaxe
Operadores
Symbol
Purpose
Statement Separator
Statement Separator
Statement Terminator
->
Function or Guard
declaration
Sintaxe
Operadores de Listas
Concatenao
++
[1,2,3]++[4,5]
Subtrao
= [1,2,3,4,5]
--
[1,2,3,2,1,2]--[2,1,2]
= [3,1,2]
Sintaxe
Expresses
No
so lazy-evaluation
E1 + E2 E1 e E2 so avaliadas.
Expresses curto-circuito
Expression_1
orelse Expression_2
Expression_1 andalso Expression_2
Sintaxe
Mdulos
Em
Sintaxe
Mdulos
Atributos
pr-definidos:
-module(Module)
-export(Functions)
-import(Module,Functions)
-compile(Options)
-vsn(Vsn)
Sintaxe
Funes
Seqncia
Sintaxe
Funes
-module(fat).
-export([fatorial/1]).
fatorial(0) -> 1;
fatorial (N) when N > 0 -> N * fatorial (N - 1);
fatorial(_) -> 0.
fat:fatorial(6).
Sintaxe
Funes
-module(calculo).
-export[area/1].
area({quadrado, Lado}) ->
Lado* Lado;
area({retangulo, X, Y}) ->
X * Y;
area({circulo, Raio}) ->
% aproximadamente
3.14159 * Raio* Raio;
area({triangulo, A, B, C}) ->
S = (A + B + C)/2,
math:sqrt(S*(S-A)*(S-B)*(S-C)).
Sintaxe
atom_to_list(hello) = hello
float_to_list(Float)
float_to_list(7.0) =
"7.00000000000000000000e+000"
tuple_size({a,b,c})
date(),
time()
processes()
Sintaxe
Estruturas de Controle
IF
if
Guard1 -> Sequence1 ;
Guard2 ->Sequence2 ;
...
end
Sintaxe
Estruturas de Controle
IF
-module(modulo).
-export([maior_que/2]).
maior_que(X, Y) ->
if
X > Y ->
true;
true -> % tomo funcionando como um else
false
end.
Sintaxe
Estruturas de Controle
Case
case Expr of
Pattern1 [when Guard1] -> Seq1;
Pattern2 [when Guard2] -> Seq2;
...
end
Sintaxe
Estruturas de Controle
Case
-module(redondo).
-export([eh_redondo/1]).
eh_redondo(Forma) ->
case Forma of
{circulo, _} ->
true;
{quadrado, _} ->
false;
_ ->
false
end.
Sintaxe
Sintaxe
-module(teste).
-export([f/1,g/1,h/1]).
f(X) ->
case g(X) of
true -> A = h(X), B = 7;
false -> B = 6
end,
h(A),
h(B).
Sintaxe
Processo
Aplicao distribuda
Node = N remoto
Sintaxe
Send
Receive
receive
Message 1 -> ... ;
Message 2 -> ...;
...
end
Sintaxe
-module(echo).
-export([go/0, loop/0]).
go() ->
Pid = spawn(echo, loop, []),
Pid ! {self(), hello},
receive
{Pid2, Msg} ->
Print = "Mensagem:" ++ atom_to_list(Msg)
++ "~nRecebido de:" ++ pid_to_list(Pid2) ++ "~n",
io:format(Print,[])
end,
Pid ! stop.
loop() ->
receive
{From, Msg} ->
From ! {self(), Msg},
loop();
stop ->
true
end.
Sintaxe
Tratamento de erros
Catch
e Throw
-module(modulo).
-export([roda_funcao/1]).
funcao(1) -> hello;
funcao(2) -> throw({exception, abc});
funcao(3) -> tuple_to_list(a);
funcao(_) -> exit({myExit, 222}).
roda_funcao(X) ->
case catch funcao(X) of
{exception, Args} -> "erro1";
{'EXIT',{myExit, Code}} -> "erro2";
{'EXIT', What} -> "erro3";
Other -> Other
end.
Sintaxe
Palavras Reservadas:
after and andalso band begin bnot
bor bsl bsr bxor case catch cond div
end fun if let not of or orelse query
receive rem try when xor
Comentrios
%comentrio
Sintaxe
Exerccios
Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Vantagens
Desvantagens
Desempenho (linguagem
interpretada)
No disponvel para muitas
plataformas (verso compilada)
Fraqueza em programao baixo
nvel
Roteiro
Introduo
Histrico
Caractersticas
Utilizao
Especificao
Implementao e Ambientes de
Desenvolvimento
Sintaxe
Vantagens e Desvantagens
Tendncias
Tendncias
Open Source
Fcil
literatura
Baixo Custo
Linguagem atualizada
Documentaes
recentes
Constantes Releases
Referncias
?
Dvidas