Você está na página 1de 11

4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV

http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 1/11
ElemarDEV
Tecnologiaedesenvolvimento
ConceitosfundamentaisdeERLANGParte1
de3
Olpessoal,comoestamos!?
Achomuitoimportante,paratododesenvolvedordesoftware,conhecerumpoucosobremuitas
tecnologias.Aideiaconseguirsaberondeprocurarumasoluoquandoumanecessidadesurge.
Nessepost,pretendoapresentaralgunsconceitosrelacionadoscomalinguagemERLANG.Entretanto,
comoseriaimpossvelesgotaresseassuntoemumnicomomento,resolvifazerissoemtrspartes.
Antesdecontinuar,talvezqueiravisitarositeoficial:http://www.erlang.org/
OqueERLANG?!
Comecemospeladefiniodisponvelnosite:
Paramim,umalinguagemestranha,comumnomeestranho.Entretanto,incrivelmentepoderosa.
Quantoaonome,hquemdigaqueonomeumacrnimoparaEricssonLanguage(ondealinguagem
surgiu),hquemdigaqueumahomenagemaomatemticoAgnerKarupErlang(comcontribuies
muitorelevantesparaaanlisederedestelefnicas).
Erlangfoiprojetadaparaconcorrncia
Erlangisaprogramminglanguageusedtobuildmassivelyscalablesoftrealtimesystemswith
requirementsonhighavailability.Someofitsusesareintelecoms,banking,ecommerce,computer
telephonyandinstantmessaging.Erlangsruntimesystemhasbuiltinsupportforconcurrency,
distributionandfaulttolerance.
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 2/11
DizemqueaEricsson,aodesenvolverErlang,buscavaalgoprximoquetornassevivelo
desenvolvimentodeaplicaes,quaserealtime,eextremamentetoleranteafalhas.
Erlangeumalinguagemfuncional.
NonecessrioderrubarcompletamenteumsistemafeitoemErlangparaatualizarmdulosinteiros.H
aplicaesfeitasemErlangqueestofuncionandohdiversosanossemteremsidoparadasumanica
vez.
Erlangfuncionacomprocessolevesnolugardethreads.OscriadoresdeErlangdedicaramalgumtempo
parafazercomquesuamquinavirtualtornassesimplesacriao,gestoecomunicaodeaplicaes
commuitosprocessos.
Erlangconfivel
Erlangfacilitaomonitoramentodeprocessos.Assim,fcilidentificaramortedeumprocesso(eseus
relacionados),bemcomoiniciarnovos.
Erlangfoiprojetadaparapermitirhotswappingeterprocessoslevesqueiniciamcomomnimode
overhead.
Atualmente,ErlangutilizadanodesenvolvimentodesistemascomooCouchDBeochatdoFacebook.
Antesdecomearumpoucodeprogramao
funcional
Erlangumalinguagemdiferente.Paraquemnotemqualquerexperinciadeprogramaofuncional,
importanteentenderqueemErlang:
programassoescritosinteiramentecomfunes
geralmente,todavezqueumafunoforevocadacomumdeterminadoconjuntodeparmetros,
deverretornaromesmovalor
geralmente,funesnoalteramoestadodoprograma(nosideeffects)
umavarivelpodereceberapenasumvalor.Soimutveis.
Osgeralmenteestodestacadospornoseremcomunsnadescriodelinguagenspuramentefuncionais.
Erlangnoumalinguagempuramentefuncional.
Letitcrash!(MantraparaErlang)
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 3/11
ParainstalarErlang
AntesdecomearatrabalharcomErlang,sernecessriofazerseudownload.Paraisso,acesse
http://www.erlang.org/download.html!
Depois,sexecutarainstalao.
Pronto!
ExecutandooErlang
TendoinstaladooErlang,podemoscomearabrincar.
Paracomear,iniciemos,apartirdomenuinicialoREPLdoErlang.ChamaseERLANG
Esseatalhoiniciaoutiltriowerl.
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 4/11

Tambmpodemosiniciarumaversoeconmica,noconsoledecomando,atravsdoutilitrioerl.
Observe:

