Paradigmas de programação
Pra dar uma variada nos assuntos do sub, queria discutir sobre um tema que me interessa, paradigmas de programação. Podemos dividir em três: orientado a objetos, procedural e funcional.
As linguagens mainstream normalmente dão suporte a todos, mas cada linguagem tem um mais adequado (ou falando bonito, idiomático). Por exemplo, Java é o clássico da orientação a objeto; Go faz um resgate do procedural; já do funcional, temos linguagens menos conhecidas como Haskell, Scala, F# - e, olhando com lupa, JS/TS.
Um desafio que encontro com frequência é qual adotar para resolver cada problema. OOP vai muito bem com interfaces gráficas e jogos, porém quando os objetos são muito dinâmicos – por exemplo, em pipelines de data analytics – o paradigma perde eficiência, ficando verboso.
Também vejo um certo desconhecimento do paradigma funcional, sendo que algumas ideias – imutabilidade, redução de side-effects - são bastante úteis nos sistemas de hoje em dia, com grande paralelização e tratamento de dados.
Aí tem o clássico coleguinha, com o Design Patterns debaixo do braço, fritando padrões e mais padrões OOP em um problema que ficaria mais claro e sucinto se escrito de forma procedural/funcional.
O que acham? Faz sentido se importar com isso, ou, pagando boletos, que mal tem?