Programação Funcional Prática

O seguinte é reformatado a partir de uma apresentação que dei no LinkedIn no ano passado.
A apresentação tentou explicar a programação funcional sem usar conceitos como "mônadas" ou "imutabilidade" ou "efeitos colaterais". Em vez disso, ele se concentra em como pensar sobre a
composição pode fazer você um melhor programador, independentemente do idioma que você usa.

40 anos, em 17 de outubro de 1977, o Prêmio Turing foi apresentado a John Backus por sua contribuição para o design de sistemas de programação de alto nível, principalmente a linguagem de programação Fortran. Todos os vencedores do Prêmio Turing recebem a oportunidade de apresentar uma palestra sobre um tema de sua escolha durante o ano em que recebem o prêmio. Como criador da linguagem de programação Fortran, pode-se esperar que Backus leia os benefícios do Fortran e os desenvolvimentos futuros na língua. Em vez disso, ele deu uma palestra intitulada A programação pode ser liberada do estilo Von Neumann? na qual ele criticou algumas das principais línguas do dia, incluindo Fortran, por suas deficiências. Ele também propôs uma alternativa: um estilo funcional de programação .

A palestra contrasta com os programas convencionais e sua "incapacidade de usar efetivamente formas de combinação poderosas" com programas funcionais que "baseiam-se no uso de formas de combinação ". A programação funcional recebeu um renovado interesse nos últimos anos devido ao aumento de alta escalabilidade e computação paralela. Mas o principal benefício da programação funcional é aquele que pode ser realizado independentemente de seu programa ser paralelizado ou não: a programação funcional é melhor na composição .

A composição é a capacidade de montar comportamentos complexos agregando peças simples. Nas aulas de informática, muita ênfase é colocada na abstração: assumir um grande problema e dividi-lo em peças atraentes. Menos ênfase é colocada no reverso: uma vez que você tenha as peças pequenas implementadas, então, como você as conecta. Parece que algumas funções e sistemas são fáceis de conectar, enquanto outros são muito mais complicados. Mas precisamos dar um passo atrás e perguntar: quais propriedades dessas funções e sistemas facilitam a composição? Quais propriedades os tornam difíceis de compor? Depois de ler o código suficiente, o padrão começa a surgir e esse padrão é a chave para a compreensão da programação funcional.