Django vs Ruby on Rails

De mes amours de PHP, je suis revenu afin d'éprouver les évolutions web de ces dernières années. Deux frameworks semblent s'affronter la place du roi des alternatifs (après les usines à gaz J2EE et .Net) : Ruby on Rails et Django.

La plupart des comparatifs datent de leurs débuts (2006) et depuis peu semblent motiver à la comparaison. En fait, le seul comparatif concis et assez objectif me parait être celui-ci et qui donne d'après moi un avantage conséquent à Rails. Un autre beaucoup plus complet est celui-là, qui sera ma prochaine lecture :)

J'aimerais bien en fait que quelqu'un me dise par exemple X est plutôt destiné à un usage Y, même si tout peut être fait avec les deux.

Un avis particulier sur la question ?

1 Trackback

Rails ou Django : le vote depuis L'antre du reptible Bigouden sur 8 juin 2008 13h20

Décidément, le choix d'un framework web ne sera jamais d'une évidence limpide. Certains critères sont du domaine du design :DRY ou don't repeat yourself : ne jamais avoir à répéter la moindre ligne de code, se concentrer sur les fonctionnalités... Lire la suite

7 Commentaires

Rails... N'y pense meme pas. Django a (a mon avis) deux grands problemes:

1) Cette histoire des views qui retournent des objets HttpResponse est une erreur de design assez grossiere (voir http://tinyurl.com/yudkhe pour un commentaire a ce sujet) qui peut generer tres vite des usines a gaz.

2) Je suis arrive a la conclusion que la communaute Ruby/Rails et bien plus sympathique et tolerante que celle de Python/Django (et moi qui pensait que les "Ruby zealots" etaient ridiculement fanatiques! C'est des enfants a cote des fanas de Django). Sincerement, les pythonistas ressemblent a des fondamentalistes religieux pour qui toute autre approche est a proscrire.

Franchement je commence a en avoir marre, et je vais limiter mes posts a propos de Django dorenavant (j'en ai marre des commentaires ridicules lorsque je critique le framework ne serait-ce qu'un peu). Des commentaires qui en viennent a dire meme que le pattern MVC ne sert a rien (!). Bref, n'importe quoi :)

Saludos de un argentino que vive en Lausana!

Che boludo, que haces ?

Bon, j'arrête mon argentin tout de suite, même si je me ferais bien un petit asado avec un choripan plein de chimichurri :)

1) Je vais regarder un peu plus en détail ton lien

2) le gros avantage de la communauté Python/Django est qu'elle est assez technique et motivée par leur sujet. Je commence à peine à connaitre la communauté Ruby, et j'ai l'impression qu'elle ne cherche pas trop à se faire connaitre, elle reste un peu trop discrète, même si très sympa.

Côté Django, j'ai au moins un bloggeur passionnant (Biologeek). Çà influence un petit peu forcément.

Niveau technique (en connaissant uniquement le tutoriel), j'avoue que l'édition de formulaires multi-modèles me parait beaucoup plus aisée que sous Rails grâce à leur interface d'admin. Sous Rails, obligé d'utiliser un plugin (attribute_fu ou multimodels-form) pour que ça soit pas trop galère.

Que haces loco! :) Vi que viviste en Argentina en tu LinkedIn, por eso te escribi en castizo ;)

Tout langage de prog a une "tribu" autour. Dans le monde francophone, Python est plus populaire, et il y a une enorme resistance envers Ruby (que j'ai de la peine a comprendre, mais d'apres mon experience souvent se base sur des prejuges a la noix). C'est qqch que j'ai remarque lors du dernier Paris On Rails en décembre dernier.

Bref, tout cela pousse Django de ce cote de l'Atlantique (et de la Manche) alors que dans le monde anglo-saxon RoR est extremement populaire (presque devenu un standard). Chaque framework a des avantages sur l'autre, et surtout, ils ont chacun un target particulier. Si sur Django les formulaires d'admin sont plus simples et disponibles off-the-box (et ils sont vraiment bien foutus), tu peux installer le Streamlined plugin (http://streamlinedframework.org/) et avoir la meme chose en Rails. J'ai utilise Streamlined et j'ai adore.

D'un autre cote, je trouve que le code Django necessaire pour parcourir des relations entre tables de la BD est abjecte, compare a la simplicite de "has_many" et "belongs_to" de Rails. Peut-etre que Django fait plus simple la tache pour les modeles complexes, mais sincerement, pour 90% des applications, RoR gagne avec les yeux fermes. La lisibilite du code est d'une importance capitale dans tout projet.

