Sprachkrieg PHP vs. Ruby

Es ist Zeit; Schlage das "Going the Distance" -Thema von Rocky ein. Im roten Ring: Envato-Entwickler der Extraklasse, Ryan Allen, der mit seinen kalten bloßen Händen den ursprünglichen FlashDen baute. In der blauen Ecke: Michael Wales, ein bekanntes Mitglied der PHP- und CodeIgniter-Community. Der Kampf? PHP vs. Ruby. Kämpfen!


Bevor wir anfangen

Es ist anzumerken, dass diese Art von Debatten nur zu Spaß- und Bildungszwecken dienen. Es gibt Zeiten, in denen Sie PHP für ein Projekt auswählen, und manchmal, wenn Sie sich für Ruby entscheiden. Das Ziel dieser Serie ist es jedoch zu lernen Wie und wann diese Art von Entscheidungen zu treffen. Anstatt "Ihre Sprache ist scheiße", sollen diese Debatten skizziert werden Warum Sie können in bestimmten Situationen eine der anderen wählen.


Die Anwärter

Ruby: Ryan Allen

Ryan Allen ist ein Ingenieur für Web-Software und -Systeme, der seit Ewigkeiten für Envato arbeitet. Er baute und unterstützte die frühen Versionen der Envato Marketplaces in Ruby on Rails und kümmert sich jetzt unter anderem um die Tuts + -Systeme.

PHP: Michael Wales

Michael Wales ist ein Webentwickler für US-Regierungsbehörden und leistet einen aktiven Beitrag für die PHP- und CodeIgniter-Community.


Und? Start!

1 - Wie gut kennen Sie sich mit PHP und Ruby aus??

Ryan: PHP war eine der ersten Programmiersprachen, mit denen ich gearbeitet habe (abgesehen von ActionScript und einigen sehr kurzen Visual Basic-Dateien). Ich habe 2001 angefangen, mit PHP zu arbeiten. Bis Ende 2005, als Ruby (und Rails) seinen Platz einnahmen, arbeitete ich ziemlich ausschließlich mit Backend.


Michael: PHP war meine Einführung in die Welt der Webentwicklung im Jahr 1999 - daher möchte ich sagen, dass ich ein ziemlich solides Verständnis seiner Position in unserer Branche, ihrer Geschichte und ihrer Richtung habe. Ruby fiel wie viele andere mit der Veröffentlichung von Rails und dem Erfolg von 37signalen auf. Ich habe ein ziemlich solides Verständnis von Ruby, als Skriptsprache für meine Systemadministrationsaufgaben (Capistrano) sowie einige persönliche und unterhaltsame Projekte (die Gosu-Bibliothek für Spieleentwicklung und Rails). Ich schäme mich zuzugeben, dass ich mit den neuesten Versionen von Rails nicht so vertraut bin, und es ist definitiv auf meiner Liste von Dingen, mit denen ich mich neu auskennen muss.


2 - Haben Sie das Gefühl, dass Ihre Sprache für Anfänger oder Fortgeschrittene geeignet ist? Wenn ich zum Beispiel relativ neu in der Branche bin, hätte ich mehr Schwierigkeiten, PHP oder Ruby zu lernen?

Michael: Leider kann ich keine endgültige Antwort darauf geben - zumindest nicht so, wie Sie es erwarten, da PHP und Ruby zwei völlig verschiedene Biester sind. PHP ist eine Verschmelzung von Sprache und Web-Framework in einem Paket, während Ruby eine Programmiersprache mit zahlreichen verfügbaren Frameworks ist.

Wenn Sie sich auf Web-Entwicklung konzentrieren und das ist alles, worauf Sie sich jetzt wirklich konzentrieren wollten, würde ich Ihnen auf jeden Fall empfehlen, PHP zuerst zu lernen.

