Rafael de Camillis, desenvolvedor do Garimpar, envou uma interessante pergunta à lista brasileira no Google Groups do Django:
Pessoal queria saber o que vcs acham, o que é melhor pra programação web: Procedural ou Orientação à Objeto.
Um site todo procedural tem a mesma performance de um site feito com Orientação a Objeto?
Minha resposta à pergunta dele estava ficando kilométrica e decidi colocar aqui no blog. Segue a dita cuja!
A performance é independente do paradigma usado para fazer o programa. O que acontece é que certas técnicas em certas linguagens de programação são mais eficientes dependendo dos requerimentos.
Por exemplo, a programação funcional é teoricamente ótima para processadores com mais de um núcleo, entretanto você provavelmente só verá ganhos enormes quando você estiver utilizando uma linguagem que faça esse lado funcional de maneira “pura“. É possÃvel programar de maneira funcional em Lisp e Python, mas devido à caracterÃsticas da linguagem, você não verá os mesmos ganhos que em Haskell ou Erlang.
C++, por exemplo, provavelmente vai ser uma das linguagens onde você vai conseguir maiores velocidades, independentemente do paradigma utilizado e contra quais linguagens. Procedural ou OOP, C++ bate Java em 99.99% das vezes, se feita direito.
Ah, mas então a pergunta é, dentro da mesma linguagem (vamos assumir Python), qual é mais rápido, Procedural ou OOP? Novamente, tudo depende 🙂 Em Python, tudo é um objeto, então qualquer coisa que saia de código a gente poderia dizer que já é OOP. Mas aà entra o estilo do programador, a competência dele. Felizmente, ou infelizmente, esse é o principal fator. Imaginemos que conseguÃssemos chegar à solução que determinado algoritmo (perceba o escopo do problema, é micro, e não macro como _todo_ o desenvolvimento Web) é mais rápido quando feito de forma Procedural. Se déssemos o problema para ser solucionado por N programadores, divididos entre uso de técnicas procedural e OOP, a verdade é que a performance das soluções dependeria da competência das pessoas. Poderia muito bem sair o OOP como vencedor.
De qualquer jeito, deixe-me voltar ao foco 🙂 Os gargalos de performance em aplicativos web raramente estão na linguagem de programação utilizada (tirando aplicar aberrações como Cobol :), mas sim, na ordem:
1) Banco de dados;
2) Servidor de páginas;
3) Erros de programação;
Isso acontece pois é relativamente fácil resolver problemas de escalabilidade em aplicativos web. Quando a linguagem é lerda, geralmente basta jogar mais uma máquina com uma instância do servidor web para distribuir as requisições. Na verdade, esse lerdeza é geralmente irrisória se comparada à s outras linguagens, e irrelevante levando em conta outras soluções. É possÃvel decuplicar a performance fazendo cache das páginas dinâmicas. Duplicar dobrando a memória RAM do servidor. Triplicar separando o banco de dados do servidor web em uma máquina exclusiva.
Essa mensagem não pretende exemplificar quais procedimentos você poderia tomar para aumentar a performance nos três pontos que eu passei, mas a verdade é que umas das últimas de suas preocupações deve ser qual linguagem de programação utilizar para aplicativos web, e menos ainda qual paradigma ou técnica utilizar. Não se preocupe com isso, e ataque o problema de outra maneira.
Se alguém quiser, eu posso fazer um novo post dando uma visão geral sobre como melhorar a performance de aplicativos web.
Leave a Reply
You must be logged in to post a comment.