estudos de linguagens de programação - introdução marcelo marinho ([email protected])

39
Estudos de Linguagens de Programação - Introdução Marcelo Marinho ([email protected])

Upload: edison-salazar-lancastre

Post on 07-Apr-2016

220 views

Category:

Documents


4 download

TRANSCRIPT

  • Estudos de Linguagens de Programao - IntroduoMarcelo Marinho ([email protected])

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • O que uma Linguagem de Programao?

    Linguagem usada por uma pessoa para expressar um processo atravs do qual um computador pode resolver um problema.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Por que estudar Conceitos de Linguagens de Programao?Aumento da capacidade de expressar idias: melhor domnio;Melhor uso de uma LP: extrair o mximo de sua funcionalidade e eficincia;Melhor escolha de uma LP: adequao ao problema;Maior facilidade em aprender novas LPs.Maior habilidade em projetar novas LPs.Possibilitar o avano global da computao.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Por que estudar Conceitos de Linguagens de Programao?Entender a importncia da implementao

    O entendimento sobre as questes de implementao auxilia o programador a criar programas mais eficientes.Ex.: programa recursivo menos eficiente que o equivalente iterativo.

    Certos bugs podem ser encontrados e corrigidos apenas por programadores que conheam os detalhes de implementao.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Linguagens de ProgramaoEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Domnios de ProgramaoAplicaes Cientficas

    Primeiras aplicaes surgiram na dcada de 40 junto com os primeiros computadores;Caractersticas:Estruturas de dados simples: arrays e matrizes;Estruturas de controle comuns: laos e selees;Operaes aritmticas com ponto-flutuante de alta preciso;

    Assembly, FORTRAN, Algol 60Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Domnios de ProgramaoAplicaes Comerciais

    Incio na dcada de 50

    Caractersticas:Capacidade de armazenar cadeias de caracteres;Facilidade para produzir relatrios elaborados;Operaes aritmticas decimais;

    Primeira linguagem bem sucedida para negcios foi COBOL (1960)Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Domnios de ProgramaoInteligncia Artificial

    Caractersticas:

    Computao simblica em vez de numrica;Uso intensivo de listas encadeadas;

    LISP (McCarthy, 1959), Linguagem funcional.

    Prolog (Clocksin e Mellish, 1970), Linguagem Lgica. Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Domnios de ProgramaoProgramao de SistemasSistema operacional e ferramentas de suporte programao (software bsico)

    Caractersticas:Execuo rpida;Deve possuir recursos de baixo nvel;

    PL/S (IBM), BLISS (Digital), Extended ALGOL (Burroughs).

    C (ANSI, 1989) - Linguagem do Unix e do Windows. Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Domnios de ProgramaoConstruo de Scripts (Scripting Languages)Script : arquivo contendo lista de comandos bsicosAtividades de gerenciamento:sh - Primeira delas;ksh -David Korn, Bell Laboratories;awk - Al Aho, Brian Kernighan & Peter Wienberger, Bell Laboratories;tcl - John Ousterhout, Universidade da Califrnia;Perl - Larry Wall:WWW popularizou Perl, principalmente para programao de Common Gateway Interface (CGI)JavaScript Netscape, 1995Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Domnios de ProgramaoLinguagens de Propsitos Especiais

    Gerao de relatrios comerciais (RPG, Easytrieve)

    Instruo de mquinas programveis (APT)

    Simulao de sistemas (GPSS)

    Formatao de hipertextos (HTML)Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Classificao das LPsAs LPs podem ser classificadas de diversas formas, algumas so quanto ao:

    Nvel de Utilizao;

    Propsito;

    Paradigma;Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Classificao das LPsQuanto ao nvel de utilizao classificam-se em:

    Linguagens de Mquina;

    Linguagens de Baixo Nvel;

    Linguagens de Alto Nvel;Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Linguagens de MquinaLinguagens de Mquina (LM)Internamente o computador s trabalha com nmeros binrios ( 0000011100...).LM a linguagem nativa de computadores sendo totalmente dependente de mquina, onde programas so expressos somente por nmeros.LM praticamente ilegvel para humanos, mas o que o computador entende. totalmente dependente da arquitetura da mquina. Portanto, no portvel.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Linguagens de Baixo NvelLinguagem Assembly (LA)Linguagem de baixo nvel que utiliza nomes e smbolos ao invs de cdigos de instrues de mquina.LA dependente de mquina, mas cria um nvel de abstrao sobre a linguagem de mquina, atravs de nomes e smbolos, que tornam a tarefa de programao um pouco menos rdua.Exemplos de instrues em Assembly:SUB AX,AX; atribui o valor zero para AXCMP DX,BX; compara o valor de DX com o de BXEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Linguagens de Alto NvelLinguagens de alto nvel so aquelas que so independentes de mquina.Necessitam de traduo para a linguagem de mquina, por meio de compiladores (mais comum) e/ou interpretadores.Seu uso possui diversos benefcios:Notaes legveis e familiares aos programadores;Independncia de mquina portabilidade;Maior facilidade para deteco de erros durante desenvolvimento e execuo;Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Linguagens de Alto NvelExemplos de linguagens de alto nvel: FORTRAN, Algol, COBOL, Pascal, Python, C.C s vezes considerada uma linguagem de nvel mdio, porque permite o uso de instrues de baixo nvel com acesso direto mquina, o que pode comprometer a portabilidade.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Classificao das LPsQuanto ao propsito (domnio de aplicao): Aplicaes ComerciaisCobol, Clipper, Mumps, Natural;Desenvolvimento de Software BsicoC, C++, Pascal;Desenvolvimento de Sistemas EspecialistasLisp, Prolog;Educacionais: Logo, Basic;Aplicaes Cientficas: Fortran, Algol;Propsito Especfico Simula, HTML, VRML, Java, LEX, YACC.

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Classificao das LPsQuanto ao Paradigma:O que um Paradigma de Programao?

    Modelo, padro ou estilo de programao suportado por linguagens que agrupam certas caractersticas comuns.

    Tal classificao uma conseqncia de decises de projeto que impactam radicalmente a forma na qual uma aplicao real modelada do ponto de vista computacional.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Paradigmas de LPsEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Paradigmas de LPsImperativoProcesso de mudanas de estadosVarivel, valor e atribuioClulas de memriaEstruturado, Orientado a Objetos e ConcorrenteDeclarativoEspecificaes sobre a tarefa a ser realizadaAbstrai-se de como o computador implementadoFuncional e LgicoEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Paradigmas ImperativoEstruturadoRefinamentos sucessivosBlocos aninhados de comandosDesestmulo ao uso de desvio incondicionalC, PascalOrientado a ObjetosAbstrao de dadosEncapsulamento de dadosHerana e atribuio dinmica de tiposProvenientes das linguagens estruturadas

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Paradigmas ImperativoConcorrenteProcessos executam simultaneamente e concorrem por recursos.

    Java, ToonTalk, TyCO, SPELL

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Paradigmas DeclarativoFuncionalComputao realizada atravs da aplicao de funes a parmetrosLISP, SchemeLgico

    Predicados (regras)Regras so especificadas sem especificar ordem.Deduo automticaPrologEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Influncias sobre o Projeto da LinguagemArquitetura Von NeumannEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Influncias sobre o Projeto da LinguagemArquitetura Von NeumannLinguagens imperativas.As variveis so fundamentais pois modelam as clulas de memria.Atribuies representam a transferncia de valores da memria para a CPU para serem utilizados em alguma operao; ou da CPU para memria aps alguma operao.Repetio iterativa o mtodo mais eficiente desta arquitetura (laos while, for, etc.)Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Mtodos de ImplementaoCompilaoInterpretao PuraSistemas de Implementao HbridosEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • CompilaoTransformar programas escritos em linguagens de alto nvel para linguagem de mquina, podendo ser diretamente executados pelo computador.

    Muitas linguagens baseiam-se no uso de compiladores para gerar programas: Pascal, C, Ada, COBOL, FORTRAN.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • CompilaoEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Interpretao PuraMtodo de execuo de programas escritos em linguagens de alto nvel onde os programas so interpretados, por um interpretador, declarao por declarao, gerando cdigo compilado e executando-a.

    Algumas linguagens interpretadas: Smalltalk,LISP, APL.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Interpretao PuraEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Sistemas HbridosEm sistemas hbridos, tanto utilizado compilao quanto interpretao.Normalmente, programas escritos em linguagens de alto nvel so compilados para uma linguagem intermediria de baixo nvel (mas acima do nvel de cdigo de mquina). Ento, um interpretador executa o cdigo intermedirio, transformando-o passo a passo em cdigo de mquina.Um exemplo bem conhecido disto o usado pelos ambientes de desenvolvimento da linguagem Java (JVM).Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Sistemas HbridosEstudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • ComparativoCompilaoEficincia - Execuo rpida dos programas, pois so executados diretamente em linguagem de mquina.Problemas com Portabilidade.Interpretao PuraFlexibilidade e Portabilidade do cdigo-fonte.Problemas de eficincia, normalmente 10 a 100 vezes menor comparada ao compilado e Maior Consumo de Memria.Raramente Usada.HbridoUne Vantagens dos Outros Mtodos.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Ambientes de Desenvolvimento de SoftwareConjunto integrado de ferramentas e tcnicas que auxiliam no desenvolvimento de software.Apiam todas as fases do desenvolvimento do software.Ferramentas CASE - Computer-Aided Software EngineeringRational Rose, Poseidon, ErWin, Oracle Designer.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Ambientes de Desenvolvimento de SoftwareFerramentas de apoio a programao

    Editores de Textos e Editores SintticosCompiladores (Compilers)Interpretadores (Interpreters)Bibliotecas (Libraries)Ligadores (Linkers)Debugadores (Debuggers)Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Ambientes de Desenvolvimento de SoftwarePor que usar ambientes?Aumento da ProdutividadeDiminuio das chances de erro;Diminuio do tempo de localizao dos erros.

    Melhor Depurao;

    Maior Legibilidade;

    Melhor Documentao.Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

  • Ambientes de Desenvolvimento de SoftwareExemplos:UNIX (SO e ferramentas)Turbo PascalBorland C++Microsoft Visual C++Delphi (Object Pascal)Borland Jbuilder (Java)Microsoft Visual Studio.NET (C#, Visual BASIC.NET, Jscript, J#, or C++)J2SDK (Java)Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    Estudo de Linguagens de Programao - Prof. Marcelo Marinho

    *Os computadores so usados em uma infinidade de diferentes reas, desde o controle de usinas eltricas nucleares armazenagem de registros e tales de cheques pessoais. Por causa dessa grande diversidade no seu espao, linguagens de programao com metas muitos diferentes tm sido desenvolvida.***