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
Navigating Team Friction
lara
190
15k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Rails Girls Zürich Keynote
gr2m
95
14k
Being A Developer After 40
akosma
91
590k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Mobile First: as difficult as doing things right
swwweet
225
10k
Visualization
eitanlees
149
16k
RailsConf 2023
tenderlove
30
1.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
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 :)