Screencaster Mostrando conhecimento


PHP x Python x Ruby - Comparando as linguagens e seus frameworks

Fiz uma comparação bem simples com as três linguagens que uso atualmente para desenvolver para a web: PHP, Python e Ruby.

Resolvi compartilhar com vocês o resultado deste teste. Fiz o seguinte: peguei uma aplicação de exemplo bem simples, um livro de visitas. Basicamente é apenas uma tela, onde há uma listagem das assinaturas e um formulário para que a pessoa possa assinar o livro de visitas, com apenas um campo para a mensagem.

Após decidir sobre a aplicação, escolhi os ambientes em que iria montar ela:

1 - PHP, banco de dados MySQL, servidor Apache rodando localmente e framework Codeigniter
2 - Python, Google Datastore rodando sobre GoogleAppEngine localmente, framework Webapp/Django
3 - Ruby, banco de dados SQLite, rodando localmente sobre Mongrel, framework Rails

Montei a mesma aplicação nos três ambientes, e comparei os resultados. Confiram:

Linguagem: PHP
Framework(s): Codeigniter
Ambiente: Apache/PHP5
Banco de dados: MySQL
Tempo de desenvolvimento: ~11 minutos
Linhas de código digitadas: ~50
Tempo de resposta: ~34ms

Linguagem: Python
Framework(s): Webapp e Django (templates)
Ambiente: Google AppEngine
Banco de dados: Google DataStore
Tempo de desenvolvimento: ~13 minutos
Linhas de código digitadas: ~64
Tempo de resposta: ~80ms

Linguagem: Ruby
Framework(s): Ruby on Rails
Ambiente: Mongrel
Banco de dados: SQLite
Tempo de desenvolvimento: ~7 minutos
Linhas de código digitadas: ~31
Tempo de resposta: ~122ms

Então nosso placar fica assim:

Linhas de código:

1 - Ruby (~31 linhas)
2 - PHP (~50 linhas)
3 - Python (~64 linhas)

Tempo de desenvolvimento:

1 - Ruby (~7 minutos)
2 - PHP (~11 minutos)
3 - Python (~13 minutos)

Tempo de resposta:

1 - PHP (~34ms)
2 - Python (~80ms)
3 - Ruby (~122ms)

Caso queira baixar os arquivos do projeto escrito nas três linguagens, baixe aqui.

Lembrando que o teste teve como objetivo apenas minha curiosidade pessoal, e não foi feito rigorosamente, portanto os números podem não ser exatos.

Mesmo assim, foi muito divertido =]


14 pessoas comentaram

  1. Legal a idéia de comparar uma aplicação para seu próprio desenvolvimento.
    Mas o legal é que saibam, como vc mesmo mencionou, que foi uma comparação pessoal, e que a melhor linguagem ou tecnologia é aquela que atende o seu problema da melhor forma.

    Abs

  2. inside says:

    Exatamente Felipe. Digamos que eu tivesse que fazer esta aplicação na “vida real” para um cliente qualquer, muito provavelmente eu utilizaria PHP, afinal Rails e Webapp são frameworks muito mais completos e complexos, enquando o CodeIgniter é consideravelmente mais enxuto e mais simples.

  3. Jader Rubini says:

    Há que se levar em conta também sua afinidade com cada linguagem/framework.

    Além disso, o GAE torna o Django um pouco menos simples do que ele de fato é. Não quero começar uma guerra entre linguagens aqui (porque sei que isso não leva a nada), mas acredito que eu conseguiria um resultado melhor com o Django do que o que você obteve.

  4. inside says:

    Jader, a comparação levou em conta o Ambiente e o Framework. Logo, eu avaliei o Python juntamente com o AppEngine, não o Python com o Django (usando django para os templates). Esqueci de incluir no post algum trecho de código comparando um pouco as sintaxes. PHP pode ter tido menos linhas de código que Python, mas na minha opinião o código em Python ficou muito melhor e mais conciso.

  5. Piero says:

    Ae, muito bom o post.
    Eu, aqui, to começando a querer expandir meu conhecimento pra justamente uma dessas linguagens novas.
    Pelo que eu vi, o ruby, com o framework é muito legal.
    Mas, acho que vou pelo python , até porque ja tenho ele instalado aqui :p
    Bom, continue postando ai, que ta muito bom o blog.
    Até

  6. Muito interessante seu post, só fico na dúvida se o tempo de resposta ali é mais influenciado pela linguagem ou pelo banco… mais de quelquer forma acho que o php é o mais interessante..

  7. Luiz Carlos says:

    Estou estudando qual das opções irei escolher para desenvolver um aplicativo web, e confesso que estou sem saber qual caminho tomar.

    Gostei muito do framework CodeIgniter - leve e fácil de instalar. Porém vejo que o Ruby on Rails está muito forte, com muitos materiais e plugins à disposição na internet.

  8. inside says:

    Luiz, escolha o que for melhor do ponto de vista do projeto. Você vai ter controle do servidor? O projeto tem pretensões de ter um enorme volume de dados trafegando direto? Precisa de algum recurso que uma das tecnologias oferece melhor que a outra?

    []’s

  9. Luiz Carlos says:

    Será um aplicativo simples para controle dos usuários do meu site.

    Os usuários são distribuidores que utilizam o site da equipe para divulgar a empresa, exemplo:
    http://www.agelvisao.com/?id=luiz
    O site já tem vários usuários utilizando o link (+/-300), cada um com sua ID. A expectativa é de termos muito mais. Cada membro utiliza o mesmo site, alterando apenas a ID no final do link.

    Hoje cadastro cada usuário numa página simples de php. Também tenho página para deletar e editar usuários. Porém, quero incrementar esse sistema construindo um aplicativo no qual, além das tarefas padrões (CRUD), eu tenha também funções como login para administração, envio de comunicado à todos os membros da equipe, etc…

    Eu não tenho controle do servidor.

  10. inside says:

    Luiz, pelo que me parece neste caso a melhor opção seria usar PHP com algum framework, já que o Rails requer certo controle do servidor. Além disso, como é uma aplicação relativamente simples, não vale a pena “usar um canhão para matar uma mosca”.

  11. Luiz Carlos says:

    Muito obrigado!

    Foi o que eu pensei… Já iniciei a construção do aplicativo com Code Igniter.

    Até+

  12. Joel Wallis says:

    Gostei do artigo (ainda mais por quê o PHP foi o mais rápido! rs).

    Um amigo meu já havia me falado sobre o Ruby, e que você digitava bem menos pra desenvolver alguma coisa (digitou-se 40% a menos do que em PHP), e vendo esse artigo já deu vontade de estudá-lo.

    Legal, parabéns!

  13. Ved says:

    Muito bacana este tipo de comparação, principalmente na comparação com tempo de desenvolvimento. No quesito performance, acho que cada tecnologia tem seus melhores pontos e para testar para valer, seria necessário algo mais elaborado!

    []s

  14. Carlos says:

    Um framework muito novo mais muito versátil tem chamado a atenção de muitos desenvolvedores, chama-se Yii (pronuncia-se i).

    http://www.yiiframework.com

    Estou estudando ele.

Agora é a sua vez: