Artigo – Ismael Velten
Desenvolvedor na Braspag

Muito tem sido falado a respeito de programação funcional na Internet. Vemos várias linguagens de programação aparecendo nas perguntas dos fóruns de desenvolvimento, tais como Haskell, Python, Eralang, Elixir, Clojure e F#. Além disso, apesar de discretamente, vemos mais e mais ofertas de trabalho surgindo, as quais requerem experiência nessas linguagens.

Mas o que exatamente causou esse crescimento em popularidade?

Para começar, eu gostaria de dizer que a programação funcional não é tão impopular como muitos de nós podemos pensar. Ela está sendo estudada, promovida, e escrita desde a década de 60, e ainda continua evoluindo nos dias atuais. Em meados de 1980, já tinha muitas ferramentas maduras, bons livros e cursos disponíveis. Era uma área ativa no Reino Unido na época.

Muitos cientistas da computação na época já alertavam as pessoas a respeito dos cuidados que deveríamos ter com a codificação que se popularizou até os dias atuais, não que ela não fosse conveniente, mas talvez, inapropriada para alguns cenários. John Backus, o inventor do Fortran (antiga linguagem de desenvolvimento), dizia que a programação precisava ser liberada do estilo “Von Neumann”, que ele dizia ser o estilo que imitava o jeito com que o processador do computador funcionava. Precisávamos levar a programação de um jeito mais científico, usando fórmulas matemáticas e compondo peças de programas com facilidade.

Apesar desses estudos, usos e alertas de pessoas como ele, a popularidade da orientação a objeto ofuscou as idéias inovadoras da programação funcional por muito tempo. Talvez fosse o senso comum de rejeitar coisas alternativas como algo “hipster”, talvez não. Fato é que, junto com o crescimento da popularidade desta forma de programar, também cresceram os problemas que muitos programadores conhecem hoje.

Explicando para leigos, basicamente a programação funcional é um paradigma (conjunto de pensamentos, filosofias, métodos e padrões para algum assunto) de programação, que usa funções de forma parecida com a matemática, e evita manipulação de estados. A produção de um sistema comercial hoje em dia pode ganhar muito com estas duas coisas. Utilizar funções como na matemática clássica requer um conhecimento de domínio (todas as entradas possíveis) e imagem (todas as saídas possíveis), o que auxilia o desenvolvedor a compreender bem as regras de negócio do sistema que está desenvolvendo. E evitar a manipulação de estados nos leva para a definição de valores e a transformação desses valores, o que é mais seguro, pois evitamos efeitos colaterais que surgem com a complexidade dos sistemas. Se você não entendeu bem o que isso quer dizer, imagine o cenário em que um bug é encontrado e reportado por um cliente, e o desenvolvedor afirma que precisa “reproduzir” este bug para compreendê-lo: isto é um efeito colateral que não foi mapeado pela equipe de desenvolvimento, e muitas vezes surge por conta de um estado mutável que foi alterado para algo, sem que fosse previamente percebido por quem estava desenvolvendo.

Claro, não queremos ser perfeccionistas: não estou dizendo que a programação funcional resolve todos os problemas que os desenvolvedores e suas empresas enfrentam na produção de sistemas, mas definitivamente oferece uma forma mais segura de trabalhar com a necessidade atual das aplicações corporativas. Podemos chegar à conclusão de que não há nada de novo nessa ressurgência. É mais uma redescoberta de algo que já é conhecido e promovido por muitos pesquisadores. É o mesmo pensamento que algumas pessoas possuem a respeito de inovação hoje: muitas vezes o que vemos como idéias disruptivas e inovadoras são, na verdade, a simples utilização prática de conceitos e estudos que já foram elaborados por universidades há décadas atrás.

Confira mais conteúdo no Blog do Ismael Velten.