O paradigma de programação afeta a performance de aplicativos Web?

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.


Posted

in

by

Tags:

Comments

3 responses to “O paradigma de programação afeta a performance de aplicativos Web?”

  1. Diogo kid Avatar

    Ola amigo,

    concordo com o que disse a respeito de performace.

    Acho a vantagem do uso de OO na web ao invés de Procedural seja principalmente o reaproveitamento de codigo, e também considero mais “rapido” o desenvolvimento. Em sistemas complexos, onde usamos muitas funções e repetidamente, é prático usar OO exetamante por isso, não reescrever muitas vezes codigos semelhantes. Além de padronizar e organizar o codigo. Bom, essa é a minha opnião…

    Belo post!
    Abraço.

  2. Rafael De Camillis Avatar

    Olá Julio!

    Muito boa a matéria sanou minhas dúvidas, e a respeito da materia de como melhorar a performance de aplicativos web ficarei muito feliz se você publicar uma materia a respeito.

    ps: sou seu fan leio com frequencia os posts do seu site sao muito bons abraços e continue escrevendo!

    Rafael de Camillis
    Programador Garimpar.com

  3. inerte Avatar
    inerte

    Tô escrevendo! Vai demorar pra caceta pois tem muito coisa pra falar, mas uma hora sai, eu te aviso por email.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.