Linguagens Imperativas e Funcionais

Propaganda
LINGUAGENS IMPERATIVAS &
LINGUAGENS FUNCIONAIS
Universidade Estadual de Santa Cruz
Conceitos de Linguagem de Programação
Matheus Henrik Nogueira de Santana
CONTEÚDO PROGRAMÁTICO
  Introdução
  Paradigmas
de programação
  Programação Imperativa
  Programação Funcional
  Referência
PARADIGMAS DE PROGRAMAÇÃO
  Uma
linguagem de programação é um método
padronizado para comunicar instruções para um
computador, respeitando regras semânticas e
sintáticas.
  Um paradigma de programação fornece e
determina a visão que o programador possui sobre
a estruturação e execução do programa.
  Exemplo:
 
 
Programação orientada a objetos
Programação funcional
  Linguagens
de programação propõe diferentes
paradigmas de programação.
PARADIGMAS DE PROGRAMAÇÃO
  Paradigma
imperativo (C, C++, Pascal)
  Paradigma funcional (ML, LISP, Haskell)
  Paradigma orientado a objeto (C++, Java)
  Paradigma concorrente (ADA, Java)
  Paradigma orientado a aspecto (AspectJ)
  Paradigma de programação lógica(PROLOG)
PARADIGMAS DE PROGRAMAÇÃO
  Paradigma
imperativo (C, C++, Pascal)
  Paradigma funcional (ML, LISP, Haskell)
  Paradigma orientado a objeto (C++, Java)
  Paradigma concorrente (ADA, Java)
  Paradigma orientado a aspecto (AspectJ)
  Paradigma de programação lógica(PROLOG)
LINGUAGENS IMPERATIVA
 
 
 
 
 
As linguagens imperativas são orientadas a ações, onde a
computação é vista como uma sequência de instruções que
manipulam valores de variáveis.
O fundamento da programação imperativa é o conceito de
Máquina de Turing, que nada mais é que uma abstração
matemática que corresponde ao conjunto de funções
computáveis
Sua criação foi influenciada pela arquitetura de computadores
Von Neuman, onde programas e dados são armazenados na
mesma memória. EXEPMLO MELHOR
Os operando das expressões são passados da memória para
a CPU e o resultado da expressão é passado de volta para
uma célula da memória.
São caracterizadas por 3 conceitos:
 
 
 
Variáveis
Atribuição
Repetição
LINGUAGENS IMPERATIVA
Código com os 3 conceitos
VARIÁVEIS: DECLARAÇÕES
  Declarações
 
O espaço da memória a ser gasto
 
Exemplo:
  Em C, em uma máquina de 32 bits:
 
 
 
 
 
 
de variáveis restringem:
Char = 1byte
Short= 2 bytes
Int = 4 bytes
Os valores que a variável pode assumir
As operações possíveis de ser executadas sobre a
variável
Elementos default de inicialização, as vezes.
VARIÁVEIS: LOCALIZAÇÃO E VALORES
  Quando
uma variável é declarada, ela é associada
a uma localização de memória e seu nome se torna
seu identificador.
 
 
L-value: localização na memória
R-value: valor armazenado
  Toda
expressão/atribuição no paradigma imperativo
pode ser visto em termos do L-values e R-values
das variáveis envolvidas.
VARIÁVEIS: ATRIBUIÇÃO
  Exemplo:
X = X + 1;
  Significado: “pegue o R-value de X, adicione 1 e
armazene o resultado no L-value de X ”
PROGRAMAÇÃO ESTRUTURADA
  Programação
estruturada é uma forma
de programação que preconiza que todos os
programas possíveis podem ser reduzidos a
apenas três estruturas: sequência, decisão e
interação.
 
 
 