RoR a un support off-the-box pour des APIs REST (chose qu'on ne peut faire que tres difficilement en Django a cause du choix architecturale que je discute dans mon article http://tinyurl.com/yudkhe). Les templates erb de RoR sont bien plus flexibles que ceux de Django, qui utilisent un langage different a Python (et franchement bacle et bride, mais heureusement avec un support d'extension pour ajouter des tags). RoR a un support pour environnements off-the-box (dev, test, prod, plus si besoin) qu'il faut "simuler" dans Django avec des configuration qui changent dans chaque equipe.

Of course, Python est plus rapide (pour le moment) et donc Django supporte mieux des sites a grande concurrence, mais de nouveau, pas tous les sites n'ont ce besoin *des le depart*. Fin 2008 on devrait avoir plusieurs nouvelles implementations de Ruby avec une croissance exponentielle de la vitesse. De l'autre cote, d'apres ce que j'ai compris Python 3 ne sera pas 100% compatible avec Python 2.x, et je me garde d'ecrire du code dans un langage qui pourra devenir incompatible avec mes investissements futurs.

Et finalement, d'un point de vue purement subjectif et irrationel, Ruby est plus beau que Python, et sans forcer les tabulations et autres, offre une lisibilite plus grande. Ruby offre en autre de vraies lambdas & blocks (Python les limite a 1 seule instruction!) et est un langage "pur" oriente objet, alors que Python melange le procedural et le oriente-objet de facon capricieuse. Je prefere de faire "[].length" au lieu de "len([])", mais de nouveau, c'est un choix d'ecriture. C'est comme preferer Borges a Sabato, ou Divididos a Las Pelotas, en quelque sorte :)

Le support de testing est similaire dans les deux frameworks, mais RoR distingue les tests d'unite, fonctionnels et d'integration de facon explicite. L'approche Python d'avoir des unit tests dans les commentaires des modeles ne me plait pas trop (de nouveau, c'est un critere personnel). Malgre tout, encore faut-il que les developpeurs aient le "mindset" testing, ce qui est souvent pas le cas, du tout.

Bref, chaque plate-forme a ses avantages, mais moi j'ai mes preferences. Et je parle en connaissance de cause, je suis en train de travailler sur un projet Django a 30'000 lignes de code Python (!) bientot en prod (dont j'ai ecrit 8000), et sur deux projets RoR en parallele, l'un deux en production depuis 6 mois.

Voila! :)

Un abrazo pibe! Aguante River Plate toda la vida! Aguante lo Millo viejaaaa!

Adri

Et tout cela sans compter dans les 1001 strategies de caching qu'offre RoR... par page, par fragment, par site, en memoire, en disque, etc, etc, etc. En jouant sur ces aspects, j'ai multiplie par 50 la capacite d'une de mes applis RoR. Et hop! :) le tout en 20 minutes de travail.

Ha, tu as été voir sur LinkedIn, je comprends mieux :) Ca me manque l'Argentine, c'était vraiment l'une des meilleures époques de ma vie. Une question : pourquoi tu n'écris pas sur ton blog en Français sur RoR ? La création d'une communauté francophone vaudrait le coup à mon avis.

Je pense que je vais continuer sur RoR quelques temps, au moins jusqu'à la finalisation de la maquette de mon application, ensuite, ce sera un vrai développeur qui va la reprendre et ce sera à lui de faire les choix définitif.

En tout cas, je sens que tu es un passionné et ça fait plaisir à voir. N'hésites pas à repasser et nous (me) faire part de tes lumières sur ces sujets, c'est très intéressant.

Que hacelga? Siempre vengo para molestar.

Juste un dernier lien, qu'il faut absolument lire (il faut etre "fair play"): une comparaison Python vs. Ruby (tres pro-Python) qui est absolument superbe cote analyse et recherche, meme si je ne partage pas trop certains points qui me semblent un peu subjectifs:

"Ruby’s not ready"
http://glyphobet.net/blog/essay/228

C'est vrai que je pourrais ecrire plus en francais, et je le fais de temps en temps mais plus souvent en anglais. Je pourrai commencer par traduire certains de mes articles :) Bref, c'est vrai qu'il y a bcp a faire.

Au plaisir de te voir sur mon blog aussi!

Nos vemos! Un abrazo,

Je regarderais, merci encore pour ton lien. Chau !

Laisser un commentaire

Notes récentes

Fermer