Screencaster

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 =]

Postado em: 11/12/2008 @ 12:12 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
5 comentários

Pronto, aprendi! Agora nunca mais vou usar outra tecnologia!

Imagem ilustrativa

Encontrei recentemente um post no blog de uma empresa de tecnologia, que - além da descrição de o que é Rails extraída da Wikipédia - contém os seguintes dizeres:

O **********(nome da empresa) esta se preparando para em breve disponibilizar sites desenvolvidos com Ruby On Rails, mais uma grande mudança na web,  com a chegada desta ferramenta ou as empresas se rendem a ela ou vão ser engolidas pela concorrência que vai desenvolver aplicações rapidamente e com qualidade e totalmente orientada a objetos.

O que há de errado nestes dizeres? Talvez nada, em termos técnicos. Mas o que me preocupa profundamente é a falta de pragmatismo de certos desenvolvedores (a maioria deles) atualmente. Então você ainda não entende e me pergunta “Mas qual é o problema afinal?”.

O problema é que li neste blog (de uma empresa, repito, empresa) um post dizendo coisas que se encaixam com meu pensamento de anos atrás, quando ainda era um jovem entusiasta de novas tecnologias. A questão aqui é que não existe bala de prata. Ok, o que quero dizer com não existe bala de prata?

Quero dizer que não existe nenhuma solução perfeita para todos os seus problemas, especialmente os tecnológicos. Aí é que se torna muito importante uma característica do programador pragmático: ter domínio sobre mais de uma linguagem/tecnologia e não se tornar refém ou dependente de qualquer framework ou linguagem de programação.

O que vemos por aí (como no caso citado acima), é que muitos desenvolvedores conhecem novas tecnologias e as usam apenas por “estarem na moda” ou por acharem que isso vai chamar a atenção dos seus clientes (o que não é verdade, diga-se de passagem). Utilizar uma solução simplesmente por “amor à camisa” não é a escolha mais inteligente a se fazer.

A escolha mais inteligente a se fazer é aquela que se encaixa melhor nos padrões do projeto no qual se irá trabalhar. Afinal, quem utilizaria ruby on rails para criar um site institucional para a padaria da esquina? Quem contrataria um servidor dedicado para servir um site que tem apenas 5 páginas e formulário de contato?

Nós, desenvolvedores, não podemos de forma alguma nos render à tecnologias que nós pensamos ser superiores ou que gostamos mais. Devemos sempre estar atentos ao mercado, à situação do projeto e principalmente às suas necessidades.

Eu, particularmente, acho Ruby uma linguagem muito boa sintaticamente, acho Python ainda mais elegante quando se fala em sintaxe. Já a sintaxe do PHP não me agrada tanto assim, o que não me impede de utilizá-la em projetos (aliás, PHP é a linguagem que mais usamos até agora em projetos da empresa). As duas primeiras linguagens que citei exigem um certo controle do servidor para que se possa fazer um deploy tranquilo e livre de excessos de burocracia. Já o PHP tem a grande vantagem de funcionar em, praticamente, qualquer shared host que vemos por aí, ou seja, mesmo eu achando super divertido desenvolver com Ruby on Rails ou Python, utilizo PHP em muitos projetos simplesmente porque é a solução mais adequada, dependendo do caso.

Mais uma coisa, caros programadores! Aprendam uma linguagem de programação nova por ano. Não precisa se tornar expert, nem sequer utilizá-la em algum projeto, mas aprenda! Cada linguagem nova traz uma bagagem de conhecimento que pode ser útil no seu dia-a-dia programando, seja qual for a linguagem. Aprenda até mesmo as mais malucas linguagens possíveis, como Brainfuck e Whitespace, por exemplo.

Vamos ser mais pragmáticos ;)

Postado em: 15/10/2008 @ 21:10 por Guilherme Rambo. Você pode comentar ou enviar um trackback para este post.
3 comentários