Comentrios,listas,variveiseexpresses
Comeamoscomomaissimples,comentrios!Observe:
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 5/11

Todososcomentriosdevemserprecididospor%.
Agora,umpoucodeoperaesmatemticas:

Umpontoimportanteaobservar:todasentenaemErlangdeveserencerrada,obrigatoriamente,comum
ponto(.)
Stringsdevemestarsempreentreaspas.Listasdevemestarentrecolchetes.Stringssolistasdecaracteres
(cdigosascii).Observe:
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 6/11
Nomesdevariveissemprecomeamcommaisculas(amensagemdeerrodoREPLbemruinzinha)e
elassoimutveis:
Atoms
AtomcomochamamossmbolosemErlang.Elessoidentificadoresesemprecomeamcomum
caractereminsculo.Observe:
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 7/11

TuplasePatternmatching
EmErlang,tuplassocriadasdeformasimilaralistas.Entretanto,nolugardecolchetes,usamoschaves.
Comtuplas,podemostrabalharcompatternmatching.Observe:
Graasaimutabilidade,podemosatribuirvaloresavariveiscomfacilidade.Basstahavercoerncia.
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 8/11
UmpoucomaissobrePatternMatching
PodemosutilizarPatternmatchingemtodasaslistasdoErlang.Observe:

PrimeirasfunesemErlang
Paraescrevermosumafuno,precisamoscolocarocdigofonteemumarquivo.Essearquivodevetera
extenso.erl
Vamoscomearcomumarquivochamadodemo.erl:
Vamosentenderessecdigo:
aprimeiralinhadnomeaomdulo.Todafunosempredeveestarassociadaaummdulo(chamado
demo,nesseexemplo)
asegundalinhaindicaumafunoquedesejamosutilizarforadomdulo
o/1indicaqueafunoaceitaumparmetro
1
2
3
4
-module(demo).
-export([echo/1]).

echo(Any) -> Any.
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 9/11
aterceiralinha(comcdigo)temadefiniodafuno.
IMPORTANTE:Onomedomdulodeveserigualaonomedoarquivo.
Paracompilarafuno,usamosoutilitrioerlc.Observe:
Comoindicado,apsacompilaogeradoumarquivocomaextenso.beam
Paracarregaromdulo,usamosc(<nomedomodulo>).Observe:

Reparequeparaevocarumafuno,utilizamosasintaxe:<nomedomdulo>:<nomedafuno>
(<parmetros>).
Outroexemplo:fibonacci.
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 10/11
Reparequeutilizamosparatrabalharaspartesdafuno.Voltaremosaissoembreve.
Lindo!
Porhoje,eraisso!
4comentriosemConceitosfundamentaisdeERLANG
Parte1de3
AlbertoMonteiro
07/08/2011

0
1
2
3
4
5
6
-module(math).
-export([fibonacci/1]).

fibonacci(0) -> 1;
fibonacci(1) -> 1;
fibonacci(N) -> fibonacci(N-1)+fibonacci(N-2).
4/5/2014 Conceitos fundamentais de ERLANG Parte 1 de 3 | Elemar DEV
http://elemarjr.net/2011/08/07/conceitos-fundamentais-de-erlang-parte-1-de-3/ 11/11

i
RateThis
Nocasoquandovocfezafunofibonaccioserverparadizerqueaquelafunoaindacontinua,eo
.finalizaafuno?
Responder
elemarjr
07/08/2011

i
RateThis
Naverdade,emErlang,assumesequeoindicaquehoutrassobrecargas(simplificando),oponto
final,encerraainstruo.
Responder
AlbertoMonteiro
08/08/2011

i
RateThis
Eudeiumalidasobrealinguagemeviqueemloopsasinstruessoseparadaspor,aoinvezde
Responder
Pingback:ConceitosfundamentaisdeERLANGParte2de3ElemarDEV
Publicados07/08/2011porelemarjremSemcategoriaemarcadoErlang.
http://wp.me/pZuNgjD
Postanterior
Postseguinte
BlognoWordPress.com.OtemaSuburbia.