Wenn Sie sich auf Web-Entwicklung konzentrieren und das ist alles, worauf Sie sich jetzt wirklich konzentrieren wollten, würde ich Ihnen auf jeden Fall raten, PHP aus einer Reihe von Gründen zuerst zu lernen:

  1. Sie benötigen nicht wirklich ein solides Verständnis der Systemadministration oder der Best Practices für die Bereitstellung, um zu lernen, wie man Dinge erledigt. Für praktisch jeden Host, den Sie hochladen, sind Sie fertig.
  2. Sie erhalten ein untergeordnetes Wissen darüber, wie das Web funktioniert. Zum Beispiel, wie eine Anforderung zwischen Client und Server (je nach Anwendung) übertragen wird, welche Funktionalitätssitzungen zur Verfügung gestellt werden, die Einschränkungen von Cookies und der Unterschied zwischen den verschiedenen Anforderungsmethoden.
  3. Auf der Ruby-Seite (und ich werde das Rails-Framework aufgrund seiner immensen Popularität annehmen): Die Bereitstellung kann manchmal sehr schwierig sein (obwohl dies durch Dienste wie Heroku gelindert wird, aber dann die Bildungsmöglichkeiten von Verstehen des niedrigen Niveaus). Ich denke, dieser Mangel an Schulungen auf niedrigem Niveau ist der ultimative Sturz von Rails, sowohl vom Standpunkt der Bereitstellung als auch vom Standpunkt der Entwicklung. Sie können Sitzungen und Cookies schnell und einfach verwenden, unsichere und destruktive Controller erstellen (über die GET-Anforderungsmethode). Nicht, dass Sie diese Dinge auch nicht in PHP machen können, aber Rails fördert dieses Wissen aktiv.

Als Entwickler mit 12 Jahren Erfahrung schätze ich die Abkürzungen, die Rails in unsere Branche bringt. Aber das liegt nur daran, dass ich verstehe, was hinter den Kulissen vor sich geht.

Wenn Sie Entwickler werden möchten (Webentwickler, Skript für Systemadministration, Game Developer, API-Entwickler), der grundlegende Konzepte der Informatik und objektorientierte Programmierung beherrscht und Ihre Fähigkeiten im Bereich Critical Thinking im Allgemeinen weiterentwickelt, versteht sich von selbst. Beginnen Sie mit Ruby, es ist eine eigentliche Programmiersprache (denken Sie daran, PHP ist ein als Sprache getarntes Web-Framework)..

