PHP und Ruby: Wie kann man beides nutzen? und ist es das wert? [geschlossen]

8

Wie Sie vielleicht aus dem Titel bemerkt haben, handelt es sich nicht um eine "PHP oder Ruby" - oder "PHP vs. Ruby" -Frage. Dies ist eine Frage zur Nutzung von PHP + Ruby im selben Geschäft.

Ich selbst bin ein PHP-Entwickler, ich liebe die Sprache wegen ihrer Bequemlichkeit und ich liebe besonders das Ökosystem der Ressourcen, die sie umgeben: Joomla, Drupal, Wordpress, Symfony2, Doctrine2 usw. Die Sprache selbst kann jedoch manchmal etwas enttäuschend sein .

OTOH, Ruby sieht aus wie eine sehr schöne Sprache und - vom oberflächlichen Studium in mehreren Aspekten - könnte ich sagen, dass sie schlanker ist als Python als Sprache an sich. Nach allem, was ich gesehen habe, macht so ziemlich nur RoR Geräusche, und ich mag RoR nicht so sehr (hauptsächlich wegen seiner Modellebene).

Als Co-CEO und CTO in meinem Unternehmen versuche ich, über den Tellerrand hinaus zu denken, da ich mich auf die menschliche Seite der Technologie konzentrieren und herausfinden möchte, ob es sinnvoll ist, sowohl PHP als auch Ruby zu verwenden. Hier sind einige zufällige Gedanken:

  • Ruby-Leute scheinen im Allgemeinen besser für Programmierer geeignet zu sein als PHP-Leute (im Durchschnitt). Ich weiß, dass die vorherige Aussage etwas Quatsch ist, weil sehr gutes und gut strukturiertes PHP geschrieben werden kann, aber ich würde sagen, dass die Ruby-Programmiererkultur besser ist als PHPs.
  • Die Sache mit Ruby ist, dass es besser für eine schnelle Entwicklung geeignet zu sein scheint. Ich weiß nicht wirklich, ob dies nur für RoR der Fall ist, aber ich weiß, dass es bestimmte Praktiken (vielleicht nicht so gut) wie das Patchen von Affen gibt, die das Geschäft ermöglichen muss schneller befriedigt werden.
  • Aus Marketing-Sicht (ja, manchmal müssen Sie die Marketing-BS für Ihr Unternehmen nutzen) scheint Ruby besser zu sein, während PHP einige Stigmen enthält.
  • PHP 5.4 bringt Eigenschaften mit sich , und das ist besser / sauberer als Mixins. Das könnte PHP für bestimmte Dinge wirklich so schlank wie Ruby machen - oder mehr.

Nun konkret meine Fragen:

  • Würde ein PHP-Programmierer Ruby lernen wollen? Ich weiß, dass ich es tue, aber umgekehrt würde ein Ruby-Programmierer PHP lernen wollen?.
  • Welche Arten von Projekten oder Situationen wären für Ruby besser geeignet, die nicht für PHP geeignet sind?
  • Was ist das eigentliche Ökosystem von Ruby? Abgesehen von RoR habe ich keine anderen hochgespielten Technologien / Frameworks gesehen (ich habe RSpec gesehen, aber ich gebe zu, ein absoluter Neuling darüber zu sein, woraus BDD wirklich besteht und welche Auswirkungen es hat).
  • Angenommen, es gibt eine bestimmte Art von Projekten, die ideal für Ruby sind. Gibt es einen Moment, in dem es besser ist, sie auf PHP zu verschieben? Ich weiß, dass PHP mit vielen Dingen umgehen kann, aber ich habe gelesen, dass Ruby beim Skalieren seine Grenzen hat (oder ist das RoR? Oder ist das Quatsch für beide?).
  • Schließlich und vor allem, wäre es vernünftig, Projekte in zwei Sprachen zu pflegen? Oder ist das einfach nur dumm? Wie gesagt, es sieht so aus, als ob Ruby kurzfristig schlanker ist und das kann dazu führen, dass ein Projekt zustande kommt und erfolgreich ist, aber ich bin mir auf lange Sicht nicht so sicher.

Ich suche nach Erkenntnissen hauptsächlich von Menschen, die die Stärken und Schwächen der Sprachen - vorzugsweise beider - und Rubys Ökosystem in der Praxis gut kennen, was bedeutet: Frameworks und Anwendungen, wie ich sie aus dem PHP-Ökosystem zitiert habe.

