Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Paradigmas de Programação Prof.: Gláucya Carreiro Boechat [email protected] Paradigmas de Programação prof Gláucya Carreiro Boechat 1 Objetivos Fornecer ao aluno os conceitos fundamentais sobre linguagens de programação, permitindo-o ter parâmetros para selecionar entre as diversas linguagens de programação qual a mais adequada à sua necessidade Paradigmas de Programação prof Gláucya Carreiro Boechat 2 Paradigma Etimologia: A palavra paradigma tem origem: Na palavra grega παράδειγμα (paradeigma) que significa “padrão” ou “exemplo” Na palavra grega παραδεικνύναι (paradeiknunai) que significa “demonstrar”. Fonte: “http://en.wikipedia.org/wiki/Paradigm” Paradigmas de Programação prof Gláucya Carreiro Boechat 3 Paradigma de programação Um paradigma de programação é um estilo paradigmático de programar Um paradigma de programação (e determina) a visão que o programador tem da execução de um programa Exemplos Orientada a objetos Funcional Paradigmas de Programação prof Gláucya Carreiro Boechat 4 O que caracteriza uma Linguagem de Programação? Gramática e significado bem definidos Implementável (executável) com eficiência ‘‘aceitável’’ Universal Qualquer problema deve conseguir ser expresso Natural para expressar problemas Aplicável ao domínio da linguagem Paradigmas de Programação prof Gláucya Carreiro Boechat 5 Aspectos do estudo de linguagens Sintaxe Semântica Significado Pragmática Gramática (forma) Metodologias Processadores/Ferramentas Compiladores, interpretadores, editores, ambientes visuais, ... Paradigmas de Programação prof Gláucya Carreiro Boechat 6 Por que tantas linguagens? Propósitos diferentes Avanços tecnológicos Interesses comercias Cultura e background científico Paradigmas de Programação prof Gláucya Carreiro Boechat 7 O que é um paradigma de programação? Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns A classificação de linguagens em paradigmas é uma conseqüência de decisões de projeto que impactam radicalmente a forma na qual uma aplicação real é modelada do ponto de vista computacional Paradigmas de Programação prof Gláucya Carreiro Boechat 8 O Paradigma Imperativo Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado Também conhecido como paradigma procedural Inclui subrotinas ou procedimentos como mecanismo de estruturação Primeiro paradigma a surgir Ainda é muito utilizado Paradigmas de Programação prof Gláucya Carreiro Boechat 9 Modelo Computacional do Paradigma Imperativo Entrada Programa Saída Estado Paradigmas de Programação prof Gláucya Carreiro Boechat 10 O Paradigma Imperativo Vantagens Eficiência Modelagem “natural” de aplicações do mundo real Paradigma dominante e bem estabelecido Desvantagens Relacionamento indireto entre E/S Difícil legibilidade Erros introduzidos durante manutenção Descrições demasiadamente operacionais o “como” e não “o que” Paradigmas de Programação prof Gláucya Carreiro Boechat focalizam 11 O Paradigma Orientado a Objetos Não é um paradigma no sentido estrito Modificação na metodologia de concepção e modelagem do sistema Subclassificacão do imperativo A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado (variáveis) e operações (métodos) Classes podem ser estendidas e/ou usadas como tipos (objetos) Paradigmas de Programação prof Gláucya Carreiro Boechat 12 Modelo Computacional do Paradigma Orientado a Objetos Entrada Entrada Programa Programa Saída Saída Estado Estado Entrada Entrada Programa Programa Saída Estado Estado .. . .. . Saída ... Paradigmas de Programação prof Gláucya Carreiro Boechat Entrada Programa Saída Estado .. . 13 O Paradigma Orientado a Objetos Vantagens Todas as do estilo imperativo Classes estimulam projeto centrado em dados: modularidade, reusabilidade e extensibilidade Aceitação comercial crescente Desvantagens Semelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturação Paradigmas de Programação prof Gláucya Carreiro Boechat 14 O Paradigma Orientado a Aspectos Não é um paradigma no sentido estrito Sempre acoplado a um outro paradigma Nova técnica de modularização: Para “requisitos” que afetam várias partes de uma aplicação Aplicação é estruturada em módulos (aspectos) que agrupam pontos de interceptação de código (pointcuts) que afetam outros módulos (classes) ou outros aspectos, definindo novo comportamento (advice) Para linguagens OO, aspectos podem ser estendidos e/ou usados como tipos Paradigmas de Programação prof Gláucya Carreiro Boechat 15 Modelo Computacional do Paradigma Orientado a Aspectos Aspecto Entrada Entrada Aspecto Programa Programa Saída Saída Estado Estado Entrada Entrada Programa Programa Saída Estado Estado .. . Saída ... .. . Paradigmas de Programação prof Gláucya Carreiro Boechat Entrada Programa Saída Estado .. . 16 O Paradigma Orientado a Aspectos Vantagens Todas as do paradigma base Modularização de conceitos que o paradigma base não consegue Em especial, aqueles ligados a requisitos não funcionais Aumenta a extensibilidade e o reuso Desvantagens Semelhantes aos do paradigma base Ainda é preciso diminuir a relação entre o módulo afetado e aspectos Problemas de conflito entre aspectos que afetam o mesmo módulo Paradigmas de Programação prof Gláucya Carreiro Boechat 17 O Paradigma Funcional Programas são funções que descrevem uma relação explícita e precisa entre E/S Estilo declarativo: não há o conceito de estado nem comandos como atribuição Conceitos sofisticados como polimorfismo, funções de alta ordem e avaliação sob demanda Aplicação: prototipação em geral e IA Paradigmas de Programação prof Gláucya Carreiro Boechat 18 Modelo Computacional do Paradigma Funcional Entrada Programa Paradigmas de Programação prof Gláucya Carreiro Boechat Saída 19 Paradigma Funcional Vantagens Manipulação de programas mais simples: Prova de propriedades Transformação (exemplo: otimização) Concorrência explorada de forma natural Desvantagens “O mundo não é funcional!” Implementações ineficientes Mecanismos primitivos de E/S e formatação Paradigmas de Programação prof Gláucya Carreiro Boechat 20 O Paradigma Lógico Programas são relações entre E/S Estilo declarativo, como no paradigma funcional Na prática, inclui características imperativas, por questão de eficiência Aplicações: prototipação em geral, sistemas especialistas, banco de dados, ... Paradigmas de Programação prof Gláucya Carreiro Boechat 21 Modelo Computacional do Paradigma Lógico Entrada Programa Paradigmas de Programação prof Gláucya Carreiro Boechat Saída 22 Visão Crítica do Paradigma Lógico Vantagens Em princípio, todas do paradigma funcional Permite concepção da aplicação em um alto nível de abstração (através de associações entre E/S) Problemas Em princípio, todos do paradigma funcional Linguagens usualmente não possuem tipos, nem são de alta ordem Paradigmas de Programação prof Gláucya Carreiro Boechat 23 Um breve histórico 1950........................................................................................................ FORTRAN 1960.......................ALGOL-60...........COBOL......LISP......................... SIMULA ALGOL-68 PL/I BASIC 1970..................Pascal............................................................................ Smalltalk C PROLOG Modula-2 ML 1980....................Ada...........DBASE-II.................................................. Miranda Eifell C++ 1990.....................................................................Haskell..........Godel... Delphi Java C# Erlang F# Orientado a objetos Imperativo Paradigmas de Programação prof Gláucya Carreiro Boechat Funcional Lógico 24 Bibliografia 1. 2. 3. 4. 5. Sebesta, Robert W. Conceitos de Linguagens de Programação. Bookman, 2003 Sebesta, Robert W. Concepts of Programming Languages. Addison Wesley, 2005 Watt, David A. Programming Language Design Concepts. John Wiley, 2004 Toscani, Simão e Price, Ana Maria de Alencar. Implementação de Linguagens de Programação. Sagra-Luzzatto, 2005 Melo, Ana Cristina Vieira de e Silva, Flávio Soares Correa da. Princípios de Linguagens de Programação Paradigmas de Programação prof Gláucya Carreiro Boechat 25