programador-de-software

Ao trabalhar com desenvolvimento de sistemas no ambiente produtivo, estamos totalmente habituados a utilizar linguagens imperativas e orientadas a objeto. É uma forma consagrada e amplamente utilizada. Contudo, um “novo” paradigma de programação tem ganhado força, devido à demanda ininterrupta por escalabilidade e distribuição: a Linguagem Funcional.

A linguagem funcional é um paradigma de programação, em que o desenvolvimento é feito com base em resultados de funções e a programação é feita com expressões, como se as funções fossem os objetos. Nessa abordagem, o valor de saída depende apenas dos argumentos de entrada, de maneira que independe do ambiente ou cenário em que o sistema esteja inserido. Assim, o resultado da saída é sempre o mesmo para os mesmos argumentos de entrada.

Trocando em miúdos, essa seria uma programação focada na imutabilidade de estado, já que as funções apresentam o mesmo valor e comportamento durante todo o processo. Desta forma, a linguagem funcional torna-se totalmente inerente a situações de paralelismo, distribuição e altíssima concorrência e criticidade.

Este conceito do paradigma funcional não é nada recente, tem origem no cálculo lambda datado dos anos 30. Várias linguagens que aplicam este conceito funcional foram surgindo ao longo dos anos, mas as linguagens funcionais se mantiveram à margem das consagradas linguagens orientadas a objeto e imperativas. Isso deve-se, pode-se presumir, às limitações de processamento e ao fato de que uma programação linear costumar ser mais natural e intuitiva.

No entanto, com o aumento da capacidade de processamento, armazenamento e banda, que cresceram muito e continuam crescendo para atender a demanda dos sistemas escalares, as linguagens funcionais ganharam seu merecido espaço.

Muitas linguagens funcionais ganharam destaque como Scala, Clojure, Erlang e Haskell.

Scala, por exemplo, é uma linguagem funcional que roda na JVM e é totalmente integrada ao Java, além de apresentar os recursos de linguagens orientadas a objeto, o que permite o desenvolvimento de arquiteturas mais avançadas. Uma vantagem da Scala em relação a outras linguagens funcionais, deve-se justamente a esta integração com o Java, de forma que um mesmo sistema pode ter simultaneamente classes interagindo em Scala e Java, o que possibilita uma migração fácil e gradual de um sistema Java para um conceito mais funcional.

Esta vantagem comumente é um diferencial na escolha da linguagem. Ela já foi utilizada na programação do noticiário The Guardian, por exemplo.

 

Outra vantagem das linguagens funcionais são a sintaxe muito mais concisa, o que pode agradar o desenvolvedor por gerar um código bem mais limpo.

As linguagens orientadas a objeto tem seu domínio no ambiente produtivo, mas este reinado está cada vez mais ameaçado pelas linguagens funcionais. Talvez seja a hora de dar protagonismo a elas: que se mostram uma solução mais interessante num ambiente cada vez mais distribuído e com escalabilidade crítica.

 

Por: Ariny Guedes
Revisão: Dandara Chaves

 

Imagem: Technogeek

Deixe um comentário