Estruturas de sequência: Onde uma tarefa é executada
após a outra, linearmente.
Estruturas de decisão: Onde, a partir de um teste
lógico, determinado trecho de código é executado, ou
não.
Estruturas de iteração: Onde, a partir de um teste
lógico, determinado trecho de código é repetido por um
número finito de vezes
ALGUMAS LINGUAGENS IMPERATIVAS
  FORTRAN
  BASIC
  ALGOL
  PASCAL
  ADA
  C
  Lua
  Phyton
LINGUAGENS FUNCIONAIS
Programação funcional baseia-se no conceito de
função.
  Pode-se pensar na programação funcional como
simplesmente avaliação de expressões
  Funcionamento:
 
 
 
 
 
O programador define uma função para resolver um problema
e passa essa função para o computador
Uma função pode envolver várias outras funções em sua
definição.
O Computador funciona então como uma calculadora que
avalia expressões escritas pelo programador através de
simplificações até chegar a uma forma normal
Exemplo:
 
f(x) = x³ + 3 é definida em termos de exponenciação e adição
CURIOSIDADES
  Dos
3 paradigmas de programação, Paradigma
Funcional é o mais antigo.
  1ª linguagem foi IPL de 1955
  Mais popular foi a LISP de 1958
  Investiu-se nela até meados da década de 90, e
depois disso?
LINGUAGEM FUNCIONAL, A FENIX?
 
 
Novos processadores de múltiplos núcleos, até centenas de
core estão para ser desenvolvidos. A boa noticia é que para
obter benefícios desse panorama é necessário escrever
software que executem de forma paralela
Mais fácil escrever código concorrente em Linguagens
funcionais
LINGUAGENS FUNCIONAIS
  Atualmente
mais usada para fins acadêmicos
  Notáveis usadas para fins comerciais:
 
 
 
R (estatística)
Mathematica (matemática simbólica)
K (análise financeira)
CÁLCULO LAMBDA
  Projetado
por Alonzo Church, 1930;
  É um modelo que oferece uma maneira muito
formal de descrever um calculo de uma função;
  Pode ser considerado a primeira linguagem de
programação funcional;
  Linguagens como Lisp, Miranda, ML, Haskell são
baseadas em Cálculo Lambda
CÁLCULO LAMBDA
  O
Cálculo Lambda pode ser visto como uma
linguagem de programação abstrata em que
funções podem ser combinadas para formar outras
funções;
  Trata funções como cidadãos de primeira classe,
ou seja, entidades que podem, como um dado
qualquer, ser usadas como argumento e retonados
como valores de uma função.
  Uma expressão simples:
 
(+ 4 5)
CÁLCULO LAMBDA
 
(+ 4 5)
 
Avaliando
  (+ 4 5) = 9
 
A avaliação da função procedo por redução
  (+ (* 5 6) (* 4 3))
  (+
30 (*4 3 ))
  (+
30
12 ) = 42
CÁLCULO LAMBDA
  Uma
abstração lambda é um tipo de expressão que
denota uma função:
 
 
(λx.+x1)
“λ” determina que existe uma função
USO PRÁTICO DE LINGUAGENS FUNCIONAIS
  Haskell
 
Ferramentas para manipulação de programas PHP
  Erlang
 
Parte do serviço de chat de facebook
  Scala
 
(linguagem híbrida)
Serviços de filas de mensagens no twitter
  Scheme
 
e LISP
Ensino de programação em várias universidades
  ML
 
Verificação de hardware e software na Microsoft e Intel
FUNCIONAIS VERSUS IMPERATIVA
Linguagem Funcional
Linguagem Imperativa
Semântica
Simples
Complexa
Sintaxe
Simples
Complexa
Ineficiente
Eficiente
Execução
REFERÊNCIAS
  http://www.inf.pucrs.br/~gustavo/disciplinas/pli/
material/paradigmas-aula09.pdf
  http://rogerio.in/
  http://www.dcc.fc.up.pt/~nam/aulas/9900/pi/
  http://www3.di.uminho.pt/~jcr/AULAS/pi-lei-2012/
OBRIGADO
Download