24
LINGUAGENS IMPERATIVAS & LINGUAGENS FUNCIONAIS Universidade Estadual de Santa Cruz Conceitos de Linguagem de Programação Matheus Henrik Nogueira de Santana

LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

  • Upload
    lycong

  • View
    226

  • Download
    0

Embed Size (px)

Citation preview

Page 1: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

LINGUAGENS IMPERATIVAS & LINGUAGENS FUNCIONAIS Universidade Estadual de Santa Cruz Conceitos de Linguagem de Programação Matheus Henrik Nogueira de Santana

Page 2: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

CONTEÚDO PROGRAMÁTICO

  Introdução  Paradigmas de programação  Programação Imperativa  Programação Funcional  Referência

Page 3: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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.

Page 4: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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)

Page 5: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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)

Page 6: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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

Page 7: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

LINGUAGENS IMPERATIVA

Código com os 3 conceitos

Page 8: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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.

Page 9: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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.

Page 10: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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 ”

Page 11: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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

Page 12: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

ALGUMAS LINGUAGENS IMPERATIVAS

 FORTRAN  BASIC  ALGOL  PASCAL  ADA  C   Lua  Phyton

Page 13: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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

Page 14: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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?

Page 15: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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

Page 16: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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)

Page 17: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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

Page 18: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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)

Page 19: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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

Page 20: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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

Page 21: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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

Page 22: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

FUNCIONAIS VERSUS IMPERATIVA

Linguagem Funcional Linguagem Imperativa Semântica Simples Complexa Sintaxe Simples Complexa Execução Ineficiente Eficiente

Page 23: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

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/

Page 24: LINGUAGENS IMPERATIVAS LINGUAGENS …ppgsc.ufrn.br/~rogerio/material_auxiliar/CLP20131_linguagens... · Toda expressão/atribuição no paradigma imperativo pode ser visto em termos

OBRIGADO