Aus der Sicht eines Web-Entwicklers denke ich, dass dies auch ein Fall von Ruby (und Python's, BTW) ist - gibt es wirklich keine Mittelstufe? Einstiegspunkt. Entweder verstehen Sie das HTTP-Protokoll, mit der Fähigkeit, Ihren eigenen Stack von oben nach unten zu schreiben, oder Sie gehen mit einem der magischen Hände, um ein CRUD-System-Framework zu erstellen?.

Dies ist wirklich der Bereich, in dem PHP glänzt. Wenn Sie die Grenzen von CRUD überschreiten, müssen Sie nicht genau wissen, wie ein HTTP-Server funktioniert, um Ihre Träume Wirklichkeit werden zu lassen.


Ryan: Wenn ich jemandem das Programmieren von Grund auf beibringen würde, würde ich ihm lieber Ruby beibringen (Probleme bei der Einrichtung von Umgebungen - obwohl dies immer einfacher wird). Ein üblicher Weg, um jemanden zu starten (nach vielleicht Variablen und Drucken), besteht darin, Arrays mit einem Beispiel für eine Einkaufsliste zu erklären. Nehmen Sie dieses PHP-Beispiel:

 $ shopping_list = array ('Milch', 'Käse', 'Luftkissenfahrzeug'); für ($ i = 0; $ i < count($shopping_list); $i++)  echo $shopping_list[$i]; 

Als ich PHP lernte, lernte ich die Verwendung von Schleifen (wie in ActionScript), als bereits eine prägnantere und weniger fehleranfällige foreach-Schleife (wie auch in ActionScript) vorhanden war. Ich musste alles über diese $ i = 0-Sache, diese Test-Sache und diese Inkrementor-Sache lernen. Es war alles so verwirrend! Die Anzahl der Male, die ich für Loops vermasselt habe, ist unzählig (kein Wortspiel beabsichtigt). So würde das gleiche in Ruby aussehen:

 shopping_list = ['Milch', 'Käse', 'Luftkissenfahrzeug'] shopping_list.each do | shopping_item | setzt shopping_item zum Ende

Es gibt viel weniger Syntax und Iteratoren sind meiner Meinung nach viel einfacher zu verstehen und damit zu arbeiten. Der Vollständigkeit halber ist hier das PHP-Beispiel, jedoch mit einem foreach:

 $ shopping_list = array ('Milch', 'Käse', 'Luftkissenfahrzeug'); foreach ($ shopping_list als $ shopping_item) echo $ shopping_item; 

Nun, das ist gar nicht so schlimm! Ich denke, man sollte nur für Schleifen verwenden, um bis 10 zu zählen, und so etwas ist foreach so viel einfacher zu lesen und zu lehren und so viel schwerer zu vermasseln. Und Iteratoren sind noch besser, also würde ich mich für Ruby entscheiden.


3 - Viele PHP-Entwickler wechseln nach einigen Jahren zu Ruby. Haben Sie festgestellt, dass dies der Fall ist, und wenn ja, warum glauben Sie, dass es so häufig ist? Was ist das Große? Punkt?

Ryan: Das Verkaufsargument für mich (2005) war das Rails-Framework. Ich hatte mich mit Python in der Web-Entwicklung versucht, aber da ich unerfahren war, hatte ich eine ziemlich schwierige Zeit. Ich wusste nicht, was ich tun sollte oder wo ich suchen sollte (aber es gelang mir, ein paar Dinge zu bauen, nehmen Sie das!), Aber ich wollte es wirklich Verwenden Sie Python täglich, weil ich der Meinung war, dass es ein besseres, bewussteres Design hat und mir die Syntax gefallen hat. Und weil Schlangen cooler sind als Elefanten.

ActiveRecord war einfach unglaublich!

Ich habe noch nie mit etwas anderem als ADODB in PHP gearbeitet und versucht, einen ORM mehrmals zu erstellen und zu scheitern (ich hatte keine Ahnung, was ein ORM ist, aber ich wusste, dass ich etwas wollte, das Klassen irgendwie Datenbanktabellen zuordnet), als ich zum ersten Mal ActiveRecord sah Es war, als wären alle meine Weihnachtskünste gleichzeitig gekommen.

Ich kannte relationale Datenbanken ziemlich gut, aber ich hatte es satt, immer wieder dieselbe SQL zu schreiben. ActiveRecord war einfach unglaublich! Und Ruby war nah genug an Python. Ich war glücklich, als Larry (wer auch immer er ist) einen Rahmen zu haben, mit dem ich mich beschäftigen und damit beginnen könnte, Dinge zu bauen. Für mich war es also die Liebe zu einer Bibliothek und die Liebe zur Syntax.

Heutzutage gibt es jede Menge erstaunlicher Ruby-Bibliotheken, die von talentierten Einzelpersonen geschrieben wurden, wie Sinatra (ein leichtes Web-Framework), Nokogiri (ein HTML / XML-Parser), Sequel (eine High-Level-Datenbankbibliothek), RSpec (eine automatisierte Testbibliothek). Alle diese Bibliotheken können als RubyGems installiert werden, was für mich einfacher und benutzerfreundlicher ist als das PEAR-System von PHP.

Die Community ist immer noch ziemlich lebendig, auch in ein paar Jahren, und Unternehmen stellen Ruby-Entwickler wie Hotcakes ein. Ruby 1.9 ist anscheinend auch fast so schnell wie PHP, daher gibt es viele Verkaufsargumente!

Ruby 1.9 ist anscheinend auch fast so schnell wie PHP, daher gibt es viele Verkaufsargumente!


Michael: Ich denke, dies ist nur eine natürliche Entwicklung von Entwicklern (von Web-Entwicklung zu allgemeinem Wissen über OOP-Sprachen und einer allgemeinen Informatikausbildung) im Allgemeinen - ich weiß, es war der Weg, den ich eingeschlagen habe.

Ich denke, der größte Sturz ist bis heute die Praxis, eine Sprache zu wählen und bis zum Tod daran zu bleiben. So funktioniert die reale Welt nicht.

Ich betrachte mich als? Entwickler? - Sprache ist daher eine mehrdeutige Qualifikation als Fernsehmarke für einen Best-Buy-Verkäufer. Es gibt Fälle, in denen ich PHP auswähle (wenn es eine extrem kurze Zeitleiste gibt - außerhalb von CRUD ist dies die Sprache, in der ich am meisten vertraut bin), gibt es andere, in denen ich Ruby (Bereitstellung über Capistrano oder CRUD mit Rails) und Python - was ich für Serveradministrationsaufgaben und das Analysieren verschiedener Dateien vorziehen.


4 - Oft halten wir unsere derzeitige Sprache für "besser". als der vorige. Aber ist das immer so, oder ist es nur? Neu? Ist es möglich, dass Ihr alter Code schlecht aussieht, weil Sie jetzt ein erfahrener Entwickler sind?

Michael: Ich denke, Entwickler können sehr oft in die "neue Schärfe, alte kaputt" verwickelt werden. Verrücktheit Deshalb setzt sich mein Team immer zusammen, bevor wir ein Projekt beginnen, legen wir die Anforderungen fest (sowohl in Bezug auf Benutzer als auch auf Entwickler) - und dies sind zwei sehr unterschiedliche Dinge -, und wir besprechen dies mit sehr geringen Präferenzen für Sprache und Rahmen . Letzte Woche haben wir ein paar GBs von Messaging-Protokollen mit Perl analysiert. Diese Woche haben wir eine Anwendung erstellt, deren primäre Ansicht ein ExtJS-GridPanel war (da wir CodeIgniter-Kerndateien erweitert haben, die alle Situationen abdecken, die ExtJS mit 3-Zeilen-Code löst.).

Es geht darum, wie viel Zeit wir haben und wie wir in dieser Zeit das beste Produkt produzieren können?


Ryan: Absolut, einige Leute (ich selbst eingeschlossen) gewöhnen sich daran, Dinge auf eine bestimmte Art und Weise zu entwerfen, die sie nicht neu lernen und all ihre hart erarbeiteten Gewohnheiten ändern wollen. Wenn Sie einmal mit etwas produktiv sind, warum sollten Sie es dann ändern??

Eine andere Denkschule ist, je mehr Sprachen und Werkzeuge Sie haben, Sie können die besten Techniken und Ideen kombinieren, egal in welcher Umgebung Sie arbeiten (sie sagen, dass sie LISP lernen, aber ich habe es noch nicht gelernt ).

Junge Programmierer werden sich auf die glänzenden neuen Dinge konzentrieren, aber wenn Sie älter und reifer werden, möchten Sie mit kleinen Tools arbeiten, die einfach und robust sind. Wenn Sie nicht jedes Feature und jede Bibliothek verwenden, die in Ruby verfügbar ist, können Sie ohne viel Aufwand einfach und robust arbeiten.


5 - Gibt es Fälle, in denen Sie Ruby für ein Projekt und PHP für ein anderes verwenden können (vorausgesetzt, Sie haben 100% Kontrolle über die Auswahl)?

Ein Wort: Wartung.

Ryan: Ja, ein Wort: Wartung. Software-Projekte neigen dazu, im Laufe der Zeit Änderungen vorzunehmen, und der ursprüngliche Autor des Programms ist nicht immer die Person, die die Änderungen vornimmt. Nehmen wir an, es werden hypothetisch Teleports erfunden und es gibt eine weltweite Ruby-Konferenz, und jeder fähige Ruby-Entwickler in der Welt geht (Teleports rock!). Nun sagen wir auch, dass die Erde hypothetisch Mittelerde ist, und Smaug, der Drache, ist ziemlich verärgert über diese ganze Ruby-Sache (Drachen bevorzugen Python, sehen Sie) und beschließt, einen Besuch abzustatten und alle Entwickler außer Acht zu lassen. Jetzt gibt es keine erfahrenen Ruby-Entwickler mehr auf der Welt, oh je! Jetzt haben Sie das Problem, dass Ihnen kein Pool von Ruby-Entwicklern zur Verfügung steht, um an Ihren Projekten zu arbeiten. Was machen wir, Gandalf??

Wenn ich Werkzeuge wähle, denke ich oft darüber nach, wer das Projekt aufrechterhalten muss, wenn ich von einem Bus angefahren werde (oder mein Motorrad abstürzt, was wahrscheinlicher ist)..

Ich würde sicherlich nichts in Haskell, LISP oder gar F # schreiben, weil es uns schwer fallen würde, jemanden einzustellen, der daran arbeiten könnte oder würde. Die Verfügbarkeit von Talenten und vorhandenen Talenten in einem Unternehmen beeinflusst dann sehr meine Entscheidung.

Es gibt eine andere Situation, in der ich über die Sprache nachdenken würde, und dies wäre der Fall, wenn ich ein Produkt verkaufe, beispielsweise ein benutzerdefiniertes CMS, das in Code Canyon verkauft wird. Ich würde es nicht in Ruby schreiben, da das Webhosting von Waren im Allgemeinen nicht unterstützt wird. Während PHP ziemlich überall verfügbar ist, sind Webdesigner und weniger erfahrene Programmierer damit vertraut.

Es gibt eine andere Situation, in der ich über die Sprache nachdenken würde, und dies wäre der Fall, wenn ich ein Produkt verkaufe, beispielsweise ein benutzerdefiniertes CMS, das in Code Canyon verkauft wird. Ich würde es nicht in Ruby schreiben, da das Webhosting von Waren im Allgemeinen nicht unterstützt wird. Während PHP ziemlich überall verfügbar ist, sind Webdesigner und weniger erfahrene Programmierer damit vertraut.


Michael: Siehe meine Antworten für # 3 / # 4.


6 - Wenn ich eher ein Designer bin, der sich nur gelegentlich mit der Entwicklungsarbeit beschäftigt, würden Sie trotzdem empfehlen, dass ich mich für Ruby statt für PHP entschieden habe? Denken Sie daran, dass das Terminal für manche etwas Unheimliches ist?

Michael: Ich persönlich würde das Django-Framework für Python empfehlen. Es wurde zu diesem Zweck entwickelt: Die Möglichkeit, die Entwickler so schnell wie möglich an die Datenmodellierung und die Anzeige von Daten auf dem Bildschirm zu binden, mit einfach zu verwendenden Tags, mit denen Designer diese Daten auf eine wunderschöne Art präsentieren können, während die Entwickler fortfahren an den Geschäftsregeln in einem gleichzeitigen Zyklus zu arbeiten.


Ryan: Wenn Sie Erfahrung haben, HTML und CSS zusammen zu werfen und diese mit FTP hochzuladen, würde ich wahrscheinlich PHP empfehlen, da es geringe Eintrittsbarrieren hat, da Sie bereits mit seiner Metapher vertraut sind .php Erweiterung! Los gehts!). Wenn Sie jedoch ernsthaft mit dem Programmieren beginnen, würde ich vorschlagen, auf andere Dinge (wie z. B. Ruby) zu gehen, um Ihren Horizont zu erweitern.

