Paradigmas de Linguagens de Programação

Slides:



Advertisements
Apresentações semelhantes
PROGRAMAÇÃO DE COMPUTADORES
Advertisements

1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Introdução à Ciência da Computação Linguagens de Programação.
Linguagem de Montagem Visão geral.
Engenharia de Software
Informática Aplicada Prof.: Bruno Rafael de Oliveira Rodrigues.
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
ELEMENTOS DA INFORMÁTICA
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Introdução a Informática
FACENS – Engenharia da Computação Lógica Computacional II
INTRODUÇÃO À PROGRAMAÇÃO
Programação Lógica: PROLOG
Ferramentas Programação
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Curso Sistemas de Informação I Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Tradutores de Linguagens
A Linguagem Haskell Claudio Cesar de Sá
Programação Orientada a Objetos
Paradigmas da Programação – Semestre 1 - Aula 1
Arquitetura de Computadores
Linguagens de Programação
Aula 3 Evolução da Principais Linguagens
Aula 2 Aspectos Preliminares
Paradigmas de Linguagens de Programação Introdução Professor: Armando Hage Belém-2008.
Orientação a Objetos.
Universidade do Vale do Rio dos Sinos
TÉCNICAS DE PROGRAMAÇÃO II
Paradigmas de programação
Lógica de Programação UNIDADE 1 – Introdução a) Computador
PROGRAMAÇÃO I UNIDADE 1.
Flávio Melo Gabriel Fornari
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 02: Introdução.
Linguagem de programação I A
Linguagem de Programação II
Tópicos avançados em internet A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
PCI- Introdução à Computação
Caracterização e Objetivos das LP
Teoria e Implementação de Linguagens Computacionais – IF688
Paradigmas de Linguagens de Programação
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Paradigmas de Programação
Organização e Arquitetura de Computadores
02/08/2011 Professor Leomir J. Borba- –
Orientação a Objetos Parte I
Paradigma funcional.
Paradigmas de Linguagens de Programação Aula 2
Introdução a Linguagens de Programação
BC-0505 Processamento da Informação
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Projeto de Linguagens de Programação
Aula 1 – Profª Danielle Costa
Linguagens de Programação Introdução Prof. Renato Melo.
Programação Lógica com Prolog
Treinamento PHP Módulo 2 PHP Avançado Waelson Negreiros
Compiladores – IF688 Professor: André Santos
Introdução a Programação Orientada a Objetos
Programação Computacional Aula 2: Introdução -Algoritmos
Linguagens de Programação
Estudos de Linguagens de Programação - Introdução
SISTEMAS DE INFORMAÇÃO
Evolução das Principais Linguagens de Programação
Paradigmas de Programação
Introdução à lógica de programação
Módulo II Capítulo 1: Orientação a Objetos
Influencias sobre o Projeto da Linguagem
Módulo I – Softwares: Linguagens de Programação Prof.: Rogério Morais.
Transcrição da apresentação:

Paradigmas de Linguagens de Programação Universidade Estadual de Santa Catarina Departamento de Ciência da Computação Paradigmas de Linguagens de Programação Claudio Cesar de Sá claudio@udesc.joinville.udesc.br

Porquê estudar linguagens de programação? Identificar necessidades de projetos Ferramentas apropriadas Visualizar alternativas Ampliar uma visão de possibilidades ...

Como definir 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 uso Devido o escopo de variáveis e funções, etc etc.....

Categoria de Linguagens IMPERATIVAS: C, Basic, Assembler, Fortran, Cobol, FUNCIONAIS: Lisp, Miranda, Scheme, Comoom Lisp, Haskell, ML,... LÓGICAS: Prolog e derivados ORIENTADAS 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ção 0s e 1s 2a geração ASSEMBLY: ADD x,y ... 3a geração IMPERATIVAS((não)estruturadas,modulares) 4a geração 4GL (SQL, CSP) OO’s. híbridas, etc. 5a geração LÓ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ção Não-estruturadas 2as LP´s de 3a geração Estruturadas ou procedimentais 3as LPs de 3a geração Modulares 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ção Não-Estruturada Paradigmas de Programação Programação Não-Estruturada Programa Programa Principal Dados

Evolução das Linguagens 1as LP´s de 3a geração (não-estruturadas) “SPAGHETTI CODE” e a grande CRISE DO SOFTWARE instruções GOTO Em 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 controle procedimentos

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

Paradigmas de Programação Programação Estruturada ou Procedimental Programa Programa Principal Dados Proc 1 Proc 2 Proc 3

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 Paradigmas de Programação Programa Programa Principal Dados módulo 1 Dados + Dados1 módulo 2 Dados + Dados2 Proc 1 Proc 2 Proc 3 Programa

Evolução das Linguagens 3as LP´s de 3a geração (modulares) PROBLEMAS linguagens 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 Objetos diminuição do gap entre mundo real e solução computacional. programa = dados + procedimentos sobre os dados Principais 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).

Paradigmas de Programação Programação Orientada por Objetos Objeto 1 Dados Objeto 2 Dados Objeto 3 Dados Objeto 4 Dados

Paradigmas de Programação NÃO-ESTRUTURADO ESTRUTURADO MODULAR ORIENTADO A OBJETOS FUNCIONAL LÓGICO