Slide 1 - mguacu

Propaganda
3
Paradigmas e
Linguagens de Programação
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
• Paradigmas
• Multi-paradigma?
– Imperativo
– Declarativo
• Funcional
• Baseado em Lógica
– Orientação a Objetos
• Linguagens podem ser classificadas?
– Nenhum critério de classificação atende plenamente
• Linguagem imperativa
– Uma linguagem que opera através de uma
sequência de comandos que modificam o valor dos
elementos de dados
– Características principais:
• Comandos de atribuição
• Comandos de iteração
• Linguagem procedimental
– Uma linguagem que define como computar o
resultado/solução para um dado problema
– Inclui linguagens imperativas e funcionais
procedimental
imperativa
funcional
• Linguagem declarativa
– Uma linguagem que opera através de comandos
descritivos sobre dados e relações entre dados
– O algoritmo fica escondido na semântica da
linguagem
– Inclui linguagens aplicativas e lógicas
declarativa
aplicativa
lógica
• Linguagem aplicativa
– Uma linguagem que opera através da aplicação de
funções a valores, sem efeitos colaterais.
– Inclui linguagens funcionais no sentido amplo.
aplicativa
funcional
• Linguagem funcional
– Em um sentido estrito, uma linguagem funcional
opera através do uso de funções de mais alta
ordem (higher-order functions), construindo
operadores que manipulam funções diretamente
sem aparentar que manipulam dados.
• Linguagem lógica
– Uma linguagem lógica lida com predicados ou
relações p(X,Y).
– Um programa consiste em um conjunto de
cláusulas de Horn:
• fatos - p(X,Y) é verdade
• regras - p é verdade se q1e q2 e ...qn for verdade
• consultas – É verdade que g1 e g2 e ...gn? (gi's são
goals.)
– Cláusulas adicionais são inferidas através de
resolução.
Exemplos de paradigmas de programação
• Imperative programming, compared to Functional
programming
• Procedural programming, compared to Declarative
programming
• Class-based programming, compared to Prototypebased programming (within the context of Objectoriented programming)
• Aspect-oriented programming (as in AspectJ)
• Symbolic programming (as in Mathematica)
• Post-object programming
• Subject-oriented programming
• ...
Download