Wenn etwas schief geht, wird dein Mangel an Wissen wiederkommen und dich beißen.

Oft sehe ich PHP-Programmierer, die mit relationalen Datenbanken arbeiten und wenig Verständnis für ihre Funktionsweise haben. Sie können also wirklich Dinge erledigen, ohne ein tiefes Verständnis für die Technologien zu haben, mit denen Sie arbeiten (Sie verwenden PHP nur selten alleine), aber wenn etwas schief geht, wird Ihr mangelndes Wissen wiederkommen und Sie beißen. Wie viel Zeit müssen Sie investieren, um diese Dinge zu lernen? Kannst du jemanden um Hilfe bitten, wenn du feststeckst? Lernen Sie PHP, damit Sie damit arbeiten können oder einfach nur zum Spaß? Wahl ist eine ziemlich offene Frage, abhängig von Ihren Zielen.

In Bezug auf Terminals sind sie, kurz gesagt, FANTASTISCH. Ich benutze sie die ganze Zeit. Ja, sie haben eine Lernkurve (aber was nicht?). Sobald Sie sich damit auseinandersetzen und anfangen, Ihre eigenen kleinen Programme zu schreiben, können Sie nicht ohne sie weitermachen. Um ehrlich zu sein, fand ich die Eingabeaufforderung in Windows nicht sehr nützlich, aber nachdem ich zu einem Mac gewechselt war und Zugriff auf den ganzen * nix-Spaß unter der Haube hatte, wurde er ziemlich produktiv.