dukeofgaming
quelle

Antworten:

7

Denken Sie beim Lesen meiner Antworten daran, dass meine PHP-Erfahrung (> 10 Jahre) viel höher ist als meine Ruby-Erfahrung (einige Wochen damit zu spielen; noch kein Live-Projekt).

Würde ein PHP-Programmierer Ruby lernen wollen?

Persönlich bin ich zu Ruby gekommen, als ich nach einer saubereren Sprache für die Webentwicklung (insbesondere bei der Erkennung von Multibyte-Zeichenfolgen) und für serverseitiges Scripting gesucht habe (meine OSX-Bash-Skripte scheinen immer ein oder zwei Probleme zu haben, wenn sie auf meinem Computer ausgeführt werden FreeBSD-Server).

Bevor ich es versuchte, hatte ich mit Lisp, Perl, Python und Node.js gespielt. Ich habe Lisp schließlich verlassen, weil es keinen richtigen Editor gibt (es sind Emacs oder nichts, und ich hasse Emacs mit aller Macht), die Seltsamkeit beim Erstellen einer Web-App (es gibt Tools, deren Verwendung sich jedoch nicht natürlich anfühlt) und die gelegentliche Schrulligkeit (ich beobachte dich car, cdrund cons). Ich habe Perl schnell als genauso stinkend wie PHP abgetan, wenn es um das Bewusstsein für Multibyte-Strings geht. Ich mochte Python nicht sehr (es ist nur eine Geschmackssache; ich habe absolut keine gültigen Gründe). Und obwohl ich es verspreche, streichle ich Node.js als zu jung und überzeichnet. (Ich habe auch über Erlang nachgedacht, bin aber nie über ein Tutorial hinausgegangen.)

Würde ein Ruby-Programmierer umgekehrt PHP lernen wollen?

(...) Schließlich und vor allem wäre es vernünftig, Projekte in zwei Sprachen zu pflegen?

Ich kann hier nur für mich selbst sprechen, aber je mehr ich mit Ruby spiele, desto mehr Lust habe ich zu kotzen, wenn ich PHP-Code lese oder schreibe.

Welche Arten von Projekten oder Situationen wären für Ruby besser geeignet, die nicht für PHP geeignet sind?

Zum einen alles, was UTF-8-String-Handling beinhaltet - was wohl alles beinhaltet, was mit dem Web zu tun hat. Es ist so, ja, in PHP gibt es die mb_*Funktionen; und die IntlKlassen; und den /uModifikator für die preg_*Funktionen; und ... Als PostgreSQL-Junkie bin ich dazu gekommen, die UTF-8-Handhabung als gegeben zu betrachten. Dies ist die Art von Dingen, über die ich mir keine Sorgen machen möchte, insbesondere wenn es um Bibliotheken geht, die über länderspezifische Probleme wie Groß- und Kleinschreibung und Sortierung hinausgehen.

(Ruby ist in dieser Hinsicht übrigens nicht absolut perfekt. Python ist ein bisschen besser . Aber ich hätte lieber Mixins. In 15 Jahren Codierung musste ich selten Nicht-ASCII-Zeichenfolgen außerhalb einer Datenbank sortieren. oder Groß- / Kleinschreibung, die über das Transliterieren von Teilen hinausgeht, die es zu einer URI machen.)

Shell-Scripting ist eine andere. PHP kann auch für diese Art von Sachen verwendet werden, aber die Inkonsistenzen und Unordnung der Sprache machen es viel weniger angenehm.

Was ist das eigentliche Ökosystem von Ruby? Abgesehen von RoR habe ich keine anderen hochgespielten Technologien / Frameworks gesehen (ich habe RSpec gesehen, aber ich gebe zu, ein absoluter Neuling darüber zu sein, woraus BDD wirklich besteht und welche Auswirkungen es hat).

Es gibt tatsächlich mehrere andere Frameworks als Rails: Merb, Camping, Ramaze, Sinatra usw. Es ist nur so, dass RoR schon früh viel Hype bekam.

Ich habe gelesen, dass Ruby beim Skalieren seine Grenzen hat (oder ist das RoR? Oder ist das Quatsch für beide?).

PHP auch. :-)

Persönlich denke ich, dass es Quatsch für Ruby ist. Beim Skalieren in einer beliebigen Sprache betrachten Sie die Engpässe und bearbeiten sie nacheinander. Von dort aus skalieren Sie vertikal und horizontal.

