View
104
Download
0
Category
Preview:
Citation preview
Paradigmas de Linguagens de Paradigmas de Linguagens de ProgramaçãoProgramação
Claudio Cesar de Sá
claudio@udesc.joinville.udesc.br
Universidade Estadual de Santa CatarinaDepartamento de Ciência da Computação
Identificar necessidades de projetosFerramentas apropriadasVisualizar alternativasAmpliar uma visão de possibilidades...
Porquê estudar linguagens de programação?
Devido a sua existência temporal, uma época. Geração na história evolutiva.Devido um paradigma (conjunto de conceitos que referenciam um sistema), tanto abstrato/lógico como em hardware Devido ao seu propósito, destino de usoDevido o escopo de variáveis e funções, etcetc.....
Como definir linguagens de programação?
Categoria de Linguagens
IMPERATIVAS: C, Basic, Assembler, Fortran, Cobol,FUNCIONAIS: Lisp, Miranda, Scheme, Comoom Lisp, Haskell, ML,...LÓGICAS: Prolog e derivadosORIENTADAS A OBETOS: Smalltalk, ...HÍBRIDAS: C++ Builder, Java, Delphi, Kylix, ...ESPECÍFICAS: GPSS, Simula, Auto-Lisp, ...BASEADAS EM REGRAS de PRODUÇÃO: CLIPS, Jess, ... Shell de SE’s...
SEBESTA ,Robert W. Concepts of Programming Languages. 4 ed. Addison Wesley, 1999.
Geração das Linguagens
1a geração0s e 1s
2a geraçãoASSEMBLY: ADD x,y ...
3a geraçãoIMPERATIVAS((não)estruturadas,modulares)
4a geração4GL (SQL, CSP)OO’s. híbridas, etc.
5a geraçãoLÓGICAS e FUNCIONAIS
6 a geração
Evolução das Linguagens
As primeiras linguagens de programação (LPs de 1a geração) eram aquelas feitas em codificação binária, diretamente no hardware:
Utilização de linguagem de máquina (0’s e 1’s).Execução direta pela máquina, sem tradução. Linguagem escrita do acordo com as características especiais de um determinado processador.Linguagem totalmente dependente do hardware.
Evolução das Linguagens
As linguagens de programação de segunda geração (LPs de 2a geração) foram chamadas de LP´s de baixo nível:
Ainda dependentes do hardware.
Utilização de abreviações simples para instruções de programa, assim como números na familiar base-10 (decimal).
As abreviações são chamadas mnemônicos.Por exemplo, o mnemônico COMPARE A, B diz para o processador comparar os dados armazenados nas posições A e B da memória.
Código-fonte traduzido em linguagem de máquina por um montador.
Exemplo: Linguagens de montagem (ASSEMBLY).
Evolução das Linguagens
As linguagens da terceira geração (LPs de 3a geração) são chamadas de LP´s modernas ou LP´s de alto nível:
1as LP´s de 3a geraçãoNão-estruturadas
2as LP´s de 3a geraçãoEstruturadas ou procedimentais
3as LPs de 3a geraçãoModulares
Em paralelo...Funcionais e lógicas
Evolução das Linguagens
1as LP´s de 3a geração (não-estruturadas)Código-fonte traduzido (compilado ou interpretado).
programador pode escrever uma instrução utilizando linguagem pseudo-natural: palavras em inglês, como PRINT ou DISPLAY.
Código-fonte traduzido para um número muito maior de linhas em código assembly ou código de máquina.
Todo código escrito em um único programa.
Década de 50.
Exemplo: Linguagens não-estruturadas (FORTRAN, COBOL, BASIC).
Programa
Programa Principal
Dados
Paradigmas de ProgramaçãoParadigmas de Programação
Programação Não-Estruturada
Evolução das Linguagens
1as LP´s de 3a geração (não-estruturadas)
“SPAGHETTI CODE” e a grande CRISE DO SOFTWARE
instruções GOTOEm um programa longo, o resultado do uso de muitas instruções GOTO era o spaghetti code, isto é, programas que eram difíceis de ler e, por conseqüência, tinham maior chance de apresentar erros.
A tentativa de criar programas mais complexos e maiores conduziu a crise do software, na década de 1960.
Evolução das Linguagens
1as LP´s de 3a geração (não-estruturadas)
CRISE DO SOFTWARE
Os programas:não ficavam prontos na hora;excediam seus orçamentos;continham erros demais e;não satisfaziam aos clientes.
Um estudo de meados da década de 60 revelou que as programadores COBOL eram capazes de produzir, em média, somente 10 linhas de código livres de erro dia de trabalho.
Evolução das Linguagens
1as LP´s de 3a geração (não-estruturadas)
CRISE DO SOFTWARE
1a SOLUÇÃO
PROGRAMAÇÃO ESTRUTURADA
estruturas de controleprocedimentos
Evolução das Linguagens
2as LP´s de 3a geração (estruturadas ou procedimentais)trouxeram um novo tipo de abstração: os procedimentos (procedures).
foram inventados vários mecanismos de passagem de parâmetros.
foi estabelecido as fundamentações da programação estruturada.
Utilização de elementos lógicos denominados estruturas de controle:IF-THEN-ELSE, FOR, WHILE, REPEAT, etc.
surgiram os métodos de projeto estruturado.
Final da década de 50.
Exemplo: Linguagens estruturadas (ALGOL, ADA, SIMULA, PASCAL, C).
Programa
Programa Principal
Dados
Proc 1 Proc 2 Proc 3
Paradigmas de ProgramaçãoParadigmas de Programação
Programação Estruturada ou Procedimental
Evolução das Linguagens
3as LP´s de 3a geração (modulares)
Surgiu a compilação em módulos em separado.uma forma de manter dados e subprogramas juntos.
linguagens com poucas regras que requeriam consistência semântica entre as interfaces dos módulos.
Princípios da programação modular:ocultamento de informações (encapsulamento).reaproveitamento de código (reusabilidade).
Década de 70.
Exemplo: Linguagens modulares (MODULA-2).
Programação Modular
Programa
Programa Principal
Dados
módulo 1
Dados + Dados1
Proc 1
módulo 2
Dados + Dados2
Proc 2 Proc 3
Paradigmas de ProgramaçãoParadigmas de Programação
Programação Modular
Evolução das Linguagens
3as LP´s de 3a geração (modulares)
PROBLEMASlinguagens não possuíam suporte adequado para abstrações de dados e tipagem forte e com isso os erros eram detectados somente durante a fase de execução do programa.
SOLUÇÃO
PROGRAMAÇÃO ORIENTADA A OBJETOS
Evolução das Linguagens
Outras LP´s de 3a geração (funcionais)
Pesquisas em IA (Inteligência Artificial) necessitava de LPs:processasse dados em listas (ao invés de arrays).Computação simbólica (ao invés de numérica)
Características:sintaxe baseada no lambda-calculus.controle via recursão e expressões condicionais.
Década de 60.
Exemplo: Linguagens funcionais (LISP-LISt Processing Language, ML-Meta
Language, Miranda, Haskell).
Evolução das Linguagens
Outras LP´s de 3a geração (lógicas)
programação em lógica.conversacional (interpretada).Programa consiste em:
declaração: fatos sobre os objetos;definição: regras e relacionamentos;pergunta: objeto e relacionamento.
Popularidade: IA, Computação Simbólica e BD Relacional.
Década de 70.
Exemplo: Linguagens lógicas (PROLOG e assemelhados).
Evolução das Linguagens
Vários tipos de linguagens são encontradas na literatura como sendo de quarta geração (LPs de 4a geração - 4GLs):
geradores de relatório (linguagens para imprimir relatórios de banco de dados) e;
linguagens de consulta (linguagens para obter as informações de bancos de dados).
Não são LP´s de propósito geral.
Exemplo:Linguagens de 4GLs (CSP, SQL).
Evolução das Linguagens
Linguagens Orientadas a Objetos ou Baseadas em Objetosdiminuição do gap entre mundo real e solução computacional.programa = dados + procedimentos sobre os dadosPrincipais características:
classes&objetos, TADs, encapsulamento, herança e polimorfismo.programação se dá pela comunicação entre objetos.Pouco ou nenhum dado global.
Exemplo:Linguagens OO (SMALTALK, SIMULA-67, EIFFEL, Modula-3,).Linguagens BO (C++, Object Pascal, JAVA).
Objeto 1
Dados
Objeto 4
Dados
Objeto 3
Dados
Objeto 2
Dados
Paradigmas de ProgramaçãoParadigmas de Programação
Programação Orientada por Objetos
Paradigmas de Programação
NÃO-ESTRUTURADO
ESTRUTURADO
MODULAR
ORIENTADO A OBJETOS
FUNCIONAL
LÓGICO
Recommended