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
41
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
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
15
890
Building Applications with DynamoDB
mza
95
6.4k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Code Review Best Practice
trishagee
68
18k
Scaling GitHub
holman
459
140k
Typedesign – Prime Four
hannesfritz
41
2.6k
Writing Fast Ruby
sferik
628
61k
Building Adaptive Systems
keathley
41
2.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
106
19k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
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 :)