Lucchesi
topo

Por que você deveria aprender Programação Funcional?

Uma mente que se abre a uma nova ideia jamais retorna ao seu tamanho original.

Albert Einstein

Você pode até achar exagero, mas a minha história com desenvolvimento de software mudou no dia em que eu comecei a aprender Programação Funcional.

Na época, eu era um autêntico fan boy de Orientação a Objetos, daqueles que recitava design patterns como se fossem mantras.

Até que, um belo dia, eu decidi usar Scala ao invés de Java em um projeto…

O início de uma jornada…

O início de uma jornada

Tudo começou há 7 anos…

Na época, eu não sabia nada de Scala!

Então eu resolvi fazer o curso Functional Programming Principles in Scala do Martin Odersky (criador da linguagem) antes de iniciar esse projeto.

Não sei se você já programou em Scala, mas ela é uma linguagem de programação híbrida, que dá suporte tanto ao paradigma orientado a objetos quanto ao paradigma funcional, com o objetivo de unir o melhor dos dois mundos.

Enfim, o curso começou, a hora dos exercícios chegou e aconteceu um problema…

Eu comecei a perceber que minhas soluções eram sempre orientadas a objeto demais!

Como eu sabia muito pouco sobre programação funcional, eu só conseguia pensar em termos de classes, objetos e design patterns.

O problema era óbvio:

Como eu poderia usar Scala de maneira eficiente, extraindo o melhor de dois mundos se, na verdade, eu só conhecia um deles?

Foi aí que eu parei o curso e comecei a estudar Haskell — uma linguagem de programação puramente funcional diferente de tudo que eu já tinha visto.

Um caminho sem volta

Nesse momento, tudo que eu (achava que) sabia sobre programação virou de ponta cabeça…

Me deparar com funções puras, imutabilidade, efeitos colaterais, transparência referencial, currying, monads, transformers, lenses e tantos outros novos conceitos apenas me mostrou como eu era um programador nutella!

Pensa comigo…

Se você pegar as linguagens de programação mais usadas — como Java, Python, PHP, JavaScript e Ruby — e bater no liquidificador, você vai ver que é tudo farinha do mesmo saco.

Todas têm origem no paradigma imperativo e, quase sempre, aprender uma ou outra é mera questão de decorar uma nova sintaxe.

Querendo ou não, você continua pensando do mesmo jeito: em termos de classes, objetos e design patterns. Nada de novo ou desafiador.

Por outro lado, aprender uma linguagem como Haskell é como andar de bicicleta pela primeira vez…

Reaprendendo a programar

Lembra do dia em que você:

Pois é, aprender programação funcional te dará a oportunidade de reviver esses momentos como se você estivesse em uma montanha russa, com alguns momentos de dor, mas muitos momentos de glória!

No início, você vai ficar meio perdido, vai questionar suas habilidades como programador e, talvez, até entre em crise existencial.

Mas se você ama programação, confie em mim, todo esse processo de reaprender a programar é muito divertido!

Mesmo que você não use uma linguagem funcional no seu dia-a-dia, aprender uma delas é um esforço que vale a pena porque:

  1. Muitos conceitos de programação funcional podem ser aplicados em qualquer tecnologia.
  2. Você vai ganhar uma nova perspectiva sobre os problemas e vai conseguir resolvê-los por meio de soluções super elegantes.
  3. O paradigma funcional não é somente uma tendência, mas já é uma realidade na maioria das linguagens de programação.

Ainda não se convenceu?

Vários recursos de programação funcional — como expressões lambda, imutabilidade e avaliação preguiçosa — já estão presentes na maioria das linguagens populares e a tendência é que isso aumente cada vez mais.

Não tem pra onde fugir…

Se você quiser evoluir como programador, uma hora ou outra, você vai acabar tendo que aprender esse negócio de programação funcional.

Então, pra que perder tempo estudando o framework do momento? Por que não estudar algo que pode te tornar um programador melhor de verdade?

No meu caso, aprender Haskell fez toda a diferença, mas existem outras opções de linguagem e os conceitos são mais importantes que a tecnologia.

Por isso, eu insisto: faça como eu, abra sua mente para o paradigma funcional e deixe de ser nutella você também!