Ich kenne PHP und Ruby.
Bei Verwendung eines PHP-Rails-Klons (nicht aus der Auswahl) namens Symfony (der anscheinend das beste PHP-Framework ist) stelle ich fest, dass es sich um einen Rails-Klon handelt. Ich denke, Symfony ist dumm und das (SensioLabs ist ein kluges Geschäft), weil Rails bereits existiert.
Abgesehen davon, dass Open-Source-Projekte Geld verdienen, verstehe ich nicht, warum Leute Rails-Klone in PHP erstellen, wenn Rails bereits existiert. Warum nicht Rails verwenden? Sicherlich hat DHH Rails aus einem bestimmten Grund mit Ruby codiert.
Mit Symfony stelle ich fest, dass sich etwas nicht richtig anfühlt, aber ich weiß nicht, was es ist. Ich habe Rails durch ein beschissenes Sitepoint-E-Book gelernt und es vergessen. Jetzt lerne ich es über das PragProg-E-Book und ich liebe dieses E-Book. Ich kenne Rails nicht vollständig, aber ich verstehe, wie es funktioniert (dank Symfony). Ich würde gerne das ganze eBook durcharbeiten, damit ich 2 Rails-Apps erstellen kann. Ich erinnere mich, dass Rails mit dem Sitepoint-eBook, das ich nicht fertigstellen konnte, mehr Spaß machte als Symfony und das nichts mit Rubys hübscher Syntax zu tun hatte.
- Warum ist Rails in Ruby codiert?
- Was ist mit PHP Rails-Klonen, die sich nicht richtig anfühlen?
- Was macht Rails, was machen Rails-Klone nicht?
quelle
Ruby on Rails
PHP implementiert wird.Antworten:
Rails wurde ursprünglich aus DHHs Arbeit an Basecamp extrahiert , die in Ruby geschrieben wurde. Im Laufe der Zeit extrahierten und entwickelten die Rails-Kernentwickler weitere Funktionen in Rails und es wurde schließlich ein vollwertiges Framework.
Da Ruby im Laufe der Jahre an Kraft und Ausdruckskraft zugenommen hat, passt es weiterhin gut zum Framework, sodass es auch weiterhin die Sprache ist, in der es geschrieben wurde. (Plus, "C # on Rails" oder "Java on Rails" nicht habe nicht diese schöne Alliteration.)
Dies kann nicht wirklich objektiv beantwortet werden, aber es liegt wahrscheinlich an # 1. Das Verhalten und die Interna von Rails nutzen viele Funktionen, die in Ruby vorhanden sind, und sind an anderer Stelle nur schwer genau zu replizieren. Zum Beispiel hat PHP keine Metaklassen, von denen Rails stark abhängt.
Weil nicht jeder die Zeit, das Budget oder die Neigung hat, eine neue Sprache zu lernen, nur um einen neuen Rahmen zu lernen.
Wenn sich in Analogie herausstellt, dass Brainfuck über ein sehr beliebtes Webframework verfügt, sollten Sie dann Ihre Kunden verlassen, die ihre Anwendungen nicht in Brainfuck geschrieben haben? Das ist keine Möglichkeit, ein Geschäft zu führen.
Aussagen wie "Ich kenne sowohl PHP als auch Ruby" deuten darauf hin, dass Sie die Tiefe, den Reichtum und die Eigenheiten von beiden möglicherweise noch nicht vollständig einschätzen.
quelle
Es gab einmal die Entscheidung, es in Rubin zu programmieren. Diese Entwurfsentscheidung dauert bis heute an.
Es ist ein Gefühl, das man auf einem Wesbite wie diesem schwer zu sagen hat. Vielleicht möchten Sie eine Person fragen, die Ihnen näher steht und mehr über Ihre Gefühle weiß oder sie sogar teilt.
Ein exakter Klon von Rails macht per Definition alles, was Rails macht. Dies hängt also höchstwahrscheinlich davon ab, wie genau ein Klon erstellt wurde. Die verschiedenen Teile führen zu unterschiedlichem Verhalten. Bei einer Übersetzung in eine andere Sprache verfügt die andere Sprache möglicherweise nicht über Sprachfunktionen, die Rails on Ruby verwendet. Dies führt höchstwahrscheinlich zu Unterschieden im Design und dann im Verhalten.
quelle
Ruby erlaubt viel Meta-Programmierung und seine zulässige Syntax ermöglicht es Ihnen, nette APIs zu erstellen, die überhaupt nicht wie Methodenaufrufe aussehen.
Zum Beispiel macht ActiveRecord, Rail's Object Relational Mapper, beide Dinge gut. Erstens verwendet es Rubys Metaprogrammierungsfunktion, um Methoden im laufenden Betrieb zu erstellen, die Feldnamen in der Datenbank entsprechen.
Zweitens können Sie mit ActiveRecord Zuordnungen zu Objekten deklarieren: eine
Person
Machthas_many :books
. Das has_many sieht aus wie eine Deklaration, ist aber eigentlich ein Methodenaufruf. (Ruby liest dies alshas_many(:books)
.Ruby hat auch das Ziel, erfahrenen Programmierern das Leben zu erleichtern.
Ruby macht diese Sache einfach, also machen die Leute sie. Andere Sprachen machen dies schwieriger oder magische Dinge wie diese sind ausdrücklich nicht Teil der Kultur. Django, das Python-Mega-Framework, hat viel weniger Metamagie, weil es in Python nicht so einfach ist und Python als Sprache zu "explizit ist besser als implizit" tendiert. (Ich weiß nicht viel über die PHP-Kultur oder die Web-Frameworks auf dieser Seite.)
Ich denke, dies sind einige der Gründe, warum DHH sich in Ruby verliebt hat, und er verwendet diese Sprachfunktionen mit Power in Rails.
quelle
Warum nicht Schienen benutzen?
Ich werde als Benutzer von beiden eine Perspektive bieten. Ich habe ein Hobbyprogramm in Ruby / Rails und benutze PHP ausschließlich bei der Arbeit. (Hinweis: Ich lehne Ruby / Rails nicht als Hobbyumgebung ab. So wähle ich es einfach aus.)
Viele Leute betrachten Ruby / Rails als den heiligen Gral der Website-Entwicklung, weil es so beliebt ist und weil es "anders" ist. In vielerlei Hinsicht reicht es sicherlich nicht aus, PHP als etwas Altes abzutun.
Symfony fühlt sich nicht wie Rails an, da PHP ein Teil des syntaktischen Zuckers fehlt, den Rails bietet. PHP verbessert sich in dieser Hinsicht und das Hinzufügen von Schließungen durch 5.3 hat einen Unterschied darin gemacht, wie viele von uns Code schreiben.
Versteh mich nicht falsch, ich liebe Ruby und ich liebe Rails. Wenn Sie sich jedoch nicht mit komplexem oder teurem Website-Hosting befassen oder sich Gedanken über die Leistung machen oder auf dem neuesten Stand sein möchten, ist PHP auch heute noch äußerst relevant und die Frameworks sind ebenfalls sehr gut.
Ihre Andeutung, dass sich PHP-Rails-Klone nicht richtig anfühlen, ist meiner Meinung nach falsch, weil sie keine Klone sind und nicht mit Rails identisch sein werden. Lernen Sie, die Einfachheit und Vertrautheit einer PHP-Lösung zu genießen.
quelle