A programação orientada a objetos é o paradigma mais utilizado no mundo e isso acontece por conta das suas inúmeras vantagens e transformações que gerou no desenvolvimento como um todo.
No entanto, é claro que nem tudo são rosas, a programação orientada a objetos tem as suas fraquezas e não é uma opção que deve ser utilizada em todas as situações, sem antes passar por uma análise aprofundada.
O criador da linguagem Erlang tem uma opinião bem forte sobre o paradigma, dá uma olhada no que ele fala:
“O problema das linguagens orientadas a objetos é todo esse ambiente implícito que vem junto com elas. Você queria uma banana, mas o que recebeu foi um gorila segurando uma banana e a selva inteira em volta dele.“
Gorila? Hã?
Claro que o Gorila é uma metáfora. No caso, esta frase expõe o fato de que as linguagens orientadas a objetos fazem com que seja extremamente difícil de fazer coisas que deveriam ser simples.
Um exemplo claro disso são as linguagens Java e C#. Para fazer um simples programa que escreve “Hello World” na tela, é necessário montar um projeto inteiro, fazer a criação de classes específicas, colocá-las todas em lugares específicos, e por aí vai…
Claro que atualmente existem diversas IDEs que facilitam este processo, mas ainda assim muitas vezes pode soar como um trabalho um tanto quanto chato e desnecessário.
Por conta disso as linguagens funcionais começam a ser uma possibilidade que deve ser estudada e levada em consideração, veja algumas de suas vantagens
Linguagens Funcionais
As linguagens funcionais, como o nome sugere, tem a estrutura de seus programas construída a partir de funções, o que pode simplificar muito a vida do desenvolvedor
As linguagens funcionais tendem a ser mais simples de escrever, desenvolver testes, e trabalhar com concorrência, pois contam com uma menor complexidade e dependência das partes, como acontece na orientação a objetos
Claro que ela também tem seus pontos negativos. Um dos principais é que pode ser difícil conectar as partes do seu código, e por conta do conceito da imutabilidade é possível que seu código fique com “lixo”.
Por isso, existem algumas linguagens de programação que ficam no meio do caminho, e podem ser consideradas como “multi-paradigma”
Multi-Paradigma
Linguagens classificadas como “multi-paradigma” tendem a possuir características de linguagens orientadas a objetos de forma menos restritiva, e combiná-las com conceitos funcionais.
Um exemplo claro disso é a linguagem Go, que possui estruturas semelhantes às classes da orientação a objetos, porém não obriga a criação de nenhuma para que o programa funcione corretamente. Por conta desta flexibilidade, o programador pode decidir qual das abordagens funciona melhor para o determinado problema que está tentando resolver
Conclusão
Claro que nenhum paradigma é perfeito, todos eles têm seus pontos positivos e negativos. O importante é saber onde usar cada um deles e não ficar “apaixonado” por apenas uma solução. É necessário ter flexibilidade para saber qual problema pode ser resolvido por qual abordagem.