CodeIgniter + Ruby on Rails + Django

Gostaria de fazer um breve comparativo entre esses três frameworks, pois julgo terem bastante semelhanças e trabalham de forma parecida.

Confesso que o título original desse artigo era “CodeIgniter x Ruby on Rails x Django“, mas por que ser ‘versus’ se pode ser ‘mais’?

Não vou ser determinista nem tampouco taxativo, mas poderia resumir uma possível dúvida quanto à escolha do melhor na seguinte frase: “Escolha sua linguagem e pegue seu Framework“. Diria que é mais um relato de utilização do que propriamente um comparativo de funcionalidades.

CodeIgniter

Trabalhei com CodeIgniter no desenvolvimento do site Portal da Classe Contábil, projeto iniciado pela Fortes Informática e hoje um dos maiores portais de contabilidade do país. Já tínhamos uma equipe que trabalhava com PHP e outra que trabalha com Java, sendo que a de PHP nunca havia experimentado um framework antes.

A curva de aprendizado foi realmente muito curta, apesar de não termos utilizado todos os plugins e bibliotecas que ele oferecia (muita coisa tivemos que fazer na mão, devido a complexidade do portal). Os conceitos de MVC são muito bem aplicados e nos permitiu ter um ritmo de desenvolvimento realmente ágil. Como entrei no projeto inicialmente como webdesign, a separação do ambiente das “views” foi essencial para o sucesso da equipe.

Ruby on Rails

Recentemente recebemos uma demanda muito grande no desenvolvimento de sistemas para web e, como já vínhamos adotando XP e metodologias ágeis na empresa, buscamos alguma ferramenta que pudéssemos ser mais produtivos e realizar testes e iterações mais eficientes.

Foi determinado então que a ferramenta utilizada seria o Ruby on Rails. Por quê? Porque foi um framework realmente pensado e elaborado para ser utilizado por quem utiliza metodologias ágeis.

Sob a consultoria de Christiano Milfont, tivemos o prazo de 2 meses para desenvolver um sistema interno de indicações de prospectos. Confesso que as primeiras semanas foram doloridas. Pensar tudo de trás para frente, uma nova linguagem, e tudo o mais que uma migração assim nos permite sofrer, pode ser um pouco dolorido, mas vale a pena.

Não diria que virei fã incondicional de Ruby on Rails, mas com certeza diria que é um framework excelente e bastante produtivo. Creio que o domínio da ferramenta e um interesse por aprender uma nova linguagem possam fazer do profissional um cara extremamente produtivo.

Django

Meu coração até bate forte ao falar de Python (sem maldade, por favor). Não entendo por que essa linguagem não é utilizada por todos. Mas, quer saber? Não estou nem aí. Desde que eu a utilize e consiga fazer tudo muito rápido e com o código altamente organizado e simples, eu não me importo com o que os outros achem.

Django é um framework altamente pythônico. Pythônico no que se diz a “programe pouco que eu faço tudo”. Realmente é incrível como ele trata com simplicidade tarefas corriqueiras. E não engessa tanto. Talvez essa seja uma de suas principais qualidades: você pode usar o framework, mas se não quiser, não use!

Suas pastas são todas organizadas da mesma forma que classes do Python e tem um plugin fantástico, onde toda a administração é gerada automaticamente. Não se preocupe com (quase) nada do backend… o Django faz (quase) tudo para você.

Python é minha escolha para projetos pessoais e pretendo com um tempo utilizar profissionalmente. Me espanta as empresas e os próprios programadores não darem valor a uma linguagem tão produtiva e organizada. Talvez por ser fácil demais, e eles não acreditarem que possa ser uma linguagem realmente poderoza, ou talvez por modismo mesmo (as que estão em voga ainda são Java e Ruby).

Conclusão

Acho que deu para perceber qual seria a minha escolha, mas se você for escolher um desses frameworks, pensem primeiro que linguagem você gostaria de utilizar, então estude o framework correspondente.

… mas não descarte os outros. Hoje em dia programador nenhum pode se dar ao luxo de se prender a uma só linguagem.

