Programação Funcional - Tudo o Que Você Precisa Saber! Artigo 1 de 10
Olá Pessoal nesta série vamos falar sobre um importante Paradigma de Programação, A Programação Funcional e como ela é aplicada no JavaScript. Preparamos uma Série de 10 artigos para abordar com exemplos o que é a Programação Funcional, Esse é o primeiro artigo. Quais são os conceitos que fazem parte desse Paradigma e como Programar em JavaScript utilizando a Programação Funcional? Veja a resposta nesta série completa.
Obs. ao Leitor: Por vezes caro leitor, você verá em nossos posts a sigla TL;DR quando ela estiver presente prepare-se, vêm texto longo por aí, assim o resumo do post será colocado no Parágrafo TL;DR algo como Too Long Didn't Read ou Texto Longo, Não Li.
TL;DR
Paradigma de Programação
É um estilo de programar, ou uma forma de escrever programas seguindo padrões que resolvam problemas específicos, os paradigmas de programação estão na base de criação e funcionamento das linguagens de programação. Uma linguagem de programação pode seguir um único paradigma como Haskell que é puramente funcional, ou ter um combinação de paradigmas por exemplo Scala que combina Programação Funcional e Orientação a Objetos. O JavaScript é uma linguagem que também combina vários paradigmas sendo assim chamada de linguagem de programação multiparadigma.
Programação Funcional a Origem
Linguagens de Programação Funcionais - Puramente Funcionais, ou Multiparadigmas
Lisp, Haskell, Erlang, R, Elixir, R, Scala, JavaScript
Conceitos da Programação Funcional
O Cálculo Lambda; cálculo-λ; Programação Declarativa; Imutabilidade; Funções de Primeira Ordem; Funções Puras; Funções Impuras; Currying;
FrameWorks e Bibliotecas JavaScript
React, Lodash e RambdaJS
Paradigma de Programação
Linguagens de Programação são naturalmente criadas seguindo um modelo de funcionamento, uma forma de execução e um ambiente onde são executadas, os Paradigmas de Programação compreendem a forma como uma linguagem de programação trabalha, é o estilo de programar, linguagens mais antigas eram comumente imperativas e lineares, de forma que o programa era escrito na sequência em que deveria ser executado, e descrevendo passo a passo como uma rotina deveria funcionar. Com a evolução da tecnologia porém, novos conceitos ou paradigmas foram pensados para melhorar a escrita, o reaproveitamento de código tanto na produção quanto na manutenção de códigos em programas, e então surgem a Programação Orientada a Objetos, além de outros paradigmas, a ideia é sempre de reutilização de código, fácil manutenção, e abstração dos problemas, criando rotinas cada vez mais inteligentes e abstratas, sendo reutilizadas em inúmeras situações.
A Programação Funcional é mais um paradigma de programação, logo é uma forma ou um estilo de programar. Algumas linguagens como Lisp, Haskell, Erlang e Elixir são totalmente criadas utilizando este paradigma, de modo que programadores nestas linguagens precisam conhecer o conceito para tirar maior proveito dos recursos da PF Abreviação para Programação Funcional, embora pareça Polícia Federal mas não, neste texto e nos próximos PF refere-se a Programação Funcional.
Recentemente com o advento de bibliotecas populares como o React que trabalham sobre o paradigma da programação funcional, torna-se necessário explorarmos os conceitos de como a Programação Funcional trabalha, quais são os recursos desse paradigma e por que utilizar a Programação Funcional no desenvolvimento de aplicações web.
Uma das grandes vantagens da programação funcional, é utilizar seus recursos em aplicações de larga escala, assim, recursos como imutabilidade, funções de primeira ordem e tantos outros, evitam ou até minimizam efeitos colaterais em aplicações de larga escala.
Bibliotecas como React, utilizam este paradigma de programação e conseguem obter performance, organização e escalabilidade. Nos próximos posts a medida que entendemos os recursos da programação funcional, veremos também como aplicá-la na prática com bibliotecas poderosas como RambdaJS e Lodash.
Se você deseja extrair o melhor de bibliotecas como React e outras que se valem do paradigma da PF, esses artigos irão ajudá-lo a subir o nível de seu conhecimento.
Neste primeiro artigo falaremos sobre a origem da Programação funcional, e algumas linguagens que são puramente funcionais, ou multiparadigmas. Nos próximos artigos iremos detalhar cada conceito da Programação Funcional.
Programação Funcional a Origem
A origem da PF está no mundo acadêmico em especial na matemática, em tratar a programação como funções matemáticas, e seguindo princípios do Cálculo Lambda, cálculo-λ um conceito que trata de recursividade e onde as entidades podem ser passadas como parâmetros e retornada como valores dentro de outras funções além de tratar de da evolução dos dados, neste conceitos os dados não são alterados, eles evoluem, esse conceito serve de base para a criação de várias linguagens de programação.
Análise Matemática, estatística, análise financeira, aplicações concorrentes estão entre os objetivos do uso da PF. Algumas linguagens são puramente funcionais como: Lisp, Haskel, Elixir já outras são multiparadigmas, ou seja, permitem mais de um paradigma: Erlang, R, Scala. O JavaScript também é uma linguagem multiparadigma, e é possível utilizar o JavaScript de forma funcional.
Embora somente o uso de funções na programação não significa que está necessariamente utilizando esse paradigma, essa é uma das principais características.
Declarativa
Na PF a forma de programar é declarativa, por exemplo no JavaScript a função array.map() irá mapear um array retornando os dados dele para uma função callback. Essa função não diz como ela percorre um array elemento por elemento, como ela passa a informação para a função de callback, logo ela não é imperativa como um for(let i=0; i < array.length ; i++{} que neste caso é imperativo, ou seja ele diz exatamente como irá rodar o código, na PF a forma de programação é sempre declarativa.
Benefícios da Programação Funcional
Por que utilizar a programação funcional?
- Evita efeitos colaterais
- Uma vez que os dados são controlados por funções puras e dados imutáveis, podemos escalar a aplicação, sem a preocupação de side effects. Um componente irá se comportar conforme ele foi programado.
- É limpo e não verboso
- Uma vez que a programação declarativa e imutável está presente, temos uma redução na escrita do código, códigos mais limpos e objetivos tendem a ter maior facilidade de manutenibilidade.
- Trabalho em equipe
- É excelente para trabalho em equipe, uma vez que os códigos que foram desenvolvidos nesse paradigma sempre se comportam exatamente como foram concebidos originalmente.
Conceitos da Programação Funcional
Nos próximos 9 artigos iremos analisar com exemplos em JavaScript, o que está envolvido em cada parte da Programação Funcional. Também aprenderemos a utilizar as bibliotecas RambdaJS e Lodash, além de ver um exemplo utilizando React.
Esperamos que tenha gostado deste artigo, se você gostou, compartilhe com os amigos e com os colegas que estão aprendendo React, JavaScript ou outra linguagem funcional. Aproveite também um desconto exclusivo para o nosso Curso Completo de JavaScript com mais de 38 horas: https://hcode.com.br/cursos/JSFULL
A gente se vê no próximo artigo!
Glaucio Daniel