Buscar

Aula 2-Motivacao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 27 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Funcional
Motivação
Prof. Giovanny Lucero
DCOMP/UFS
 
● Importância da Computação?
● Pensamento Computacional?
● Programação Funcional?
– Programação? Funcional?
● Paradigmas de programação?
Motivação
 
● Qual a importância da Computação?
● Por que resolveram estudar computação?
 
Pensamento computacional
● Modo de pensar para solucionar problemas 
através de algoritmos
– Diversidade de métodos e técnicas
– Vários paradigmas 
 
Programação
Programming is a way to “instruct the computer to perform 
various tasks”
hackr.io/blog/what-is-programming
● Programação não é somente codificar
● Instruct the computer → Linguagem
● Que tipo de tarefas?
 
“Computer programming is the process of designing and 
building an executable computer program for 
accomplishing a specific computing task”
Wikipedia
● Projetar e construir
● Programa
● Implicitamente especificação
 
“Programming is coding, modeling, simulating or 
presenting the solution to a problem, by representing facts, 
data or information using pre-defined rules and semantics, 
on a computer or any other device for automation”
Wikiversity
● Solução de problemas
● Usando uma linguagem de programação
 
● Computador executa instruções muito simples tais 
como somar ou comparar dois números 
(instruções de máquina – linguagem de máquina)
– Muita velocidade
(GFLOPs - PC, PetaFlops - Supercomputador)
– Memoria muito grande para armazenamento de 
resultados intermediários
– Computador “entende” linguagem de máquina 
● Tarefas complexas são feitas combinando muitas 
instruções de máquina
 
● Linguagens de programação de alto nível
– Oferecem modelos de programação que 
abstraem a linguagem de máquina
– Linguagens imperativas (como fazer a tarefa)
● Python, C, C++, Java, ...
– Linguagens declarativas (qual é a tarefa)
● Linguagens funcionais (Haskell, Lisp, …), Lógicas 
(Prolog, Mercury, ..), ... 
 
Compilador
Programa
Linguagem de alto nível
Programa
Linguagem de máquina
Programa
Linguagem de alto nível
Programa
Linguagem de alto nível
Programa
Linguagem de alto nívelCódigo fonte
Código alvo
 
Computador
Interpretador
Programa
Linguagem de alto nível
Não há tradução
O interpretador lê e executa o programa diretamente, linha por linha
 
Compilador vs Interpretador
Compilador Interpretador
Traduz o programa inteiro a 
código de máquina
Executa o código fonte linha por 
linha
Geralmente, linguagens 
estaticamente tipadas
Geralmente, linguagens 
dinamicamente tipadas
Analisa o código antes de executar
(erros descobertos antes - mais 
confiabilidade)
Analisa o código durante a 
execução (erros descobertos na 
execução)
Mais eficiente (velocidade e 
memória)
Menos eficiente
Menos praticidade Mais praticidade
Fácil de usar
Normalmente oferecem REPLs
C, C++, C#, Kotlin, Java, Julia, ... Python, Ruby, Haskell, …
REPL ↔ Read–Eval–Print Loop
 
● Programa: Conjunto de definições de dados e 
funções
● Computação: Avaliação de expressões/funções
● Avaliação: Similar como fazemos em álgebra
● Não há estado
Funcional
 
Função
● Relação binária entre dois conjuntos, digamos A e B, tal 
que um elemento de A só pode ter um correspondente 
no conjunto B ….
● “Caixas pretas” que recebem valores de entrada e 
produzem um valor que depende dos valores da entrada
 
34
 
Valores não precisam ser somente números
Podem ser entidades mais elaboradas, como por 
exemplo figuras
 
Funções podem ser combinadas para resolver 
problemas maiores
coloreAzul
entrada resultado
escala
coloreAzul escala
 
Em Haskell, definições de funções são dadas usando equações
Por exemplo
somaDobro :: Int -> Int -> Int
somaDobro x y = 2*(x+y) 
somaDobro
x
y
2*(x+y) 
 
O modelo computacional de cômputo é muito simples e claro
– A avaliação de expressões é feita usando as equações no 
sentido de esquerda para a direita
– Por exemplo
3 + somaDobro 4 5 → 3 + 2*(4+5)
→ 3 + 2*9
→ 3 + 18
→ 21 
somaDobro x y = 2*(x+y) 
 
● Programação funcional é só isso?
● Há outros conceitos importantes
– Transparência referencial
● Determinismo,
● Sem efeitos colaterais
– Funções de alta ordem
– Tipos e polimorfismo paramétrico
– Tipos compostos: listas
– Avaliação preguiçosa
 
Outros paradigmas de programação
● Paradigma:
Modelo de programação definido por 
conjunto de conceitos e construções 
linguísticas
● Funcional:
– Funções (puras), definições, funções de alta 
ordem, ...
 
Outros paradigmas
● Imperativo
● Orientado a objetos
● Paralelo
● Concorrente
● Lógico
● Linguagens modernas são multi-paradigmas
 
Por que Haskell?
● Funcional puro
– Acadêmico, porém com muitos usos na 
indústria
– Tem servido de inspiração para 
linguagens modernas
● Linguagem é nosso veículo
– Quem dirige um Ford, dirige um Renault
 
Tarefa obrigatória
● Instale o GHC no seu computador
– https://www.haskell.org/downloads/
– Use a opção Haskell Platform e 
escolha o seu sistema operacional
https://www.haskell.org/downloads/
 
Leitura Recomendada
● Capítulo 1 de
– Crediné Menezes e outros. Introdução à Programação: 
Uma Abordagem Funcional. 
– Esta apostila não usa o CHCi mas o compilador Hugs, 
no entanto você pode usar o material como apoio 
durante todo o curso. O capítulo 1 é independente de 
compilador.
● Apostila disponível em
– https://claudiaboeres.pbworks.com/f/Apostila-
ProgFuncional.pdf
 
Tarefas Recomendadas
● Haskell é uma linguagem importante no contexto do 
paradigma funcional? Pesquise sobre a história das 
linguagens de programação e quais as principais 
linguagens que já foram propostas, nos diversos 
paradigmas.
● Haskell é uma linguagem usada em escala comercial e 
industrial? Experimente fazer a pesquisa haskell in 
industry para descobrir empresas que usam Haskell no 
mundo
● Há outras linguagens funcionais popularmente 
usadas? Pesquise por Erlang, F#, Scala, Clojure, ...
 
● As disciplinas de programação são 
importantes? Pesquise grades do seu curso em 
outras universidades nacionais e internacionais e 
identifique as disciplinas de linguagens de 
programação que são ensinadas. Quais 
paradigmas ou linguagens são ensinados?
● Estamos fazendo um bom curso? Pesquise 
quais são as melhores cursos de Computação 
do país e veja nossa classificação.
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27

Outros materiais