Aktualisierte (aktuelle) Empfehlung zu Rails gegen Django? [geschlossen]

7

(Disclaimer: Ich habe diese Frage gestern bei Hacker News gestellt . Während die Antworten gut waren, da war ein bemerkenswerter Mangel an technischer Diskussion und mehr von einem "Sie sollten Schienen verwenden, weil das ist, was Sie wissen." Da Joel und Jeff klar sagen, dass sie Reposts von Fragen von anderen Seiten nicht stören ... und da ich wirklich die Antworten mag Ich finde hier ... hier geht's)

Hallo Leute.

Mir ist klar, dass dieser Post eine berüchtigte "versus" -Frage ist und zweifellos mit älteren Posts überflüssig ist. Die meisten Informationen, die ich auf Rails oder Django finde, sind jedoch veraltet und basieren auf viel älteren Versionen der Frameworks, also vergib mir bitte.

In erster Linie ... Ich bin ein Rails-Typ. Ich kam vor drei Jahren dazu und genoss wirklich viel von dem, was es an den Tisch brachte. Ich bin nicht nur ein Ruby-Typ ... Ich habe rund 11 Jahre Erfahrung, einschließlich Java, C / C ++, Perl, Tcl, (etwas) Python und mehr.

Jedenfalls habe ich eine Idee, von der ich glaube, dass sie die Welt übernehmen wird. Ich habe bereits ein paar Leute davon überzeugt und Freunde und Familien bekommen, um einige Offshore-Entwickler aufzunehmen und sie so schnell wie möglich in die Betaversion zu bekommen.

Jetzt bleibt mir jedoch die Entscheidung, welche Technologie ich verwenden soll. Während ich Ruby wirklich genossen habe ... Ich bin müde von der Magie und dem Missbrauch von offenen Klassen. Es ist sehr schön, wenn Sie schnell etwas Verhalten einbringen müssen, aber es kann zu einem echten Problem werden, wenn Sie Ihr Projekt oder eines der Plugins, von denen es abhängt, pflegen müssen. Ich persönlich bevorzuge Ruby gegenüber Python (hauptsächlich aufgrund von Blöcken), aber ich beneide die Klarheit-erste Einstellung in der Python-Community. Angesichts dieser Frustration denke ich ernsthaft darüber nach, tief in Django einzutauchen und es für dieses Projekt zu nutzen.

Die Pluspunkte, die ich auf der Rails-Seite sehe, sind:

  1. Die Größe der Community (die, da einige dieser "Community" PHP-Flüchtlinge umfassen, ist nicht unbedingt ein Plus)
  2. Meine Vertrautheit und Erfahrung
  3. Anzahl der Unternehmen, die es nutzen und sich bemühen, es zu verbessern
  4. Verfügbarkeit von Offshore-Ressourcen

Nachteile von Rails sind:

  1. Zu viel Magie
  2. Die Dokumentation ist weiterhin schrecklich an Orten
  3. Inkonsistente API
  4. Habe ich Magie erwähnt?

Die (wahrgenommenen) Pluspunkte auf der Django-Seite:

  1. Klarheit
  2. Leistung ... Ich glaube, Unladen Swallow wird die Python-Landschaft wirklich verändern und ihr einen Wettbewerbsvorteil verschaffen
  3. Google unterstützt die Sprache selbst (siehe # 2)

Nachteile von Django:

  1. Lernkurve
  2. Kleinere Gemeinde
  3. Langsamerer Entwicklungszyklus des Projekts selbst?
  4. (un) Verfügbarkeit von Offshore-Ressourcen

Also, das ist mein Denkprozess bisher. Ich bin mir ziemlich sicher, dass ich schnell auf Django beschleunigen konnte, und ich habe die Grundlagen von Python immer noch in meinem Speicher. Aber ich wollte deine Meinung hören, da ich die Vision und die Erfahrung vieler Leute, die ich hier lese, wirklich respektiere.

Ich schätze Ihre Hilfe. Ich denke wirklich, dass diese Idee aufgehen wird. Daher ist es für mich sehr wichtig, die richtige Technologieentscheidung zu treffen.

Und ich sage, dass ich Rails einfach wählen soll, weil ich Erfahrung darin habe, klingt einfach nicht richtig. Wenn das der Fall wäre, würde ich immer noch Perl oder C benutzen.

Danke!

    
Parna 20.07.2009, 11:46
quelle

4 Antworten

8

[Repost von HN, der gleiche Link wie Frage, wie ich Ihre (Sie haben nicht auf HN antworten) und SO-Antwort hören möchten.]

Ich bin offensichtlich voreingenommen, da ich eine Django-Entwicklungsfirma betreibe. Das heißt, Ill beginnen mit der Beantwortung der Nachteile von Django,

  1. Lernkurve .: Nicht mehr als jeder andere Rahmen. Plus die Dokumentation ist erstklassig. (Die Dokumentation war, was mich verkaufte, als ich evaluierte.)

  2. Kleinere Gemeinde: Definitiv wahr. Aber jenseits einer kritischen Größe spielt die Größe der Gemeinschaft keine Rolle. Django ist weit über dieser Größe. (Irc: jede Zeit ~ 200 Devs. Google-Gruppe: 14000+ Benutzer)

  3. Langsamerer Entwicklungszyklus des Projekts selbst ?: Warum? Wenn Sie mehr Details angeben, kann ich das beantworten.

  4. (un) Verfügbarkeit von Offshore-Ressourcen: Definitiv weniger als Rails, aber immer noch nicht so schlimm, wie du gedacht hättest. Eine sehr kleine Liste, Ссылка ...

Das ist gesagt, mit den Informationen, die Sie haben, würde ich Ihren Fall Rails wählen. Selbst wenn die meiste Arbeit, die Sie auf Offshore-Ebene suchen, Ihre vorhandene Rails-Erfahrung wäre ein großes Plus, hilft Ihnen, Lieferanten zu bewerten, verfolgen.

Zu einer halbverwandten Anmerkung, Django ist weniger reif / kleinere Gemeinschaft ist viel zu groß, einige Figuren,

  1. Jahre in Entwicklung. ROR: 5 / Django 5
  2. Mitglieder in der größten Google-Gruppe: ROR 18000 + / Django 14000 +
  3. Mitglieder in Irc derzeit: Ror 436 / Django 401
  4. Commits zum Repo: Ror? / Django 11000 +
agiliq 20.07.2009 19:34
quelle
7

Sie haben mindestens einen Vorteil von Rails vergessen - erweiterte Testbarkeit über RSpec / Cucumber. Der wichtigste (zusätzliche) Vorteil ist die Aufmerksamkeit auf Ruby / Rails von der agilen Test-Community. Die Verwendung von Tests in natürlicher Sprache sollte die Fähigkeit, Ihre Tests zu begründen und die Verständlichkeit zu fördern, erheblich verbessern. In mancher Hinsicht würde dies die "Magie", die Sie verabscheuen, durch die Dokumentation über leicht lesbare Tests ausgleichen.

Darüber hinaus würde ich vorschlagen, dass ein neues Projekt, für das Sie das Geld Ihrer Freunde und Familie ausgeben, wahrscheinlich nicht die ideale Situation ist, um eine neue Sprache / einen neuen Rahmen zu lernen. Warum fügen Sie das zusätzliche Risiko einem bereits riskanten Unternehmen hinzu?

    
tvanfosson 20.07.2009 11:57
quelle
6

Ich werde einfach mit vielen Ihrer Aussagen argumentieren:

  • Django mag weniger Magie haben als Rails, aber da sind noch einige. Python ist jedoch klarer, damit Sie Klarheit gewinnen.
  • Django ist dafür bekannt, dass es einfach zu lernen ist, daher denke ich nicht, dass Djangos Lernkurve ein Problem ist.
  • Unbeladene Schwalbe ist bisher Dampfgarer. NIEMALS jemals Software-Entscheidungen treffen, die auf dem Versprechen basieren, dass in der Zukunft Software verfügbar sein wird.

Da Sie Rails bereits kennen, sollten Sie sich daran halten, wenn Sie nicht wissen, dass es schmerzhaft sein wird. Auch wenn Sie nicht mit Rails zufrieden sind, würde ich Ihnen empfehlen, Tutorials für einige der anderen existierenden Python-Frameworks wie Turbogears 2, BFG und Grok zu lesen. Es kann sein, dass Sie etwas weniger monolithisches oder vollständiger bevorzugen würden, dass Rails / Django.

Ссылка Ссылка Ссылка

    
Lennart Regebro 20.07.2009 12:09
quelle
6

Ich habe eine andere Perspektive über diese beiden Frameworks, wie sie sich vergleichen. Ich bin immer noch ein Noob in diesen beiden, da ich ein Java-Entwickler bin, der nach etwas aufregendem sucht, um auf meiner Freizeit zu tun. Ich habe diese beiden Rahmenbedingungen genau beobachtet und kam zu folgendem Ergebnis:

Schienen

Wie Sie wissen, stammt Rails aus einer webbasierten Anwendung von 37signals, die sich auf die Architektur von if auswirkt. Ich habe Rails jedoch noch nicht wirklich in der realen Anwendung benutzt, aber ich denke, ich könnte es für mein nächstes Lieblingsprojekt verwenden.

  1. Grundsätzlich kann ich aus Rails sehen, dass es sich um ein monolithisches Framework handelt (obwohl sich das in Rails 3 ändern wird, da es die Merb-Architektur übernehmen wird). Diese Architektur von Mein Standpunkt wird sich auch auf die Art und Weise auswirken, wie Sie Ihr Projekt liefern / verpacken. Monolith Art von Projekt Ich denke, ist gut, wenn Sie alle Anwendungen in einem Paket an Ihren Kunden liefern möchten.
  2. Gemäß der Architektur verwendet Rails das Plugin, wenn Sie ein anderes Feature erweitern oder hinzufügen möchten. Ich denke, das ist gut, wenn Sie ein community-basiertes Produkt haben möchten, in dem Benutzer Plugins hinzufügen können.
  3. Sie haben gesagt, dass Ruby langsam ist, aber wenn Sie Rails-Apps als Produkt verpacken wollen, ist es ziemlich wörtlich, es als WAR-Datei mit JRuby und Warble zu packen. ZB: Thoughtwork's Mingle benutzt diesen Ansatz.
  4. In Anbetracht dessen, IMHO (gut DHH sagte das auch in der Ruby vs Snakes-Konferenz zu) ist Rails für die Web-Anwendung geeignet.
  5. Rails hat eine gute integrierte Ajax-Unterstützung (rjs). Django Leute, es ist einfach, Ajax Unterstützung auf Django hinzuzufügen, aber eine Abstraktion wie in Rails macht es immer noch ziemlich wert, denke ich.

Django

Django wurde aus einer Zeitungssite geboren, also auf eine Art und Weise, die auch die Architektur des Django beeinflusst. Ich habe nur Django in meiner Sandbox-Website verwendet und bisher habe ich sehr gerne Websites damit aufgebaut.

  1. Die meiste schmutzige Arbeit wurde für Sie erledigt (RSS-Feed-Framework, generische Ansicht, Admin, Kommentar-Framework, etc.)
  2. Django hat eine Architektur der "steckbaren Anwendung". Das ist gut, wenn Sie bereits erstellte Django-Anwendungen, die von der Community erstellt wurden, verbinden oder diese Anwendungen auf mehreren Ihrer Websites teilen möchten.
  3. Wie gesagt, wenn es sich um interne / interne Webseiten handelt, denke ich, dass es wirklich gut ist, django zu verwenden, weil Sie diese Apps auf mehreren Websites wiederverwenden können. Aber es wäre wirklich schwer, dies in eine Anwendung vom Typ "bundle" zu bringen, weil diese django apps in der Regel in einem PYTHONPATH leben, anstatt alles in Ihrer Anwendung zu bündeln. Obwohl Pinax die ganzen Apps in einem Paket verteilt, und ich bin gespannt wie Ellington es macht.
  4. Da das aktuelle Python schneller ist als das aktuelle Ruby (1.8), macht das Django selbst viel schneller als Rails (es gibt viele Benchmarks dazu im Web). Mit dieser Art von Leistung ist IMHO django wirklich für stark frequentierte Webseiten geeignet (Denken Sie an Twitter wie Traffic-Websites)

Einige Leute stimmen mir möglicherweise nicht zu, da sie eine Problemumgehung finden können, um Rails als Website und Django als Webanwendung zu verwenden. Aber das ist, was ich denke, die beiden aufgrund ihrer Architektur unterschieden. So wird auch definiert, wofür sie gut sind. Fühlen Sie sich frei, mir zu widersprechen: -)

Prost.

    
Joshua Partogi 21.07.2009 07:32
quelle

Tags und Links