MSP Tech Days Programação Funcional F#
Gustavo Bellini Bigardi Desenvolvedor .NET Java, GoLang, JS https://about.me/gbb igardi/
Programação Funcional
Novo paradigma
Mais um...............
No paradigma funcional eu não dito ao meu código o que ele deve fazer, quando e como. Não irei desenvolvê-lo passo a passo. Eu penso meu código como uma sequência de funções e/ou passos, as quais de maneira composta irão resolver meu problema.
f(x) -> f(y) -> f(z) -> f(n)...
Metáfora do lenhador
Funções puras
Uma função pura é aquela que não provoca efeitos colaterais, ou seja, ela não muda qualquer estado na aplicação. Mas não é só isto, ela precisa sempre gerar o mesmo resultado com os mesmos argumentos, ou seja, ela precisa ser completamente determinística.
ElevarNumberoAoQuadrado(int x) SomarUmAoNumero(int x)
Na programação funcional, desenvolvemos funções lidando com os parâmetros de entrada e gerando resultados, sem alterarmos o estado de coisas preexistentes no programa
Imutabilidade quer dizer Previsibilidade!
Programas previsíveis significam programas que os processadores vão lidar melhor
Entenda comigo: se eu sei que, ao invocar essa função, eu terei um número de retorno, eu sei que irei lidar com números. E se eu for passar para um outra função um número, mas ela espera uma string, eu já logo acuso um erro.
Isso faz com que seu programa se torne mais inteligente!
Thanks!
Abstração acima de tudo!
Primeiramente, o que seria, em termos de código, uma abstração?
A implementação de uma função para um determinado bloco de código a ser utilizado e reutilizado.
Quais as vantagens da abstração?
• Você estará reaproveitando código. Menos código com mais informações. Isso é bom. • O processo todo em que as funções foram abstraídas irão fazer sentido para você. Isso, alinhado com um bom nome para as funções, deixarão o seu código muito legível e de fácil compreensão. • E aí vem a parte legal. Lembre-se quando falei sobre a inteligência do código... Seu processador já vai saber que dado um número 6, ele terá como retorno um número 5. A previsibilidade aqui faz a festa.
Benefícios • Imutabilidade; • Maior previsibilidade no comportamento; • Facilidade de extensão; • Melhora na testabilidade;
Desafios • Maneira de pensar e projetar diferente; • Exige adaptação ao dia-a-dia; • Algumas linguagens ainda não são 100% adequadas;
F#
O F# é a resposta da Microsoft para o paradigma funcional dentro de plataforma .NET
F# é uma linguagem bastante concisa e o código possui pouco ruído. Ou seja, parênteses são pouco utilizados, blocos de código são separados por indentação, não utiliza chaves e a quebra de linhas, por si só, já é o delimitador.
Características bastante importantes e decisivas na escolha do F# como linguagem são: • Concisão; • Simplicidade; • Facilidade; • Proteção contra erros; • Facilidade com paralelismo
DEMO
https://github.com/gustavobigardi/demo- fsharp-msp-tech-days
MSP Tech Days 2018 - Programação Funcional com F#

MSP Tech Days 2018 - Programação Funcional com F#