7 - Was genau hat Ihre Sprache, die der andere nicht hat - wenn überhaupt??

Ruby hat Hype, Lebendigkeit und Sexappeal.

Ryan: Ich würde sagen, etwas, das Ruby derzeit hat, dass PHP keinen Hype, Lebhaftigkeit und Sexappeal auslöst. Ruby ist eindeutig sexy. Frauen lieben es. Männer wollen so sein. Godzilla fürchtet es. Ich würde vorschlagen, zu einer Ruby-Benutzergruppe zu gehen, und Sie würden eine abwechslungsreiche Gruppe von Leuten finden, die einfach nur Code schreiben, Dinge und Technologie generell lieben. Als ich anfing, Leute in der lokalen Ruby-Community zu treffen, war es das Beim ersten Mal in meinem Leben fühlte ich mich wie bei meinen Leuten.? Ich dachte ehrlich, ich wäre der einzige Programmierer auf der Welt, der sich bis dahin um ihre Arbeit kümmerte. Es war sehr erfrischend und ich habe seitdem viel gelernt, hauptsächlich von den Leuten, die ich durch diese Gruppen getroffen habe.

Hier ist ein Geheimnis: Wenn PHP ein offizielles Update mit einer alternativen Syntax (mehr Ruby / Python) veröffentlicht hat, und die vorhandene Standardbibliothek im Stil der beliebten Ruby-Bibliotheken verpackt (und sie konsistent gemacht hat), war sie abwärtskompatibel und fähig mit altem Code integrieren, wäre es ein Killer-Produkt. Sag niemandem, dass ich das gesagt habe.


