Linguagens de Programação -...
Transcript of Linguagens de Programação -...
Introdução
• Oqueéumalinguagemdeprogramação(LP)?
DiferentespessoastêmdiferentesdefiniçõesdeLPs!
Paravocê,oqueéumaLP?
AlgumasDefinições
"Atooltoaidtheprogrammer"(inpart)C.A.RHoare
"anotaIonalsystemfordescribingcomputaIoninmachine-readableandhuman-readableform"
KennethLouden
"aconvenIon/methodforwriIngdescripIonswhichcanbeevaluated"
ChrisReade _
Oquevocêachadessasdefinições?
UmaDefiniçãoMelhor
"anotaIonalsystemfordescribingcomputa=oninmachine-readableandhuman-readableform"
KennethLouden
Oqueésercomputável?
Oqueéserlegívelpormáquina?
Oqueéserlegívelporhumanos?
Computável
• Oqueésercomputável?
- Tudoquepodeserexecutadoporumcomputador(máquinadeTuring)
"anotaIonalsystemfordescribingcomputa=oninmachine-readableandhuman-readableform"
KennethLouden
Alguémconhecealgumalinguagemnão-Turingcompleta?
AmaioriadaslinguagensdeprogramaçãosãoTuringcompletas
LegívelporMáquinas
• Oqueéserlegívelpormáquinas?
- Alinguagemdeveterumasintaxefixaparaqueocomputadorpossaler/analisaroprograma
- Alinguagemdeveterumasemân=cafixaparaqueocomputadorsaibaosignificadodoprogramaaserexecutado
"anotaIonalsystemfordescribingcomputaIoninmachine-readableandhuman-readableform"
KennethLouden
QualadiferençaentresintaxeesemânIca?
LegívelporHumanos
• Oqueéserlegívelporhumanos?
- Alinguagemdeveserdefácilentendimentoporhumanos
- Capacidadedalinguagemdeprovermeiosparasuportar/imporabstrações
"anotaIonalsystemfordescribingcomputaIoninmachine-readableandhuman-readableform"
KennethLouden
Comogerenciaracomplexidade?
BrechaSemânIca
• Abrechasemân=caentrehumanosecomputadores
Humanos• Interessadosemmodelaromundoreal
• Maisinteressadosnoquepodeserfeitodoquenocomo
Máquinas• Entendemdadosapenascomosequênciasdebits(0se1s)
• Entendemapenasinstruçõesdebaixonível
LinguagensdeprogramaçãodealtonívelfazemaponteentreohomemeocomputadordiminuindoabrechasemânIcaaoprovernotaçõesde
altonívelqueaindapodemserexecutadasporumcomputador
LinguagensdeProgramação
• Quaislinguagensdeprogramaçãovocêsjáusaram?Quaislinguagensvocêsconhecem?
# LPs
LPsconhecidas
# LPs
LPsusadas
LPsPopulares
• Rankingdaslinguagensmaispopulares♤
♤:ÍndiceTIOBE(hdp://www.Iobe.com/index.php/Iobe_index)
PorqueestudarLinguagensdeProgramação?
1. Aumentarsuahabilidadedeexpressarideias2. Aumentaroconhecimentoparaescolhadeumalinguagem
maisadequada3. Melhoraracompreensãodaslinguagensquevocêusa4. Melhoraroentendimentodecomolinguagenssão
implementadas5. Facilitaroaprendizadodeoutraslinguagens6. Desenvolversuapróprialinguagem?
MaisalgummoIvo?
RequisitosdeLinguagensdeProgramação
Universal
Natural
Implementável
Eficiente
Seumproblematemsoluçãocomalgoritmos,entãopodeserresolvidoporumaLP
Implementadaemumcomputador
ALPdeveproverasoperaçõesbásicasparaumdeterminadodomíniodeaplicação
ALPdevepossuirumaimplementaçãoeficiente
CritériosdeAvaliaçãodeLPs
Legibilidade
Redigibilidade
Confiabilidade
Custo
Facilidadedelereentenderprogramas
Conformidadecomaespecificação
Facilidadedeusarumalinguagemparacriarprogramas
Ocustototalfinal
Algumoutrocritério?
CritériosdeAvaliação:Legibilidade
• Simplicidade– Umconjuntogerenciáveldefuncionalidadeseconstruções– PoucamulIplicidadedefuncionalidades
• Ortogonalidade– UmconjuntorelaIvamentepequenodeconstruçõesprimiIvaspode
sercombinadodepoucasmaneiras– Todapossívelcombinaçãoélegal
• Comandosdecontrole– Presençadecomandosdecontrolebemestabelecidos(while)
• Tiposdedadoseestruturas– Presençadefacilidadesparadefiniçãodeestruturasdedados
• ConsideraçõessintáIcas– ComposiçãodeidenIficadoresflexível– Palavrasreservadaseformasparacriarcomandoscompostos– ConstruçõesautodescriIvas,palavrasreservadassignificaIvas
CritériosdeAvaliação:Redigibilidade
• SimplicidadeeOrtogonalidade– Poucasconstruções,númeropequenodeprimiIvas,pequenoconjuntoderegrasparacombiná-los
• Suporteaabstração– Habilidadededefinireusarestruturasouoperaçõescomplexasdeformaquedetalhespossamserignorados
• Expressividade– UmconjuntodeformasrelaIvamenteconvenientesdeespecificaroperações(Ex.:inclusãodocomandoforemmuitaslinguagensdeprogramaçãomodernas)
CritériosdeAvaliação:Confiabilidade
• VerificaçãodeIpos– VerificarprogramasporerrosdeIpos
• Tratamentodeexceções– InterceptarerrosemtempodeexecuçãoparatomadademedidascorreIvas
• Sinônimos(Aliasing)– PresençadedoisoumaismétodosdisIntosdereferenciaramesmaáreadememória
• Legibilidadeeredigibilidade– Umalinguagemquenãosuportaaforma"natural"deexpressarumalgoritmoiráusarnecessariamenteabordagens"não-naturais"
CritériosdeAvaliação:Custo
• Treinarprogramadoresparausaremalinguagem• Escritadoprograma• Compilaçãodoprograma• Execuçãodoprograma• Implementaçãodalinguagem(compiladordisponível?)• Confiabilidade
– Baixaconfiabilidadelevaaaltoscustos• Manutenibilidade
OutrosCritériosdeAvaliação
• Portabilidade– Facilidadequeprogramaspodemsermovidosdeumaimplementaçãoparaoutra
• Generalidade– Aaplicabilidadeemumavastagamadeaplicações
• Bem-definidade– Acompletudeeprecisãodadefiniçãooficialdeumalinguagem
ParadigmasdeLinguagensdeProgramação
• Adefiniçãodeparadigmasdeprogramaçãoauxilianoagrupamentodelinguagenssimilares,quepodemserclassificadasemdoisIpos:
Asser=vas
Declara=vas
– Baseadoemcomandos– Linguagensdeaplicaçãogeral– Paradigmas:imperaIva,orientadaaobjetos,orientadaaaspectos,orientadaaeventos,programaçãoconcorrente,…
– Baseadonoconceitosdedeclarações(oquedeveserfeito,nãocomo)
– Idealparaconstruirrelações(muitouIlizadoeminteligênciaarIficial)
– Paradigmas:lógicoefuncional
AsserIvas:ProgramaçãoImperaIva
• Centradonosconceitosdeestadoglobaldosistema(variáveis)eações(comandos)
• Primeiroparadigmaasurgir,aindadominante
• Vantagens– Eficiência(arquiteturasatuaissãovonNeumann)– Modelagem“natural”deaplicaçõesdomundoreal– Paradigmamaisdoqueestabelecido
• Desvantagens– Implementaçõesdemasiadamenteoperacionais:definem“comofazer”enão“oquefazer”
AsserIvas:ProgramaçãoOrientadaaObjetos
• Programasestruturadosemmódulos(classes)queagrupamumestado(atributos)eoperações(métodos)sobreesteestado
• Classespodemserestendidas,viaherança,eusadascomoIpos(cujoselementossãoobjetos)
• ÊnfaseemreuIlizaçãodecódigo• UsomaiscomumjuntocomoparadigmaimperaIvo• Visacorrigiroproblemadeváriasfunçõesacessaremvariáveis
globais(atravésdemodificadoresdeIpos)• Englobaconceitoscomoencapsulamento,herança,polimorfismo• TornaaprogramaçãomaisproduIva,facilitaamanutenção• Tornaocódigomaisrobusto,correto,extensível,...
AsserIvas:ProgramaçãoOrientadaaAspectos
• Naprogramaçãoorientadaaobjetos– RelacionamentoentregruposdeenIdades– EssencialmenteestáIca– Mudançanosrequisitoscausamgrandeimpacto
• Naprogramaçãoorientadaaaspectos– PodeservistacomoumaextensãodaOO– Permitemodificardinamicamenteomodeloparaatendernovosrequisitos
AsserIvas:ProgramaçãoOrientadaaEventos
• Baseadaemeventosassíncronos– Nãointerrompesuaexecuçãoaoprocessarentradasesaídas– Osistemaoperacionalenviaeventos,quesãotratadospeloprograma
• Nãoexisteisoladamente:éumaextensãoalinguagensimperaIvaseorientadasaobjetos
• Exemplos– Interfacesgráficas,web,…
AsserIvas:ProgramaçãoConcorrente
• Váriosprocessosexecutandosimultaneamente
• Paradigmacadavezmaisusual
• PodeseruIlizadoemumúnicoprocessadorouemváriosparalelamente
• Podeserdistribuído
DeclaraIvas:ProgramaçãoFuncional
• Baseadaemfunções(comonamatemáIca)– Umafunçãonãopossuiefeitoscolaterais– Nãoháoconceitodevariáveiscomomapeamentosemmemória
• Implementaummapeamentoentreentradaesaída– EsIlodeclaraIvo:semconceitodeestadoecomandosdeatribuição
• Vantagens– Provadepropriedades– Concorrênciaéexploradadeformanatural
• Desvantagem– Implementaçõesemgeralsãoineficientes
DeclaraIvas:ProgramaçãoFuncional
• Exemplo(emHaskell)
– Usoextensivoderecursividade,funçõesdealtaordem,polimorfismoeavaliaçãolazy
fact :: Int -> Intfact n | n == 0 = 1 | n > 0 = n * fact (n - 1)
DeclaraIvas:ProgramaçãoLógica
• Definição– Programassãorelaçõesentreentradaesaída– EsIlodeclaraIvo
• Implementamrelações(BaseadasemcláusulasSE-ENTÃO)– Unárias(fatos),binárias,n-árias
• Computação:consultasqueretornamverdadeirooufalso– Emcasoverdadeiro:oprogramaobtevesucesso– Emcasofalso:dizqueoprogramafalhou(masnãosignificaquea
consultasejafalsa,apenasnãofoipossívelinferircomoverdadeira)• AplicaçãoeminteligênciaarIficial• Vantagensedesvantagenssemelhantesaoparadigmafuncional
DeclaraIvas:ProgramaçãoLógica
• Exemplodeprogramaseconsultas
estrela(sol).
orbita(venus, sol). orbita(terra, sol). orbita(marte, sol). orbita(lua, terra).
planeta(B) :- orbita(B, sol).
satelite(B) :- orbita(B, P), planeta(P).
?- orbita(venus, sol).true.
?- planeta(mercurio).false.
?- planeta(X).X = venus ; X = terra ; X = marte.
?- satelite(X).X = lua.
Histórico
• LinhadotempodelinguagensdeprogramaçãodaO'Reilly♧
♧:hdp://www.oreilly.com/go/languageposter
Ementa
1) SintaxeesemânIca2) Sistemasdecomputação3) Nomes,amarraçõeseescopo4) Tiposdedados5) VerificaçãodeIpos6) Subprogramas7) Programaçãoorientadaaobjetos8) Tratamentodeexceções9) Programaçãoconcorrente10) Programaçãofuncional(Haskell)11) Programaçãológica(Prolog)
Avaliações
• Prova1– Pontuação:40pts– Data:02/05/2018
• Prova2– Pontuação:40pts– Data:20/06/2018
• ProvaSuplementar– Pontuação:40pts– Data:27/06/2018
• ProvaEspecial– Pontuação:100pts– Data:04/07/2018
• Listasdeexercícios– Pontuação:20pts(2ptscada)– Data:todasemanaantesdasaulas
Regras
• Apresençaéobrigatóriaem75%dasaulas– Emtodasasaulashaveráchamada– Nãohaveráabonodefaltas,salvooscasosprevistosporlei
• Aprovaéindividualesemconsulta– Apósoiníciodaprova,deve-seesperarnomínimo30minutosantesdeentregaraprova
– Colasserãopenalizadascomnotazero
• Sobreaslistas:– Fazerdeformaindividualemanuscrita– Entregarnasemanaposterioraoconteúdodado– Fazerpelomenos50%decadalistaparaqueelasejaconsiderada
Bibliografia
• R.Sebesta• ConceitosdeLinguagensde
Programação• 9aedição,2011
• F.Varejão• LinguagensdeProgramação• 1aedição,2004
Bibliografia
• J.Mitchell• ConceptsinProgramming
Languages• 1aedição,2002
• A.Webber• ModernProgramming
Languages:APracIcalIntroducIon
• 2aedição,2010
Bibliografia
• K.Louden• ProgrammingLanguages:
PrinciplesandPracIces• 2aedição,2002
• M.Gabbrielli;S.MarIni• PrinciplesofProgramming
Languages:PrinciplesandParadigms
• 1aedição,2010