Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Por que a programação funcional é importante?
Search
Igor Soares
June 26, 2019
0
45
Por que a programação funcional é importante?
Igor Soares
June 26, 2019
Tweet
Share
More Decks by Igor Soares
See All by Igor Soares
Javascript Funcional
nulligor
1
150
Featured
See All Featured
Fireside Chat
paigeccino
39
3.6k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Statistics for Hackers
jakevdp
799
220k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Designing for Performance
lara
610
69k
Designing for humans not robots
tammielis
253
25k
Being A Developer After 40
akosma
90
590k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
For a Future-Friendly Web
brad_frost
180
9.9k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Transcript
Por que a programação funcional é importante? @nulligor nulligor.github.io
simplex complect one fold/braid um laço/nó to interleave, intertwine entrelaçar,
associar
Simplicidade =\= Facilidade Facilidade é subjetiva Simplicidade é objetiva
“Simplicidade é pré-requisito para confiabilidade.” Edsger W. Dijkstra
Mudança
Mudança - Faça melhor - Faça mais - Faça diferente
Mudança Mudanças no software requerem análise e decisões - Faça
melhor - Faça mais - Faça diferente
Mudança A habilidade de ponderar sobre o código é essencial
Mudanças no software requerem análise e decisões - Faça melhor - Faça mais - Faça diferente
Mudança Assim como a habilidade de modificá-lo rapidamente A habilidade
de ponderar sobre o código é essencial Mudanças no software requerem análise e decisões - Faça melhor - Faça mais - Faça diferente
Mudanças no software geram complexidade
“O principal desafio do ‘programador’ é não ficar confuso com
as complexidades de sua própria criação” Edsger W. Dijkstra
Quanto mais seu código fica assim:
Cada vez mais é importante estruturá-lo bem
Código bem estruturado é simples De escrever, ler, ponderar e
modularizar
Programação funcional?
“Poderíamos estar criando os exatos mesmos programas com componentes muito
mais simples.” Rich Hickey
immutable values functions namespaces data state objects methods syntax
Um pouco de história
Church-Turing Conjecture 1936 - Lambda Calculus 1936 - Turing Machine
Modelos de Computação Descreve como a saída de uma função
matemática é computado dada uma entrada Em Teoria da Computabilidade, denotamos o ato de “computar” por “effective method”
Modelos de Computação - Cellular Automata - Finite State Machines
- Turing Machines - Lambda Calculus - Actor Model - ...
state interno instruções goto (jump) fita infinita de símbolos λCalculus
Turing Machines funções matemáticas puras variáveis e valores + binding
Bottom-to-Top Top-to-Bottom ... ...
λCalculus - Codifica toda forma de computação
λCalculus - Codifica toda forma de computação - Base de
toda linguagem funcional
λCalculus - Codifica toda forma de computação - Base de
toda linguagem funcional - 3 regras, dados M e N: - (M) - λid.M - MN
λCalculus
Lisp (1958)
1958?
eval
S-exps + Prefix notation
Data =/= Syntax (* 2 (+ 3 4))
Composição de Funções (em Clojure)
comp
hipotenusa
Composição de Programas
G (F (input))
None
Lisp e λCalculus estão presentes em toda linguagem atual
comp em JS
Cada vez mais estamos tentando “acompanhar” a matemática na programação
Finite State Machine em Clojure
Obrigado :)