Michael: Einfache Bereitstellung, eine anmutige Einführung in die untergeordneten Konzepte der Webentwicklung und über ein Jahrhundert Dokumentation und bewährte Best Practices.


8 - Es ist allgemein bekannt, dass PHP die bei weitem populärste serverseitige Sprache im Web ist. Es ist jedoch auch das am meisten lächerliche. Warum das? Es gibt sicherlich einen Grund, warum es so weit verbreitet ist, richtig?

Michael: Wiederum - einfache Bereitstellung, eine anmutige Einführung in die untergeordneten Konzepte der Webentwicklung und über ein Jahrhundert Dokumentation und bewährte Best Practices.

Aber im Ernst: Aufgrund der niedrigen Eintrittsbarriere bei PHP kann es schwierig sein, den Unterschied zwischen jemandem zu erkennen, der eigentlich weiß, worüber er spricht, und jemandem, der auf dem gleichen Könnensniveau wie Sie ist und eine freie Domäne für einen Blog hatte. Aufgrund der großen Betriebszugehörigkeit von PHP gibt es außerdem eine Menge Inhalt - und nicht alles ist gut.

Dies ist kein einzigartiges Problem von PHP - ein kurzer Blick auf W3Schools.com ruiniert die Träume eines jeden Befürworters von xHTML, JavaScript, CSS oder PHP.

PHP-Entwickler leiden unter einem hier nicht erfundenen Syndrom.?

Wenn Sie eine Sprache lernen, kann es sehr einfach sein, eine für Sie maßgebliche Ressource zu finden (die veraltet sein könnte oder einfach nur falsch ist), und folgen Sie dem, was sie unterrichten. Sie. Dies ist etwas, was die PHP-Community braucht, um sich zu verbessern - das "Richtige" zu verbreiten. Weg, um bestimmte Aufgaben zu erledigen. Ich gebe zu - die Ruby-Community hat den Vorteil, Rick Olson hat die Authentifizierung für alle gelöst, als er das Restful-Authentication-Plugin veröffentlichte. J

PHP-Entwickler leiden in den ersten Jahren unter dem "nicht hier erfundenen Syndrom". - was ich nicht glaube, ist eine schlechte Sache (bis sie anfangen, das zu verkaufen oder an andere weiterzugeben). Ich denke, die Denkweise hinter einem neuen Entwickler, der zum ersten Mal PHP erlebt, ist, dass sie wirklich genau wissen wollen, was los ist - und PHP ist perfekt dafür geeignet, ihnen genug Seil zu geben, damit sie sich aufhängen können. - aufschlussreich genug, um es zu lernen, aber Sie werden sich wahrscheinlich verletzen. Während und ohne dass Rick's Plugin (das ein fantastisches Authentifizierungssystem ist), nicht zu unterschätzen ist, wollen die Rails-Entwickler davon ausgehen, dass dieser Kerl es richtig gemacht hat und weiter macht.


PHP wurde sehr populär, weil es zur richtigen Zeit am richtigen Ort war.

