conceitos fundamentais de erlang – parte 1 de 3 _ elemar dev

Post on 24-Nov-2015

32 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

  • 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.

top related