Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Por que a programação funcional é importante?
Search
Igor Soares
June 26, 2019
56
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Por que a programação funcional é importante?
Igor Soares
June 26, 2019
More Decks by Igor Soares
See All by Igor Soares
Javascript Funcional
nulligor
1
170
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Become a Pro
speakerdeck
PRO
31
6.3k
Six Lessons from altMBA
skipperchong
29
4.5k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
380
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
850
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
Side Projects
sachag
456
43k
The World Runs on Bad Software
bkeepers
PRO
72
12k
From π to Pie charts
rasagy
1
380
Documentation Writing (for coders)
carmenintech
77
5.5k
KATA
mclloyd
PRO
35
16k
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 :)