LINGUAGENS IMPERATIVAS LINGUAGENS...

Post on 12-Jul-2018

226 views 0 download

Transcript of LINGUAGENS IMPERATIVAS LINGUAGENS...

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