Paradigmas de Programação Universidade Federal Rural de Pernambuco Departamento de Estatística e Informática Paradigmas de Programação Prof.: Gláucya Carreiro Boechat glaucyacboechat@gmail.com Paradigmas de Programação - prof Gláucya Carreiro Boechat
Paradigmas de Programação - prof Gláucya Carreiro Boechat 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
Paradigmas de Programação - prof Gláucya Carreiro Boechat 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
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
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
Aspectos do estudo de linguagens Sintaxe Gramática (forma) Semântica Significado Pragmática Metodologias Processadores/Ferramentas Compiladores, interpretadores, editores, ambientes visuais, ... Paradigmas de Programação - prof Gláucya Carreiro Boechat
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
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
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
Modelo Computacional do Paradigma Imperativo Entrada Programa Saída Estado Paradigmas de Programação - prof Gláucya Carreiro Boechat
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 focalizam o “como” e não “o que” O paradigma imperativo tem sevido de base para outros: oo e concorrente Paradigmas de Programação - prof Gláucya Carreiro Boechat
O Paradigma Orientado a Objetos Não é um paradigma no sentido estrito Subclassificacão do imperativo Modificação na metodologia de concepção e modelagem do sistema 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
Modelo Computacional do Paradigma Orientado a Objetos Entrada Programa Saída Estado Estado Entrada Programa Saída ... Estado Entrada Programa Saída Estado Entrada Programa Saída Estado Entrada Programa Saída . . . Paradigmas de Programação - prof Gláucya Carreiro Boechat
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
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
Modelo Computacional do Paradigma Orientado a Aspectos Entrada Programa Saída Estado Aspecto Estado Entrada Programa Saída ... Estado Entrada Programa Saída Estado Entrada Programa Saída Estado Entrada Programa Saída . . . Paradigmas de Programação - prof Gláucya Carreiro Boechat
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
Paradigmas de Programação - prof Gláucya Carreiro Boechat 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
Modelo Computacional do Paradigma Funcional Entrada Programa Saída Paradigmas de Programação - prof Gláucya Carreiro Boechat
Paradigmas de Programação - prof Gláucya Carreiro Boechat 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
Paradigmas de Programação - prof Gláucya Carreiro Boechat 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
Modelo Computacional do Paradigma Lógico Entrada Programa Saída Paradigmas de Programação - prof Gláucya Carreiro Boechat
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
Um breve histórico Imperativo Funcional Lógico Orientado a objetos Smalltalk C PROLOG 1980....................Ada...........DBASE-II.................................................. 1990.....................................................................Haskell..........Godel... 1950........................................................................................................ FORTRAN 1960.......................ALGOL-60...........COBOL......LISP......................... SIMULA ALGOL-68 PL/I BASIC 1970..................Pascal............................................................................ Modula-2 ML Miranda Eifell C++ Delphi Java C# Imperativo Funcional Lógico Orientado a objetos Erlang F# Paradigmas de Programação - prof Gláucya Carreiro Boechat
Paradigmas de Programação - prof Gláucya Carreiro Boechat Bibliografia 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