Você está na página 1de 34

1

AULA 1: PARADIGMAS DE
PROGRAMAÇÃO

Curso: Ciência da Computação


Profª.: Luciana Balieiro Cosme

11/02/2015
Ementa
2

 Programação Imperativa. Programação Paralela e


Concorrente. Programação Lógica. Programação
Funcional. Programação Orientada a Objetos.
Comparativo entre os diversos paradigmas da
programação.

11/02/2015
Referências bibliográficas
3

 SEBESTA, R. W. Conceitos de Linguagens de


Programação. 9ª ED. BOOKMAN, 2011.
 TUCKER, A. B.; NOONAN, R. E. Linguagens de
Programação: Princípios e Paradigmas. 2ª Edição.
McGraw-Hill, 2009.
 David A. Watt. Programming Language Design
Concepts. Wiley, 2004.

11/02/2015
Avaliação
4

 1º Seminário: 15 pontos
 12/03/2015

 1ª Avaliação: 25 pontos
 Data: 03/04/2015
 2ª Avaliação: 30 pontos
 Data: 07/05/2015
 2º Seminário: 15 pontos
 Data: 12/06/2015
 Trabalho final: 15 pontos
 Data: 26/06/2015
11/02/2015
Algumas perguntas
5

1. Quais características de uma linguagem de


programação são importantes?
2. Como comparar estas características?
3. Qual linguagem de programação usar?
4. Como estudar novas linguagens?
5. Qual a melhor linguagem para uma determinada
aplicação?

11/02/2015
Objetivos da disciplina
6

 Análise crítica de paradigmas e linguagens de


programação
 Estudo dos conceitos gerais de linguagens de
programação
 Visão geral dos paradigmas

11/02/2015
Razões para estudar conceitos de
7
linguagens de programação
 1. Capacidade aumentada para expressar ideias
A linguagem adotada impõe limitações
 Conhecer uma variedade de recursos

 Aprender novas construções

 E se o programador for obrigado a usar uma


determinada linguagem?
 Simular construções de outras linguagens
 Exemplo: tipo booleano em C

11/02/2015
Razões para estudar conceitos de
8
linguagens de programação
 2. Embasamento para escolher linguagens
adequadas
 Como escolher a linguagem de um novo projeto?
 Linguagens surgem ao longo do tempo
 Ex.: C# (2000)
 Simulação de recursos

11/02/2015
Razões para estudar conceitos de
9
linguagens de programação
 3. Habilidade aumentada para aprender novas
linguagens
 Em constante evolução
 Exige apredizado contínuo

 É essencial conhecer vocabulário e conceitos para ler,


entender e avaliar
 Indicador de popularidade das linguagens
 http://www.tiobe.com/index.php/content/paperinfo/tpci/in
dex.html

11/02/2015
10

11/02/2015
Razões para estudar conceitos de
11
linguagens de programação
 4. Melhor entendimento da importância da
implementação
 Aspectos de implementação que afetam esses conceitos
 Pode levar a habilidade de usar de maneira mais
eficiente
 Entender as escolhas entre as construções e as
consequências

11/02/2015
Razões para estudar conceitos de
12
linguagens de programação
 5. Melhor uso das linguagens já conhecidas
 Muitaslinguagens são grandes e complexas e é
incomum conhecer todos os recursos
 6. Avanço geral da computação
 Muitos acreditam que as linguagens mais populares
nem sempre são as melhores disponíveis
 Ao menos em parte, por não estarem familiarizados
com os conceitos
 Se quem escolhem fosse mais bem informados, talvez
linguagens melhores ganhassem de outras.

11/02/2015
Domínios de programação
13

 De controlar usinas a jogos eletrônicos em celulares


 Aplicações científicas
 Aritmética e ponto flutuante, vetores e matrizes
 Aplicações empresariais
 Relatórios
 Inteligência artificial
 Programação de sistemas
 Sistema operacional e ferramentas de suporte.
 Eficiência
 Softwares para web
 Marcação, conteúdo dinâmico

11/02/2015
Critérios de avaliação de linguagens
14

 Examinar os conceitos das construções e


capacidades das linguagens
 São quatro critérios, conforme Sebesta (2011):
 Legibilidade

 Facilidade de escrita
 Confiabilidade

 Custo

 Algumas características que influenciam esses


critérios
11/02/2015
1. Legibilidade
15

 Facilidade com a qual os programas podem ser


lidos e entendidos
 Antes de 1970: eficiência e legibilidade de
máquina
 Após, facilidade de manutenção

11/02/2015
1. Legibilidade
16

 1.1 Simplicidade geral


 Uma linguagem com muitas construções é difícil de
aprender
 Multiplicidade de recursos
 Ex.:count = count + 1
count += 1
count++
++count
 Sobrecarga de operadores
 Apesar de útil, pode não fazer sentido para quem ler
 Ex.: operador + para vetores
11/02/2015
1. Legibilidade
17

 1.2 Ortogonalidade
 Conjunto pequeno de construções que podem ser
