linguagens imperativas linguagens...
TRANSCRIPT
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 de variáveis restringem: O espaço da memória a ser gasto
Exemplo: Em C, em uma máquina de 32 bits:
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 Execução Ineficiente Eficiente
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