Sie ersetzen gegebenenfalls Ihre Haustiersprache (ich würde beispielsweise keinen Chat-Server oder einen leistungsstarken Finanzdienst in PHP oder Ruby betreiben). Insgesamt ist die Sprache meiner Erfahrung nach jedoch nicht der Kern des Problems bei der Skalierung, egal wie langsam sie ist - die Architektur ist. (Wenn die Sprache das Kernstück des Problems wäre, würden Websites meist in C, C ++, C #, Java, Lisp, Erlang usw. geschrieben. Jede der letzteren übertrifft PHP und Ruby um ein oder zwei Größenordnungen.)

Für RoR kann ich nicht sagen. Ich habe es nur oberflächlich untersucht. Ich verstehe jedoch vollkommen, warum oder wie RoR einen Grafikdesigner oder einen CS-Studenten zufriedenstellen würde. Es beleidigte alles, was ich als Datenbankentwickler für selbstverständlich hielt.

Später stieß ich jedoch auf einen langen Scherz von Zed Shaw (einem Typen, der einen Ruby-Webserver geschrieben hat). Unter anderem verspottete er den Rails-Entwickler, weil er seine eigenen Produktionsserver durchschnittlich nicht länger als 4 Minuten laufen lassen konnte. (Dies hat sich seitdem verbessert.)

Denis de Bernardy
quelle
Ich stimme voll und ganz zu, dass PHP mir nach dem Erlernen der Grundlagen von Ruby jetzt Übelkeit und Erbrechen verursacht. Bei Rails geht es bei Active Record darum, ein ORM zu sein und Entwicklern, die sich möglicherweise nicht mit Datenbankdesign auskennen, grundlegende Datenbankaufgaben zu erledigen, ohne die meisten Probleme zu verursachen. Wenn Sie im Schlaf SQL schreiben können, fühlt sich Active Record ziemlich einschränkend und vielleicht sogar "niedergeschlagen" an. Aber ich denke, es lohnt sich, wenn auch nur, um es einfacher zu machen, guten Code zu schreiben, als schlechten Code zu schreiben, oder schlimmer noch, Code mit Sicherheitslücken.
Michael Hampton
2

Ehrlich gesagt scheinen mir Ihre Fragen unklar zu sein, aber ich werde trotzdem versuchen, sie zu beantworten.

Würde ein PHP-Programmierer Ruby lernen wollen? Ich weiß, dass ich es tue, aber umgekehrt würde ein Ruby-Programmierer PHP lernen wollen?.

Nichts für ungut, aber diese Frage ist nicht zu beantworten. Es hängt wirklich von zu vielen Faktoren ab, von denen viele mit der Persönlichkeit des Programmierers zusammenhängen. Einfache Antwort: Natürlich, warum nicht? Es ist ein weiteres Tool zum Erstellen von Websites.

Welche Arten von Projekten oder Situationen wären für Ruby besser geeignet, die nicht für PHP geeignet sind?

Was Projekte betrifft , sind beide genauso geeignet (wenn ich mich recht erinnere, läuft Ruby langsamer, obwohl dies mit einer Prise Salz zu tun ist, da AFAIK, Stackchange mit RoR erstellt wird [ich lese nie aktuelle Benchmarks]). Eine Situation, die besser zueinander passt, ist, wenn Sie beabsichtigen, ein bestimmtes Framework zu verwenden, oder wenn Ihr Team aus Personen besteht, die mehr Erfahrung in einer der beiden Sprachen haben. Ich glaube wirklich nicht, dass es eine bestimmte Art von Projekt gibt, die für eine bestimmte Sprache "ideal" ist. Es läuft wirklich auf die Besonderheiten jedes Projekts hinaus (und selbst dann wären die Unterschiede subtil).

Was ist das eigentliche Ökosystem von Ruby? Abgesehen von RoR habe ich keine anderen hochgespielten Technologien / Frameworks gesehen.

Ruby on Rails ist ein enormer Teil des Erfolgs von Ruby. Ruby blieb eine unbekannte Sprache, bis RoR eingeführt wurde. Es gibt viele interessante Projekte, die auf Ruby basieren, aber nichts kommt dem Erfolg und der Akzeptanz durch die Community nahe. Es gibt CMS, die auf RoR basieren und bekannt sind. Lovd von Less zum Beispiel.

Angenommen, es gibt eine bestimmte Art von Projekten, die ideal für Ruby sind. Gibt es einen Moment, in dem es besser ist, sie auf PHP zu verschieben?

Der einzige Fall, den ich mir vorstellen kann, ist direkt nach dem Prototyping mit Ruby, wenn Sie der Meinung sind, dass PHP zu einer schnelleren Entwicklung führen würde. Aber wie wollen Sie ein einmal gestartetes Projekt auf PHP verschieben? Den gesamten Code portieren, der geschrieben wurde?

Wäre es schließlich und vor allem vernünftig, Projekte in zwei Sprachen zu führen?

Wenn Sie keine Panzerfaust auf Ihren Kopf haben, absolut nicht.
Wenn Sie zwei völlig unterschiedliche Projekte in zwei verschiedenen Sprachen pflegen wollen, dann absolut. Ich glaube nicht, dass Sie jemals lange Zeit mit derselben Sprache arbeiten werden. Zum Beispiel hüpfe ich ständig von Sprache zu Sprache. Ich beherrsche nur wenige, aber ich kenne genug von den anderen, um mich aus jeder Situation zu befreien (bis jetzt). Ich bin freiberuflich tätig, daher haben Menschen, die in Unternehmen arbeiten, möglicherweise eine andere Erfahrung. Mein Punkt ist jedoch, dass die Pflege verschiedener Projekte in verschiedenen Sprachen einfach (genug) ist und Spaß macht.

Xananax
quelle
2
Ich habe erst kürzlich gelesen, dass stackxchange auf ASP.NET MVC basiert. Nicht, dass es Meerjungfrau für Ihren Beitrag ist, aber ich dachte, ich würde es erwähnen.
Kinakuta
Sie haben Recht, ich werde meinen Beitrag bearbeiten, um das zu korrigieren.
Xananax
+ 1 für "Wenn Sie keine Panzerfaust auf Ihren Kopf haben, absolut nicht." Das Mischen von Sprachen im selben Projekt ist problematisch, da jeder Betreuer des Projekts beide kennen muss und es schwierig ist, einen Entwickler zu finden, der in beiden Sprachen gut genug ist. Wenn es eine klare Trennung zwischen jedem Teil gibt (wie z. B. Back-End und Front-End), kann dies natürlich eine Entschuldigung haben. Aber es ist wie Probleme anzurufen.
Carlos Campderrós
Ich meinte nicht ein einziges Projekt in beiden Sprachen, sondern einige Projekte in PHP und einige in Ruby.
Dukeofgaming
Mein schlechtes dann. Ich weiß nicht, ob Ihre Frage unklar ist oder ob ich unter dem Einfluss meiner Arbeit stand (Markup-Engine in PHP mit Vorschau in JS - genau wie Stackxchange -, also zwei Parser in zwei Sprachen, die genau dasselbe ausgeben müssen Ergebnis). Wenn Sie verschiedene Projekte in verschiedenen Sprachen haben wollen, dann natürlich absolut. Ich brauche immer ein paar Tage, um eine Sprache zu lernen, die Sie seit einiger Zeit nicht mehr benutzt haben, aber sie kommt sehr schnell zurück.
Xananax
0

Denken Sie beim Lesen daran, dass ich ein Ruby on Rails-Entwickler bin und von diesem Ökosystem aus antworte. Meine Ansichten werden in diese Richtung geneigt sein.

Würde ein PHP-Programmierer Ruby lernen wollen? Ich weiß, dass ich es tue, aber umgekehrt würde ein Ruby-Programmierer PHP lernen wollen?

In den meisten Fällen absolut nicht. Nicht nur, weil ich PHP nicht mag (ich nicht, aber ich benutze es), sondern weil die Tool-Sets grundlegende ideale Unterschiede aufweisen. Es gibt viele Tools wie Rake und Rspec, die bei einigen von TDD in der Rubinwelt helfen. In den meisten Ruby-Tutorials (und sicherlich auch in Rails) steht das Testen an erster Stelle. Das heißt nicht, dass Sie dies in PHP nicht tun können, es ist nur so, dass Konventionen unterschiedlich sind. Und die konventionellen Unterschiede zwischen den beiden Sprachen sind im Allgemeinen direkt entgegengesetzt.

Welche Arten von Projekten oder Situationen wären für Ruby besser geeignet, die nicht für PHP geeignet sind?

Desktop-Anwendungen, Shell-Skripte, MVC-Apps (wieder Rails) und kleine Konsolenanwendungen. Nicht, dass dies mit PHP nicht möglich wäre, Ruby hat einfach eine bessere Unterstützung. Wenn ich eine Rails-App schreibe (sorry), schreibe ich oft ein einziges Skript in Ruby. Dadurch können meine Bereitstellungs- oder Setup-Skripte in derselben Sprache wie meine Anwendung sein, wobei ich mit PHP niemals versuchen würde, ein Shell-Skript in PHP zu schreiben. Ich würde nur Bash verwenden. Ich habe Ruby QT-Apps und MVC-Apps (sowohl Rails als auch nicht) und Ruby geschrieben, und die umgebenden Bibliotheken funktionieren in diesen Fällen einfach "besser".

Was ist das eigentliche Ökosystem von Ruby? Abgesehen von RoR habe ich keine anderen hochgespielten Technologien / Frameworks gesehen (ich habe RSpec gesehen, aber ich gebe zu, ein absoluter Neuling darüber zu sein, woraus BDD wirklich besteht und welche Auswirkungen es hat).

Dies ist eine Art Missverständnis. RoR ist beliebt, weil es seine Arbeit gut macht, aber es gibt möglicherweise andere Toolsets / Stacks, die im Kern Ruby verwenden. Sie sind weniger beliebt, weil sie einen Raum betreten, der bereits Alternativen bietet. Ich jedenfalls schreibe gerne schnelle GUI-Anwendungen in Ruby. Aber Python, C #, VB, LISP usw. usw. können dies bereits. RoR war ein Game Changer. Daher ist es beliebt. Das gleiche gilt für PHP, nennen Sie ein beliebtes PHP-Framework. Es gibt einige, aber entfernen Sie Produkte (wie WordPress) aus der Liste, und Sie haben nicht mehr viel übrig.

Angenommen, es gibt eine bestimmte Art von Projekten, die ideal für Ruby sind. Gibt es einen Moment, in dem es besser ist, sie auf PHP zu verschieben? Ich weiß, dass PHP mit vielen Dingen umgehen kann, aber ich habe gelesen, dass Ruby beim Skalieren seine Grenzen hat (oder ist das RoR? Oder ist das Quatsch für beide?)

Dies ist eine knifflige Frage und Sie müssen sich fragen, welche Sprache für mein Projekt besser ist. Ich würde niemals einen Blog in Rails schreiben. Ich weiß, dass dies das Standard-Tutorial-Beispiel ist, aber wenn Sie ein Blog möchten, ist WordPress das richtige Werkzeug. Gleiches gilt hier. Wenn Sie auf ein solides Beispiel für die Notwendigkeit stoßen, Sprachen von Ruby wegzuschalten, schließen die technischen Einschränkungen, mit denen Sie konfrontiert sind, auch PHP aus.

Schließlich und vor allem, wäre es vernünftig, Projekte in zwei Sprachen zu pflegen? Oder ist das einfach nur dumm? Wie gesagt, es sieht so aus, als ob Ruby kurzfristig schlanker ist und das kann dazu führen, dass ein Projekt zustande kommt und erfolgreich ist, aber ich bin mir auf lange Sicht nicht so sicher.

Ruby ist auf lange Sicht großartig. Das größte Hindernis für den langfristigen Erfolg ist nicht die Sprache, sondern der Entwickler. Die Verwaltung von zwei Sprachen hängt davon ab, wie Sie ein Projekt definieren. Ich habe ein paar Projekte, die eine starke Anwendung in Schienen haben, und einen Blog oder eine Verkaufsseite, die WordPress / Dupral / einige PHP verwendet. Ich betrachte sie als separate Projekte. Ich werde sagen, je mehr Sprachen Sie unterstützen, desto schwieriger ist es, einen guten Entwickler zu finden, der in allen Sprachen gut ist. Zum Beispiel verwende und empfehle ich WordPress, aber ich bin in PHP nicht annähernd so "gut" wie in RoR. Wenn ein Kunde wirklich die Hälfte seines Kernprodukts in PHP und die Hälfte in RoR haben wollte, müsste ich wirklich herausfinden, warum und abhängig von seiner Antwort würde die Arbeit wahrscheinlich ablehnen.

coteyr
quelle