20 Comments

  1. Klaus Laube
    Posted agosto 4, 2009 at 11:46 am | Permalink | Responder

    Trabalho com Python + Django há cerca de 1 ano…. e realmente, não sei como tem tanta gente que é capaz de denegrir esta dupla.
    Recentemente fui “forçado” a trabalhar com PHP novamente (framework Akelos)… que pesadelo! Uma vez pythonista… você perde total vontade de programar em outras linguagens.

  2. Posted agosto 4, 2009 at 2:30 pm | Permalink | Responder

    Agora sim no lugar certo !!!

    Gostei do seu post!
    Eu utilizo o Django, e desde que o conheci, não consigo pensar em programar em outra linguagem que não python!
    Às vezes tenho que dar manutenção em um sistema antigo feito em ASP, e vou te falar… Dá até uma dor no coração!
    Mas fazer o que !

    Abraços!!
    Fred Chevitarese – GNU/Linux
    http://chevitarese.wordpress.com

  3. Posted agosto 4, 2009 at 4:41 pm | Permalink | Responder

    Algumas coisas são modismo mesmo, mas tenhamos que aceitar que o DJango deve muito de sua popularidade ao sucesso do Rails, devido esse último ter trazido à tona linguagens antigas que eram sub-utilizadas.
    EU gosto de Python apesar de nunca ter feito nada profissionalmente com Django, mas creio que Ruby está um pouco mais evoluído em termos de comunidade e com grande conjunto de ferramentas já existentes.

  4. Posted agosto 4, 2009 at 6:27 pm | Permalink | Responder

    Vale ressaltar que no PHP, temos muitos frameworks além do codeigniter, e falando em agile, ele se torna um péssimo exemplo.

    Recomendo o estudo CakePHP; Um framework criado como uma “prova de conceito” de que era possível fazer um framework similar ao rails no PHP.

    No mais, parabéns pelo post e pela sua nova carreira de programador!

    • Henrique Gogó
      Posted agosto 4, 2009 at 9:57 pm | Permalink | Responder

      Já li algo sobre o CakePHP, e a afirmação que vi era justamente essa, que o CakePHP seria o “PHP on Rails”. Apesar de tudo, só pude falar do que eu conhecia.
      Valeu pela participação no blog! Abração, Eric.

  5. Posted agosto 5, 2009 at 4:25 pm | Permalink | Responder

    Sinceramente, eu jah programei com ASP, PHP e RoR, e depois que conheci o Python+Django não largo jamais !
    Simples, rápido e está crescendo bastante ! Entre RoR e Django fico com o Django.

  6. Posted agosto 5, 2009 at 5:30 pm | Permalink | Responder

    Com certeza, Python+Django é a escolha certa de quem gostaria de ter mais horas livres para pesquisar e aproveitar a vida.

    Vejo que muitas empresas já adotam esse framework, mas são as mais novas, as startups, que realmente adotam Django como ferramenta compositora do valor da empresa.

    Viva o Django!

  7. Posted agosto 5, 2009 at 5:43 pm | Permalink | Responder

    Já usei os 3 e hoje, assim como alguns colegas acima, não consigo utilizar outro framework que não seja o Django.
    Code igniter realmente tem uma curva de aprendizado bem curta, acho ele ideal para programadores PHP que nunca tiveram contato com frameworks ou desconhecem MVC. Também acho que o melhor framework PHP é o cake (comparado com synphony, zend, CI e prado).
    Outra coisa que gosto muito no Django é o admin. É o mehor scaffold dentre todos os frameworks MVC.
    Rails pode ter uma comunidade maior do que Django, mas existe muito mais material/script/software em python do que em ruby.
    Sou + Django!

  8. Vinicius
    Posted agosto 5, 2009 at 6:01 pm | Permalink | Responder

    Trabalho com Code Igniter a dois anos, mas com tantos elogios ao Django, não tenho como não dar uma estudada… =)

  9. Marcos
    Posted agosto 5, 2009 at 7:31 pm | Permalink | Responder

    Eu usei muito tempo o CI pra PHP, e o desenho dele fazia com que limitasse muitas coisas, e muitas vezes pra “resolver um problema” se demorava muito tempo, e isso me irritava, quem já fez projetos um pouco complexos com o CI sabe o que eu estou falando.

    Recentemente conheci o http://www.yiiframework.com confesso que me surpreendeu e muito, quem não conhece vale a pena dar uma olhada, já estamos usando ele em produção (primeiro trabalho com ele), e está superando as espectativas, mesmo não se tendo domínio do framework ainda.

    Dois fatores que me chamaram a atenção logo de cara no yiiframework, foi o suporte dele a memcache, e filtros. e por ser parecido com o django, conceitos de aplicações, quem usa cake, prado não terá muita dificuldade pra aprender.

  10. Eduardo
    Posted agosto 5, 2009 at 7:37 pm | Permalink | Responder

    Trabalhei com CodeIgniter gosto bastante, é rápido e para se tornar agile mesmo falta alguns scripts para montar as coisas mais rápido, gosto tb de Django, python é de longe minha linguagem predileta depois de C++. Parabéns pelo artigo.

  11. Posted agosto 5, 2009 at 9:47 pm | Permalink | Responder

    Milfonte,

    Ruby e python sub utilizadas? Onde? Ruby possui mais ferramentas? Onde?
    Me cita ai o que falta pra python ou pra ruby e pq elas são sub utilizadas.
    Na boa cara, vai ler.

  12. Posted agosto 5, 2009 at 11:48 pm | Permalink | Responder

    Felizmente posso me dar ao luxo de só me meter em projetos web que quero (Web, pra mim, hoje, só por prazer!)

    E quando me meto, pergunto logo: posso usar o que eu quiser? Se eu não puder, nem olho. Só quero se for django, hehhe

    Com django eu consegui achar o desenvolvimento pra web divertido, não tedioso, produtivo!

    É constante vc descobrir um ou outra feature do framework que realemnte te deixa boquiaberto! é simplesmente lindo!

    Pra quem gosta do django, olha a frase que gosto de falar:

    “Com o django você não programa, você faz poesia!
    “Pense nisso! Pequenos esforços, graaaaande projetos!”

    Abracos.objects.all()

  13. Posted agosto 6, 2009 at 11:00 pm | Permalink | Responder

    Assim, você escolheu django como questão de gosto, mas o rails não é das mil maravilhas mas a linguagem ruby é a the best of.
    quando você souber manipular muito bem DSL, metaprogramação, programação funcional, yield e method_missing no ruby você vai vê que o python ainda está meio verdinho em relação ao ruby.

    • Henrique
      Posted agosto 7, 2009 at 12:40 am | Permalink | Responder

      … sou mais propenso a dizer que Ruby é quem está verdinho com relação a Python. Muito mais ainda se quiser incluir fatores como performance e maturidade da VM, ou bibliotecas de qualidade no balaio.

      Tudo isso que você mencionou existe em Python (programação funcional, yeld (generators), geração de métodos em runtime…). A diferença é que quem caiu no Ruby geralmente veio do Java ou algo assim e teve um momento de iluminação com todos aqueles screencasts, e acha que só Ruby tem isso.

      Com o tempo você aprende que forçar a barra demais na mágica torna a manutenção de código um pesadelo, e passa a desencorajar tanta metaprogramação. É um dos motivos que me repeliu do Ruby e Rails de volta para Python e Django, que torna coisas fáceis simples, e coisas complexas possíveis, sem abusar do monkeypatching ou outras coisas bizarras de se debugar.

      • Claudio
        Posted fevereiro 22, 2010 at 2:19 am | Permalink

        Muito interessante seu ponto de vista!

      • Posted novembro 16, 2010 at 9:05 pm | Permalink

        @Henrique

        Vc definiu exatamente o que aconteceu comigo no tempo que trabalhei com RoR. No começo eu achava tudo lindo e maravilhoso e o ROR em projetos pequenos simplesmente é imbatível, porém tiver oportunidade de trabalhar em 2 mega-projetos feitos em ROR, e adivinha??

        Passava nervoso todo santo dia somando a manutenção onde nem escrevendo testes vc tinha plena certeza que aquilo iria funcionar.

        Depois de passar por tudo isso, migrei para Python e hj afirmo que melhorei a qualidade dos meus projetos e acho as coisas mais simples de fazer e acho que o Django e outros frameworks em Python como o Pylons não deixa a desejar para ROR.

      • Posted novembro 17, 2010 at 11:27 am | Permalink

        Mandou muito bem Henrique!

  14. Posted março 10, 2010 at 4:58 am | Permalink | Responder

    Alguém sabe como montar um ambiente de produção Django. Estou desenvolvendo meu primeiro projeto python+Django e não sei como montar um ambiente de produção. Alguém poderia me dar alguma dica?

One Trackback

  1. By CodeIgniter, Ruby on Rails e Django on agosto 5, 2009 at 4:01 pm

    […] Não vou ser determinista nem tampouco taxativo, mas poderia resumir uma possível dúvida quanto à escolha do melhor na seguinte frase: “Escolha sua linguagem e pegue seu Framework“. Diria que é mais um relato de utilização do que propriamente um comparativo de funcionalidades.” [referência: henriquegogo.wordpress.com] […]

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: