Conceitos Fundamentais de ERLANG – Parte 1 de 3 _ Elemar DEV
-
Upload
diego-nascimento -
Category
Documents
-
view
32 -
download
5
Transcript of Conceitos Fundamentais de ERLANG – Parte 1 de 3 _ Elemar DEV
-
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
ConceitosfundamentaisdeERLANGParte1de3
Olpessoal,comoestamos!?
Achomuitoimportante,paratododesenvolvedordesoftware,conhecerumpoucosobremuitastecnologias.Aideiaconseguirsaberondeprocurarumasoluoquandoumanecessidadesurge.
Nessepost,pretendoapresentaralgunsconceitosrelacionadoscomalinguagemERLANG.Entretanto,comoseriaimpossvelesgotaresseassuntoemumnicomomento,resolvifazerissoemtrspartes.
Antesdecontinuar,talvezqueiravisitarositeoficial:http://www.erlang.org/
OqueERLANG?!
Comecemospeladefiniodisponvelnosite:
Paramim,umalinguagemestranha,comumnomeestranho.Entretanto,incrivelmentepoderosa.
Quantoaonome,hquemdigaqueonomeumacrnimoparaEricssonLanguage(ondealinguagemsurgiu),hquemdigaqueumahomenagemaomatemticoAgnerKarupErlang(comcontribuiesmuitorelevantesparaaanlisederedestelefnicas).
Erlangfoiprojetadaparaconcorrncia
Erlangisaprogramminglanguageusedtobuildmassivelyscalablesoftrealtimesystemswithrequirementsonhighavailability.Someofitsusesareintelecoms,banking,ecommerce,computertelephonyandinstantmessaging.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,buscavaalgoprximoquetornassevivelodesenvolvimentodeaplicaes,quaserealtime,eextremamentetoleranteafalhas.
Erlangeumalinguagemfuncional.
NonecessrioderrubarcompletamenteumsistemafeitoemErlangparaatualizarmdulosinteiros.HaplicaesfeitasemErlangqueestofuncionandohdiversosanossemteremsidoparadasumanicavez.
Erlangfuncionacomprocessolevesnolugardethreads.OscriadoresdeErlangdedicaramalgumtempoparafazercomquesuamquinavirtualtornassesimplesacriao,gestoecomunicaodeaplicaescommuitosprocessos.
Erlangconfivel
Erlangfacilitaomonitoramentodeprocessos.Assim,fcilidentificaramortedeumprocesso(eseusrelacionados),bemcomoiniciarnovos.
Erlangfoiprojetadaparapermitirhotswappingeterprocessoslevesqueiniciamcomomnimodeoverhead.
Atualmente,ErlangutilizadanodesenvolvimentodesistemascomooCouchDBeochatdoFacebook.
Antesdecomearumpoucodeprogramaofuncional
Erlangumalinguagemdiferente.Paraquemnotemqualquerexperinciadeprogramaofuncional,importanteentenderqueemErlang:
programassoescritosinteiramentecomfunesgeralmente,todavezqueumafunoforevocadacomumdeterminadoconjuntodeparmetros,deverretornaromesmovalorgeralmente,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,acessehttp://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,comumponto(.)
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)eelassoimutveis:
Atoms
AtomcomochamamossmbolosemErlang.Elessoidentificadoresesemprecomeamcomumcaractereminsculo.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.Essearquivodeveteraextenso.erl
Vamoscomearcomumarquivochamadodemo.erl:
Vamosentenderessecdigo:
aprimeiralinhadnomeaomdulo.Todafunosempredeveestarassociadaaummdulo(chamadodemo,nesseexemplo)asegundalinhaindicaumafunoquedesejamosutilizarforadomduloo/1indicaqueafunoaceitaumparmetro
1234
-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().Observe:
Reparequeparaevocarumafuno,utilizamosasintaxe::().
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!
4comentriosemConceitosfundamentaisdeERLANGParte1de3
AlbertoMonteiro07/08/2011
0
0
123456
-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
iRateThis
Nocasoquandovocfezafunofibonaccioserverparadizerqueaquelafunoaindacontinua,eo.finalizaafuno?
Responderelemarjr07/08/2011
1
0
iRateThis
Naverdade,emErlang,assumesequeoindicaquehoutrassobrecargas(simplificando),opontofinal,encerraainstruo.
ResponderAlbertoMonteiro08/08/2011
0
0
iRateThis
Eudeiumalidasobrealinguagemeviqueemloopsasinstruessoseparadaspor,aoinvezde
ResponderPingback:ConceitosfundamentaisdeERLANGParte2de3ElemarDEV
Publicados07/08/2011porelemarjremSemcategoriaemarcadoErlang.http://wp.me/pZuNgjDPostanteriorPostseguinteBlognoWordPress.com.OtemaSuburbia.