Linguagem da programação

Download Linguagem da programação

Post on 29-Jun-2015

7.186 views

Category:

Technology

2 download

Embed Size (px)

DESCRIPTION

Rodrigo, Roberto e Alberto

TRANSCRIPT

<ul><li> 1. Histria das Linguagens de Programao<br /></li></ul> <p> 2. O que linguagemde programao<br />Umalinguagem de programao um mtodo padronizado para expressar instrues para umcomputador. um conjunto de regras sintticas e semnticas usadas para definir umprograma de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados sero armazenados ou transmitidos e quais aes devem ser tomadas sob vrias circunstncias.<br /> 3. O conjunto de palavras (tokens), compostos de acordo com essas regras, constituem ocdigo fontede umsoftware. Esse cdigo fonte depois traduzido paracdigo de mquina, que executado peloprocessador<br /> 4. Uma das principais metas das linguagens de programao permitir que programadores tenham uma maior produtividade, permitindo expressar suas intenes mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (cdigo de mquina). Assim, linguagens de programao so projetadas para adotar uma sintaxe de nvel mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programao so ferramentas importantes para queprogramadoreseengenheiro de softwarepossam escrever programas mais organizados e com maior rapidez<br /> 5. O primeiro trabalho de linguagem de programao foi criado para um computador que existia, criado peloAda Lovelace, esposa de William King-Noel. O projeto do primeiro computador foi idealizado por Charles Babbageque, aps gastar fortunas e um longo tempo, no conseguiu concretizar o projeto. A linguagem de programao ADAfoi batizada em homenagem a esta primeira programadora.<br /> 6. Uma das primeiras linguagens de programao para computadores foi provavelmente Plankalkl, criada por Konrad Zusena Alemanha Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de programao.<br />A primeira linguagem de programao de alto nvel amplamente usada foi Fortran, criada em 1954<br /> 7. Em 1957 foi criada B-O, que daria origem a Flow-Matic(1958), antecessor imediato de Cobol, de 1959.LIspeAlgolforam criadas em 1958. <br /> 8. Diferena entre linguagem interpretada,compilada e scripts<br /> 9. Linguagem interpretada<br /> uma linguagem de programao, onde o cdigo fontr nessa linguagem executado por um programa de computador chamado interpretador, que em seguida executado pelo sistema operacional ou processador. Mesmo que um cdigo em uma linguagem passe pelo processo de compilao, a linguagem pode ser considerada interpretada, se o programa resultante no for executado diretamente pelo sistema operacional ou processador. Um exemplo disso o Bytecode, que um tipo de linguagem interpretada, que passa pelo processo de compilao e, em seguida, executado por uma mquina virtual, cuja sintaxe similar a cdigo de mquina e cada comando ocupa 1byte. Existem tambm, as linguagens de script, que so linguagens interpretadas, executadas do interior de programas e/ou de outras linguagens de programao.<br /> 10. Linguagem compilada<br />uma linguagem de programao, onde o cdigo fonte nessa linguagem executado diretamente pelo sistema operacional ou pelo processador, aps ser traduzido, atravs de um processo chamado compilao, usando um programa de computador chamado compilador, para uma linguagem de baixo nvel, como linguagem de montagem ou cdigo de mquina.<br /> 11. Linguagem de script<br />Tambm conhecido como linguagem de scripting, ou linguagem de extenso, so linguagens de programao executadas do interior de programas e/ou de outras linguagens de programao, no se restringindo a esses ambientes. As linguagens de script servem para estender a funcionalidade de um programa e/ou control-lo, acessando sua API e, so freqentemente usadas como ferramentas de configurao e instalao em sistemas operacionais(Shell script), como por exemplo, em alguns sistemas operacionais da famlia Linux, que usam a linguagem bash. So tambm frequentemente usadas em jogos, como por exemplo, o jogo Impossible Creatures, que usa a linguagem Lua para controlar as aes dos personagens e o ambiente de batalha.<br /> 12. O que um paradigma de programao?<br />Modelo, padro ou estilo de programaosuportado por linguagens que agrupam certas caractersticas comuns<br />A classificao de linguagens em paradigmas uma conseqncia de decises de projeto que impactam radicalmente a forma na qual uma aplicao real modelada do ponto de vista computacional<br /> 13. O Paradigma Imperativo<br />Programas centrados no conceito de um estado (modelado por variveis) e aes (comandos) que manipulam o estado<br />Paradigma tambm denominado de procedural, por incluir sub-rotinas ou procedimentos como mecanismo de estruturao<br />Primeiro paradigma a surgir e ainda o dominante<br /> 14. Modelo Computacional do Paradigma Imperativo<br />Entrada<br />Sada<br />Programa<br />Estado<br /> 15. Vantagens do modelo imperativo<br />Eficincia (embute modelo de Von Neumann)<br />Modelagem natural de aplicaes do mundo real<br />Paradigma dominante e bem estabelecido<br /> 16. Desvantagens do paradigma imperativo<br />Relacionamento indireto entre E/S resulta em:<br />difcil legibilidade<br />erros introduzidos durante manuteno<br />descries demasiadamente operacionaisfocalizam o como e no o que<br /> 17. O Paradigma Orientado a Objetos<br />No um paradigma no sentido estrito: uma subclassificao do imperativo<br />A diferena mais de metodologia quanto concepo e modelagem do sistema <br />A grosso modo, uma aplicao estruturada em mdulos (classes) que agrupam um estado (atributos) e operaes (mtodos) sobre este<br />Classes podem ser estendidas e/ou usadas como tipos (cujos elementos so objetos)<br /> 18. Modelo Computacional do Paradigma Orientado a Objetos<br />Entrada<br />Sada<br />Programa<br />Entrada<br />Sada<br />Programa<br />Estado<br />Estado<br />Entrada<br />Sada<br />Programa<br />Entrada<br />Sada<br />Entrada<br />Sada<br />Programa<br />Programa<br />Estado<br />Estado<br />Estado<br />...<br />.<br />.<br />.<br />.<br />.<br />.<br />.<br />.<br />.<br /> 19. Vantagens do ParadigmaOrientado a objetos<br />Todas as do estilo imperativo<br />Classes estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidade<br />Aceitao comercial crescente<br /> 20. Problemas do Paradigma OO<br />Semelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturao<br /> 21. O Paradigma Orientado a Aspectos<br />No um paradigma no sentido estrito<br />A diferena mais de metodologia quanto concepo e modelagem do sistema <br /> uma nova forma de modularizao:<br />Para requisitos que afetam vrias partes de uma aplicao<br /> 22. O Paradigma Orientado a Aspectos<br />A grosso modo, uma aplicao estruturada em mdulos (aspectos) que agrupam pontos de interceptao de cdigo (pointcuts)que afetam outros mdulos (classes) ou outros aspectos, definindo novo comportamento (advice)<br />Aspectos podem ser estendidos e/ou usados como tipos<br /> 23. Modelo Computacional do Paradigma Orientado a Aspectos<br />Entrada<br />Sada<br />Programa<br />Entrada<br />Sada<br />Programa<br />Estado<br />Estado<br />Entrada<br />Sada<br />Programa<br />Entrada<br />Sada<br />Entrada<br />Sada<br />Programa<br />Programa<br />Estado<br />Estado<br />Estado<br />Aspecto<br />Aspecto<br />...<br />.<br />.<br />.<br />.<br />.<br />.<br />.<br />.<br />.<br /> 24. Vantagens do ParadigmaOrientado a Aspectos<br />Todas as do paradigma OO<br />til para modularizar conceitos que a Orientao a Objetos no consegue (crosscutting concerns)<br />Em especial, aqueles ligados a requisitos no funcionais<br />Aumenta a extensibilidade e o reuso<br /> 25. Problemas do Paradigma Orientado a Aspectos<br />Semelhantes aos do OO<br />Ainda preciso diminuir a relao entre classes e aspectos<br />Problemas de conflito entre aspectos que afetam a mesma classe <br /> 26. O Paradigma Funcional<br />Programas so funes que descrevem uma relao explcita e precisa entre E/S<br />Estilo declarativo: no h o conceito de estado nem comandos como atribuio <br />Conceitos sofisticados como polimorfismo, funes de alta ordem e avaliao sob demanda <br />Aplicao: prototipao em geral, IA, concorrncia, ...<br /> 27. Modelo Computacional do Paradigma Funcional<br />Entrada<br />Sada<br />Programa<br /> 28. Viso Crtica do Paradigma Funcional<br />Vantagens<br /></p> <ul><li>Manipulao de programas mais simples: 29. - Prova de propriedades 30. - Transformao (exemplo: otimizao) 31. - Concorrncia explorada de forma natural</li></ul> <p>Problemas<br /></p> <ul><li>O mundo no funcional! 32. Implementaes ineficientes 33. Mecanismos primitivos de E/S e formatao</li></ul><p>O Paradigma Lgico<br />Programas so relaes entre E/S<br />Estilo declarativo, como no paradigma funcional<br />Na prtica, inclui caractersticas imperativas, por questo de eficincia<br />Aplicaes: prototipao em geral, sistemas especialistas,banco de dados, ...<br /> 34. Modelo Computacional do Paradigma Lgico<br />Entrada<br />Sada<br />Programa<br /> 35. Viso Crtica do Paradigma Lgico<br />Vantagens<br /></p> <ul><li>Em princpio, todas do paradigma funcional 36. Permite concepo da aplicao em um alto nvel de abstrao (atravs de associaes entre E/S)</li></ul><p>Problemas<br /></p> <ul><li>Em princpio, todos do paradigma funcional 37. Linguagens usualmente no possuem tipos,nem so de alta ordem</li></ul><p>Geraes de Linguagem de Programao.<br />Primeira Gerao: Linguagem de maquina (Binria)<br /></p> <ul><li>Usa apenas 0 (zero) e 1 (um) para programarsoftwares.</li></ul><p> Originalmente nenhum tradutor foi usado para montaras linguagens de primeira gerao. As instrues de programao eram submetidas atravs dos interruptoreslocalizados no painel frontal de sistemas de computadores. O principal benefcio na primeira gerao que o cdigo escrito pelo usurio muito rpido e eficiente, desde que este cdigo seja diretamente executado pela CPU.<br /> 38. Geraes de Linguagem de Programao.<br />Segunda Gerao: Linguagem de montagem (Assembly)<br /></p> <ul><li> uma notao legvel por humanos para o cdigo de mquina que uma arquitetura de computador especfica usa. A linguagem de mquina, que um mero padro de bit, torna-se legvel pela substituio dos valores em bruto por smbolos chamados mnemnicos, ou seja, enquanto um computador sabe o que a instruo-mquina IA-21 (10110000 01100001) faz, para os programadores mais fcil recordar a representao equivalente em instrues mnemnicas</li></ul><p>Geraes de Linguagem de Programao.<br />Terceira Gerao:Linguagem de alto nvel (Fortran, C, ALGOL , COBOL...)<br /></p> <ul><li>projetada para ser facilmente entendida pelo ser humano, incluindo coisas como variveis com nomes. Um exemplo disso seria:</li></ul><p> COMPUTE COMISSAO = VENDA * 0,5<br /> 39. Geraes de Linguagem de Programao.<br />Quarta Gerao: Linguagem de alto nvel (FOCUS, NATURAL, SQL...)<br /></p> <ul><li>So linguagens capazes de gerar cdigo por si s. So linguagens orientadas a objetos, tornando possvel a reutilizao de partes do cdigo para outros programas. 40. Diferena entre a 3GL e 4GL, que as primeiras descrevem como fazer algo, enquanto a segunda descreve o que voc quer que seja feito.</li></ul><p>Geraes de Linguagem de Programao.<br />Quinta Gerao:Linguagens naturais (LISP)<br /></p> <ul><li>So linguagens de programao usadas para criar programas para inteligncia artificial e sistemas especialistas que permitem aos programadores se comunicarem com o computador usando sentenas normais. 41. Em 1982 o governo japons lanou o projeto FGCS , que visava construir uma maquina paralela incluindo programao lgica e tcnicas de inteligncia artificial que teve fim dez anos depois,por no despertar muito interesse na indstria.</li></ul><p>Tipos de Linguagem de programao<br />Fracamente tipada, como PHP e Smalltalk, onde o tipo da varivel muda dinamicamente conforme a situao. <br />Fortemente tipada, como Java e Ruby, onde o tipo da varivel, uma vez atribudo, se mantm o mesmo at ser descartada da memria. <br />Dinamicamente tipada, como Perl, Python e Ruby, onde o tipo da varivel definido em tempo de execuo. <br />Estaticamente tipada, como Java e C, onde o tipo da varivel definido em tempo de compilao. <br /> 42. Evoluo centrada em nveis crescentes de abstrao<br />Linguagens de mquina<br />Endereos fsicos e operation code<br />Linguagens Assembly<br />Mnemnicos e labels simblicos<br />Linguagens de alto nvel<br />Variveis e atribuio (versus acesso direto memria)<br />Estruturas de dados (versus estruturas de armazenamento)<br /> 43. Evoluo centrada em nveis crescentes de abstrao<br />Estruturas de controle (versus jumps e gotos)<br />Estrutura de blocos como forma de encapsulamento<br />Generalizao e parametrizao (abstrao de tipos de valores)<br /> 44. Quanto ao grau de abstrao<br />Linguagem de programao de baixo nvel, cujos simbolos so uma representao direta do cdigo de mquina que ser gerado, onde cada comando da linguagem equivale a um "opcode" do processador, como Assembly<br />Linguagem de programao de mdio nvel, que possui smbolos que podem ser convertidos diretamente para cdigo de mquina (goto, expresses matemticas, atribuio de variveis), mas tambm smbolos complexos que so convertidos por um compilador. Exemplo: C, C++<br />Linguagem de programao de alto nvel, composta de smbolos mais complexos, inteligvel pelo ser humano e no-executvel diretamente pela mquina, no nvel da especificao de algoritmos, como Pascal, Fortran, ALGOL e SQL<br /> 45. Exemplos<br />Assembly<br />Criada na dcada de 50, o Assembly foi das primeiras linguagens de programao a aparecer. Ela usa uma sintaxe complicada e "exageradamente" difcil, isto porque, antes da dcada de 50 os programadores de mquinas tinham que escrever instrues em cdigo binrio, qualquer coisa como: 0110010110011011010110011010111010110101 ... Para escrever uma instruo. Na verdade, o Assembly foi criado para facilitar o uso dessa tarefa, mas considerado uma linguagem de baixo nvel, pois tudo o que o processador interpreta tem que ser descrito pelo programador. Assim o cdigo acima seria "add EAX" em Assembly. Bastava apenas, depois de estar concluda a escrita do cdigo, rodar o compilador e tnhamos o programa.<br /> 46. Exemplos<br />Fortran<br />Esta linguagem Fortran (Formula Translator) uma linguagem de Alto nvel, que foi criada partindo do problema e da dificuldade apresentadas pelo Assembly. Apareceu tambm na dcada de 50 e foi considerada uma das melhores linguagens da poca. Aqui temos vrias funes e instrues pr-definidas que nos permite poupar tempo na datilografia de instrues base do processador, ao contrrio da linguagem Assembly.<br /> 47. Exemplos<br />Pascal<br />Outra linguagem de Alto nvel dos anos 60, bem estruturada, mas com regras rgidas, o que a torna difcil de modelar, para se criar novas idias. a tpica linguagem usada para iniciar os cursos de Programao. Habitualmente ambientes de desenvolvimento (IDE) como o FreePascal, o Kylix e o Delphi so timas opes para se programar em Pascal.<br /></p>