combinado a um número pequeno de formas
 Cada combinação é legal e significativa

 Um recurso é independente do contexto

 A falta de ortogonalidade leva a exceções

 Ex. Na linguagem C:
 Vetores não podem ser retornados por funções e registros sim.
 Um membro de uma estrutura pode ser de qualquer tipo, exceto
void
 Vetores podem ser qualquer tipo exceto void
 Parâmetros são passados por valor, exceto vetores 11/02/2015
1. Legibilidade
18

 1.3 Tipos de dados


 Presençade mecanismos para definir tipos de dados
 O que é mais claro?
 flag=1 ou flag=true
 1.4 Projeto da sintaxe
 Formato dos identificadores: Fortran 77 permite 6
caracteres
 Palavras especiais (while, for, if)
{ } ou end if / end loop

11/02/2015
2. Facilidade de escrita
19

 A capacidade de criar programas para um domínio


 2.1 Simplicidade e ortogonalidade
 Número menor de construções
 2.2 Suporte à abstração
 Habilidade de definir estruturas complicadas
ignorando alguns detalhes
 Subprogramas
 Abstração de estruturas de dados

 2.3 Expressividade
 cont++ ou for
11/02/2015
3. Confiabilidade
20

 3.1 Verificação de tipos


 Detectar erros de tipos (compilador e durante a execução)
 Ex.:

void verifica_tipo(int a){


printf("%d",a);
}
void main(){
float a = 2;
verifica_tipo(a);
}
11/02/2015
3. Confiabilidade
21

 3.2 Tratamento de exceções


 Interceptar erros em tempo de excecução
 3.3 Utilização de apelidos
 Ponteiro

 3.4 Legibilidade e facilidade de escrita


 Programas difícieis de ler são também dificies de
escrever e modificar

11/02/2015
4. Custo
22

 Treinamento
 Escrita
 Compilação
 Execução
 Sistema de implantação
 Confiabilidade baixa
 Manutenção

11/02/2015
Outros critérios
23

 Portabilidade
 Generalidade

11/02/2015
Influências no projeto de linguagens
24

 Arquitetura de computadores
 Von Neumann
 Memória e CPU separadas (transmissão é necessária)

 Variáveis, sentenças de atribuição, repetição iterativa

 Metodologias de projeto de programas


 Mudança de maior custo de hardware para softwares
 Modelar sistemas complexos

 Suporte às abstrações de dados

 Orientação a objetos

11/02/2015
Categorias
25

 Definição: Modelo, padrão ou estilo de


programação suportado por determinado grupo
de linguagens
 Classificação:
 Paradigma Imperativo
 Paradigma Funcional

 Paradigma Lógico

 Paradigma Orientado por Objetos

 Paradigma Paralela e Concorrente

11/02/2015
Implementação
26

 Compilação, Interpretação Pura, Hibridos


 Ambientes de programação

11/02/2015
Paradigma Imperativo
27

 Baseado no conceito de variáveis e operações


 Sequência de comandos
 Primeiro paradigma a surgir e ainda é o dominante
 Vantagens:
 Eficiência (arquiteturas von Neumann)
 Modelagem “natural” de aplicações do mundo real
 Paradigma fortemente estabelecido
 Desvantagens:
 Implementações demasiadamente operacionais
 definem “como fazer” e não “o que fazer”
 privilegiam as operações (processos) às estruturas de dados

11/02/2015
Paradigma Funcional
28

 Toda computação em um programa funcional é


realizada por meio da aplicação de funções a
argumentos
 Mapeamento muito próximo do modelo matemático
de funções
 Vantagens:
 Concorrência é explorada de forma natural
 Desvantagem:
 Implementações em geral são ineficientes
11/02/2015
Paradigma funcional
29

 Ex.: Em Haskell
let x = 8 * 10 in x + x
 R.:160

'a' : 'b' : []
 R.: ab

 map (*99) [1..10]


 R.:[99,198,297,396,495,594,693,792,891,990]

11/02/2015
Paradigma lógico
30

 Linguagens cujos programas são relações entre entrada e


saída (E/S)
 Estilo declarativo, notação lógica formal
 Ex.: Prolog
 Fatos:
pai(joana, jake)
pai(jose,joana)
 Regras:
avo(X, Z) :-pai(X,Y), pai(Y,Z)
 Consultas:
pai(bob, darcie)
 R.: true ou false

11/02/2015
Paradigma orientado a objetos
31

 Classes com atributos e métodos


 Instância de objetos, herança, encapsulamento
 Reutilização de código
 Ex.:

11/02/2015
Paradigma orientado a objetos
32

public class Pessoa


{
private string nome;
private string endereco;
private DateTime dataNasc;
public int Idade()
{
//cálculos
return idade;
}
}

11/02/2015
Leitura complementar
33

 Capítulo 1 – Aspectos preliminares


SEBESTA, R. W. Conceitos de Linguagens de
Programação. 9ª ED. BOOKMAN, 2011.
http://book.realworldhaskell.org/read/
http://www.haskell.org/haskellwiki/Introduction

11/02/2015
Contato
34

 luciana.balieiro@ifnmg.edu.br

11/02/2015

Você também pode gostar