Ryan: Ich würde sagen, dass PHP immens populär wurde, weil es zur richtigen Zeit am richtigen Ort war. Die Alternativen für die serverseitige Entwicklung erforderten damals einiges an Programmierkenntnissen, doch viele Menschen, die sich selbst nie als Programmierer betrachteten, warfen bereits Dinge mit HTML und CSS zusammen. Nach derselben Implementierungsmetapher und einem grundlegenden Verständnis für das Zusammenstellen von Websites könnten Sie mäßig nützliche Programme erstellen und sie auf einem kostengünstigen gemeinsam genutzten Webhost ausgeben. Oder Sie könnten eines herunterladen, das jemand anderes gemacht hat, und es ein wenig optimieren, da HTML und Code vollständig miteinander vermischt wurden.

Eine weitere Sache, die PHP weiterbrachte, war der Aufschwung von Leuten wie dem cPanel-Produkt und Hosting-Providern, die White-Labeling-Webhosting betreiben. Jeder Mann und sein Hund könnten kostengünstig und ohne technische Kenntnisse zum Webhost werden. Jeder Mann und sein Hund wollten eine Website und ein billiges Hosting. PHP und MySQL waren Standard in diesen geteilten Setups und sie waren überall (und sind es immer noch)..

Das Beste "gewinnt" nicht immer, viele Leute sind immer noch verärgert, dass SmallTalk Java verloren hat, obwohl die Leute, die ich getroffen habe (erfahrene Software-Veteranen), die damals dabei waren, sagten, sie fühlten sich in Ruby zu Hause!


9 - PHP wird oft wegen seiner schlampigen Natur kritisiert. Aber ist dies ein Spiegel der Sprache selbst oder der Benutzer, die mit Qualitätscode nicht vertraut sind? Es gibt viele Möglichkeiten, sauberes MVC-basiertes PHP zu schreiben.

Ryan: Das ist nicht sehr schön, aber ich würde sagen, die gängigen Kritikpunkte von PHP sind durchaus gültig und auf die Art und Weise der "Sprache" zurückzuführen. wurde entworfen (oder eher nicht entworfen). PHP wurde aus einer Reihe von CGI-Skripts geboren, die der ursprüngliche Autor in C geschrieben hat (oder war es Perl?), Und der übliche Fall, warum PHP so lief, war so: Ich könnte einen C-Programmierer haben, der Skripte für das Skript schreibt Web in nur wenigen Tagen?.

Ich kann mich nicht erinnern, einen C-Programmierer gebeten zu haben, eine Webanwendung zu erstellen!

Ruby hingegen wurde entwickelt, um das Beste aus einer Reihe von Sprachen herauszuholen, um etwas zu schaffen, mit dem es Spaß machte, mit Smalltalk, Perl, LISP und anderen zu arbeiten, und das zeigt.

Ein sehr großer Unterschied zwischen PHP und Ruby war für mich, dass Ruby Sie dazu ermutigt, mit ihren grundlegenden Datentypen wie Hashes und Arrays zu arbeiten, wo ich sie in PHP nie als normal empfunden habe. Die Anzahl, in der ich die Reihenfolge der Argumente für String und Arrays in PHP nachschlagen musste, ist umwerfend.

Die Anzahl der Male, an die ich mich nicht erinnern konnte, ob diese oder jene Funktion Unterstriche hatte oder nicht, war ebenso ärgerlich. Ich habe Zend IDE verwendet, also musste ich mich nicht erinnern, aber mir gefiel die IDE nicht. Es fühlte sich an, als wären Sie verdammt, wenn Sie es taten, und verdammt, wenn Sie es nicht taten Es gibt keine Konsistenz in der PHP-Standardbibliothek, und es ist frustrierend, wenn ein wütender Bär in einer Telefonzelle ist. In Ruby verbringe ich selten Zeit für die Dokumentation allgemeiner Datentypen, da die häufigen Interaktionen so leicht zu merken sind.

Sobald Sie mit den Funktionen in Ruby's Enumerable-Modul beginnen, werden Sie sich fragen, wie Sie jemals ohne sie gelebt haben, pinky fluchen!


Michael: Ich denke, das spiegelt die niedrige Eintrittsbarriere wider und die Neugier der PHP-Entwickler, wirklich zu verstehen, was los ist. Ich hatte Hunderte von Whitepapers, Blogs und Artikeln über Authentifizierungssysteme gelesen / studiert - aber erst als ich meine eigenen baute, hatte ich wirklich das Gefühl, als wüsste ich, was los ist. Ich bin der Meinung, dass neue PHP-Entwickler gerne teilen, was sie mit dem Rest der Welt gemacht haben, und dass sie häufig dazu gezwungen werden, weil sie sich nicht an bewährte Verfahren oder bewährte Sicherheitsmuster halten.


10 - Gemeinschaft und Dokumentation sind um ein Vielfaches wichtiger als der Rahmen / die Sprache selbst. Wie lässt sich die Community von Ruby oder PHP mit der anderen vergleichen??

Michael: Ich denke, dass sowohl PHP als auch Ruby ernste Probleme in ihrer Dokumentation haben - und das aus völlig entgegengesetzten Gründen.

Dank seines Dienstalters verfügt PHP über unzählige Dokumentationen - Sie können mit einer schnellen Google-Suche die Antwort auf alle Fragen finden und es wird funktionieren. Ist es die beste Lösung? Vielleicht, vielleicht nicht?

Rails ist so schnell gewachsen, dass es mir selbst schwer fällt, mitzuhalten.

Ruby hat eine großartige Dokumentation, aber in Wirklichkeit scheint dies eine Frage des Rahmens gegenüber dem Rahmen zu sein, also nehmen wir Rails an. Rails ist so schnell gewachsen, dass es mir selbst schwer fällt, mitzuhalten. Die Rails-API-Dokumentation ist großartig. Wenn es jedoch um Dokumentation von Drittanbietern (Bücher, Blogartikel, StackOverflow-Antworten) geht, sind sie alle veraltet. Wenn Sie diese Informationen befolgen, ist es sehr schwierig, das Problem zu debuggen und es zu beheben.

In dieser Hinsicht glaube ich, dass PHP den Vorteil hat, dass die einzelnen Frameworks (CodeIgniter, FuelPHP, Kohana, CakePHP usw.) diesen Effekt bis zu einem gewissen Grad abschwächen können. Wenn Sie eines dieser Frameworks verwenden, ist es einfach, die endgültige Antwort zu finden für was Sie suchen.


Ryan: Bei der Verwendung von PHP wurde viel Wert darauf gelegt, wie großartig die Kommentare in der PHP.net-Dokumentation waren. Die Philosophie schien zu sein, "einmal die Dokumentation zu schreiben und die Menschen ihre zwei Cents addieren zu lassen". Das Problem dabei ist, dass die Kommentare in der Reihenfolge der Veröffentlichung angeordnet sind, was bedeutet, dass die guten nicht nach oben gefiltert werden und dass die darin enthaltenen Erkenntnisse nicht (oder überhaupt) in die Dokumentation eingearbeitet wurden..

So viel von der üblichen API ist im PHP-Kern enthalten, was sich nicht so oft ändert. Ich denke, eine Wiki-Lösung wäre angemessener. Auf diese Weise könnte die Community die offizielle Dokumentation modifizieren, Änderungen vorschlagen, Beispiele vorschlagen und das Gut aus den Kommentaren in das, was die Leute zuerst sehen, integrieren. Das wäre nützlich (vor allem für Anfänger).

In Java-Kursen wird zuerst über Polymorphismus informiert und es wird untersucht, was sie tun - mit Klassenhierarchien als erster Schnitt! Es macht mich verrückt!

In Ruby befinden sich viele der häufig verwendeten Bibliotheken auf GitHub, in denen Benutzer kleine Änderungen und Verbesserungen einreichen können, die in einen regulären Veröffentlichungszyklus eingebunden werden. Die Dokumentation wird mithilfe von RDoc (ähnlich wie PHPDoc) im Code gepaart. Wenn Sie einen Edelstein installieren, wird eine Dokumentation auf Ihrem lokalen System erstellt. Für einen Großteil meiner Arbeit lese ich entweder die Kerndokumentation auf rubydoc.info oder lokal auf meinem Computer oder, falls einer von ihnen den Quellcode der Bibliotheken nicht erfüllt.


Fazit

Wir haben Ryan und Michaels Gedanken gehört, und Sie haben ganz sicher Ihre eigenen Ansichten. Setzen Sie die Debatte in den Kommentaren fort!