Wie kann man das Paradigma „PHP ist eine schlechte Sprache“ durchbrechen? [geschlossen]

19

PHP ist keine schlechte Sprache (oder zumindest nicht so schlecht, wie manche vermuten). Ich hatte Lehrer, die nicht einmal wussten, dass PHP objektorientiert ist, bis ich es ihnen sagte. Ich hatte Kunden, die uns sofort misstrauten, wenn wir sagten, wir seien PHP-Entwickler und fragten uns, ob wir keine schicken Sprachen und Frameworks wie Django oder RoR oder "Enterprise and Solid" -Sprachen wie Java und ASP.NET verwenden.

Facebook basiert auf PHP. Es gibt viele solide Projekte wie Joomla und Drupal, die im Unternehmen und in Regierungen zum Einsatz kommen. Es gibt Frameworks und Bibliotheken mit einigen der besten Architekturen, die ich in allen Sprachen gesehen habe (Symfony 2, Doctrine). PHP hat die beste Dokumentation, die ich gesehen habe, und eine große Community von Fachleuten.

PHP verfügt über fortschrittliche OO-Funktionen wie Reflection und Interfaces, ganz zu schweigen davon, dass PHP nun die native und saubere horizontale Wiederverwendung durch Merkmale unterstützt .

Es gibt schlechte Programmierer und Script-Kiddies, die PHP einen schlechten Ruf einräumen, aber gleichzeitig die PHP-Community an die Macht bringen, und weil es so einfach ist, Dinge zu erledigen, kann man die Dinge oft auf die falsche Weise machen, aber warum die Schuld geben Sprache?.

Nun, um das auf eine tatsächlich beantwortbare Frage zu bringen: Was wäre ein gutes, solides, kurzes und süßes Argument, um nicht verpönt zu werden und Vorurteile auf einen Schlag zu unterdrücken und Ihre Ehre zu verteidigen, wenn Sie sagen, Sie seien ein PHP-Entwickler? .

(Gratis-Keks mit der Schlagsahne für diejenigen, die empirisch nachweisen können, dass sie jemanden - Kunden oder andere - sofort überzeugen)

PS: Wir verwenden Symfony und der Code ist schön und wartbar

PPS: Facebook ist in PHP geschrieben, über HipHop in C ++ kompiliert und auf Hadoop implementiert. Hier: http://arstechnica.com/business/2012/04/exclusive-a-behind-the-scenes-look-at-facebook-release-engineering/1/

dukeofgaming
quelle
9
Für den Anfang markieren Sie alle snarky Anti-PHP-Kommentare zu Programmierern. Es gibt mindestens einen PHP-Entwickler unter den Moderatoren, der es wirklich liebt, diese zu löschen ...
yannis
23
Schreiben Sie guten PHP-Code
Charles Sprayberry
42
Nur eine Anmerkung, ich HASSE es wirklich, wenn PHP-Leute das Argument "FB baut auf PHP auf" einbringen. Das ist bs, es basiert auf massiv verteilten Systemen wie Hadoop und die Teile, die wirklich Dinge erledigen, sind in C. PHP wird für das Templating verwendet und die Benutzeroberfläche, das ist kaum genug zu sagen, "FB ist auf PHP gebaut" ...
TC1
10
@NB Ja, aber in diesem Fall sagt IMHO, dass "FB auf PHP aufgebaut ist", dass StackOverflow auf CSS und JavaScript aufgebaut ist, weil es hier und da einige nette UI-Berührungen hat ...
TC1
13
Ich würde Sie nicht einstellen, weil ich keinen PHP-Code pflegen möchte. PHP gewinnt Funktionen wie Perl und JavaScript und andere übereilte Sprachen, aber sein Kern wurde in Eile entworfen und das kann man nicht ändern. Vielleicht solltest du überlegen, ein bisschen Django und RoR und Grails zu lernen und damit sprachunabhängig zu sein.
Job

Antworten:

40

Die einzige Antwort, die ich habe, ist folgende: Alles ist zum Kotzen.

Sie können Tonnen von Argumenten finden, die gegen OOP sprechen (eine schnelle Suche wird sie aufdecken), im Gegensatz zu funktionaler oder prozeduraler Programmierung. Sie scheinen darauf hinzuweisen, dass die OO-Unterstützung von PHP dies verteidigt.

Google leer saugt und Sie werden Ergebnisse für alles finden. Python ist zum Kotzen . Ruby ist zum Kotzen . Rails ist scheiße . PHP ist zum Kotzen . Java ist zum Kotzen .

Sie wollen wissen, was wirklich scheiße ist? Programmierer. Programmierer saugen. Jeder gute Entwickler sollte in der Lage sein, eine erstaunliche Anwendung, ein Front-End und ein Back-End, unabhängig von der Sprache zu erstellen - auch wenn er nicht mit der Sprache vertraut ist! (Das heißt, ein guter Programmierer sollte in der Lage sein, mit jeder Sprache effektiv zu lernen und zu arbeiten.)

Beachten Sie auch, dass der Erfolg einer Anwendung nichts mit ihrem Code zu tun hat. Ich habe gehört, dass Facebook-Code schrecklich ist, aber von Gott ist es effektiv. Gleiches gilt wahrscheinlich für Wikimedia (Wikipedia basiert auf PHP und ist auch eine äußerst beliebte Website). Was wirklich zählt, sind die Ergebnisse!

PHP ist die Sprache, die ich persönlich am besten kenne. Ich werde es bis zum Tod verteidigen. Ich habe mit PHP-Frameworks, direktem PHP-Code und PHP, Python und Ruby (und sogar Java) für die Webentwicklung gearbeitet. Ich kann nicht sagen, dass einer besonders besser ist als der andere. Was mehr zählt, sind die Entwickler und die Algorithmen. Ich habe erstaunlich guten und völlig schrecklichen Code in vielen Sprachen gesehen (besonders PHP, da ich so viel Erfahrung habe).


Nun zu Ihrer Frage: Es kommt darauf an, mit wem Sie es zu tun haben

Geschäftsleute

Ihnen geht es vor allem um Ergebnisse und Wirtschaftlichkeit. Die Tatsache, dass Facebook, Wikipedia und Wordpress sehr erfolgreich PHP verwenden, sollte mehr als genug sein, um sie davon zu überzeugen, dass es eine effektive Sprache für die Erstellung erfolgreicher Anwendungen ist.

Programmierer

Lassen Sie Ihren Code für sich selbst sprechen. Wenn ein Entwickler sagt, dass PHP in irgendeiner Weise minderwertig ist, zeigen Sie ihm PHP-Code, den Sie für effektiv halten. Der Beweis für den Pudding liegt im Essen.

Explosionspillen
quelle
8
"Jeder gute Entwickler sollte in der Lage sein, eine erstaunliche Anwendung zu erstellen, Front-End und Back-End, unabhängig von der Sprache" - wiederholen Sie dies, nachdem Sie es in Malbolge ausprobiert haben.
Michael Borgwardt
5
Ich glaube nicht, dass ein guter Programmierer guten Code in einer Sprache schreiben kann, die er nicht kennt. Anständig vielleicht, aber nicht gut. Das liegt daran, dass das Schreiben von gutem Code in jeder Sprache gute Kenntnisse der Bibliotheken und der Sprache selbst erfordert.
SVICK
4
Ich stimme dir nicht zu; Ein guter Entwickler sollte in der Lage sein, sich mit dem notwendigen Wissen vertraut zu machen, um gute Anwendungen zu schreiben. Gute Kenntnisse über Bibliotheken und Syntax sind wichtig, aber ein guter Entwickler kann dies leicht erlernen. Was viel schwieriger ist, sind Algorithmen und Konzepte (und wahrscheinlich Geduld). Auch wenn die Sprache Malbolge ist. Oder ich denke an einen großartigen Entwickler.
Explosion Pills
7
success of an application has nothing to do with its code<- Richtig. Aber wenn Leute sagen, dass "PHP eine schlechte Sprache ist", meinen sie nicht, dass "in PHP geschriebene Anwendungen schlecht sind", sondern dass "in PHP geschriebene Anwendungen aufgrund von Code-Spaghetti oft keinen Spaß machen". Es gibt natürlich großartige Anwendungen, die in PHP geschrieben sind. Aber ich glaube nicht, dass diese Antwort das anspricht, was Programmierer meinen, wenn sie PHP als "schlecht" bezeichnen.
Billy ONeal
2
@BillyONeal Was ist Ihre Metrik dafür, ob eine Sprache "gut" oder "schlecht" ist? Anwendungen sind alles .. niemand kümmert sich um Code . Linus Torvalds schimpfte darüber, wie schrecklich C ++ ist - man kann sagen, dass alles schlecht ist, weil einige Programmierer schlechten Code darin schreiben.
Explosion Pills
20

PHP hat eine schmutzige Geschichte. Es ist jetzt viel besser, als es noch vor kurzem war, aber es gab eine Zeit, eine sehr lange Zeit, in der viele schlechte Praktiken und Muster gefördert wurden und schwer zu vermeiden waren. Es gibt eine ganze Generation von schrecklichem PHP-Code, der immer noch im Umlauf ist, und in dem Maße, wie neue Programmierer durch das Lesen von altem Code lernen, lernen sie schlechtes Benehmen. PHP hat jetzt vielleicht nicht den Ruf eines schwarzen Endes verdient, aber es hat es sich trotzdem verdient.

Um PHP zu verteidigen, ist es am besten, den aktuellen Stand der Technik sorgfältig von der Geschichte zu trennen, mit der jeder vertraut ist. Sie können sagen, dass PHP keine schreckliche Sprache ist, aber wenn Sie mit jemandem sprechen, der seit einigen Jahren in der Branche tätig ist, sagt Ihnen das Gedächtnis etwas anderes.

Zeigen Sie ihnen, wie das PHP-Team aus ihren Fehlern gelernt und die Sprache zum Besseren verändert hat. Vorbei sind die Tage der magischen Zitate und Registerglobalen. Vorbei ist das Global-Everything-Paradigma und der abgesicherte Modus sowie mysql_escape_string. Erklären Sie ihnen, dass echte PHP-Programmierer immer Namespaces und parametrisierte Abfragen verwenden, veraltete Funktionen vermeiden und ihren Bibliothekscode immer außerhalb des Dokumentstamms ablegen.

PHP hat sich geändert, und PHP-Programmierer haben sich geändert. Aus diesem Grund ist PHP die wunderbare Plattform, die es heute ist. Es ist auch die einzige Plattform, von der Sie wissen, dass Ihre Kunden sie vorinstalliert haben. Das ist riesig.

Als Randnotiz empfehle ich, vorhandene CMS-Engines und Frameworks nicht als großen Gewinn für PHP zu bezeichnen. Sie laufen Gefahr, dass sie auf Dinge wie die Websense-Sicherheitsstudie von vor 4 Tagen hinweisen, aus der hervorgeht, dass 94% der jüngsten Website-Infektionen gegen PHP-Websites gerichtet waren, auf denen Software wie Joomla und Wordpress ausgeführt wird. Das ist nicht die Art von Firma, mit der man gesehen werden möchte. Stattdessen weist darauf hin , dass der Code seinen Weg sicherer als alles anderen Sachen.

tylerl
quelle
1
+1 - aber - aber - Die Behauptung, dass Ihr Code "weitaus sicherer" ist als Code-Peer-Reviews von mehreren Fachleuten, wird niemandem, der bereits Erfahrung mit Sicherheit hat, wirklich viel Wasser reichen. Jeder schreibt Sicherheitslücken. Der Trick besteht nur darin, sie den Bösen einen Schritt voraus zu machen.
Billy ONeal
@ BillyONeal yep. Der letzte Absatz ist gemeint , Sie als wenig zu schlagen ... seltsam, und Sie machen wirklich Umdenken Ihre Herangehensweise an Sicherheit. Ich habe viel über die Sicherheit von PHP im Vergleich zu Nicht-PHP-Webanwendungen recherchiert, und die Berichte sind beunruhigend, massiv gegen PHP gerichtet. Das heißt nicht, dass PHP schlecht ist, aber Sicherheit ist ein echtes Problem.
tylerl
1
"Außerdem ist es die einzige Plattform, von der Sie wissen, dass Ihre Kunden sie vorinstalliert haben." Diese Aussage scheint mir völlig falsch zu sein. Nicht jeder bereitgestellte Server ist mit einem LAMPhp-Stack ausgestattet PHP vorinstalliert. Jede Linux-Distribution, die ich jemals verwendet habe, wird jedoch mit Python 2.x ausgeliefert. Ich vermute, dass einige gängige Dienstprogramme darauf vertrauen.
ThorSummoner
9

PHP ist das COBOL des Webs. Beide Sprachen haben keinen Respekt, dennoch bauen und warten viele Menschen Systeme, die in ihnen geschrieben sind, und sie sind in nahezu allen wichtigen Computersystemen für ihre Heimatwelt ( dh das Web bzw. das kommerzielle Geschäft) in großem Umfang vorhanden . Auf beide Sprachen wird von Praktikern anderer, populärerer Sprachen herabgesehen, die größtenteils auf alten und veralteten Gewohnheiten basieren, die von Programmierern praktiziert wurden, die seitdem besser gelernt und ihre Werkzeuge verbessert haben.

PHP sollte so viel Glück haben, dass es das Leben von COBOL lebt. COBOL gibt es schon länger als alles andere als FORTRAN, und es wird nicht so bald verschwinden. Es gibt viele COBOL-Programme im täglichen Gebrauch, die älter sind als die Leute, die sie warten. Es mag nicht "die neue Schärfe" sein, aber es gibt immer Geld, das man verdienen kann, wenn man daran und damit arbeitet.

Ross Patterson
quelle
4

Ich denke, es kann auch nützlich sein, die andere Seite der Medaille zu verstehen und die Defizite von PHP zu erkennen. Obwohl PHP von einer Vorlagensprache weit fortgeschritten ist, gibt es noch viele Dinge, die verbessert werden könnten. Es gibt einige Punkte, an denen PHP noch fehlt: Unicode, Funktionsmerkmale, Organisation der Standardbibliothek arrayusw.

Was ich vorschlage ist, dass - um eine konstruktive Diskussion über die Stärken und Schwächen von PHP zu führen - es gut sein könnte, all dies anzuerkennen. "Ja, ich weiß, dass die PHP-Standardbibliothek nicht sehr gut organisiert ist. Wenn sie jedoch heute geschrieben würde, könnten Namespaces und objektorientierte APIs verwendet werden." "Ja, ich weiß, dass das Standard-Array durch das Mischen von Wörterbuch- und Array-Strukturen ein wenig Chaos verursacht. Aber wenn man bessere Sammlungen haben möchte, kann man die SPL verwenden."

Ihre Sichtweise wird stärker, wenn Sie zeigen, dass Sie wissen, dass die Argumente der anderen einen Grund haben.

Andrea
quelle
2

Warum?

Jeder, der Ihnen das Gefühl gibt, Sie müssten sich verteidigen (ob Karriere, Ehepartner, Ausgabengewohnheiten usw.), verschwendet seine eigene Zeit. Wenn Sie sich die Zeit nehmen, sich zu verteidigen, belustigen Sie einfach die falsche Art von Leuten - jetzt verschwenden Sie Ihre eigene Zeit und auch ihre.

Schneiden Sie diese Leute aus Ihrem Leben - Sie sind ohne sie besser dran.

JK
quelle
4
Die Antwort ist also, es persönlich zu nehmen und es zu ignorieren. Dies ist ein kulturelles Problem. Ich gehe es lieber an und versuche, meine Argumente besser und prägnanter zu formulieren, um Unwissenheit abzubauen.
dukeofgaming
3
In einem Vakuum stimme ich Ihrem Rat hier zu, aber PHP ist nicht zu rechtfertigen. Ich wundere mich immer, wie es Mark Zuckerberg trotz der Schrecklichkeit von PHP gelungen ist: codinghorror.com/blog/2008/05/…
Jim G.
1

Es gibt keinen kurzen und süßen Einzeiler, mit dem Sie die Leute von der Würdigkeit von PHP und seinen Entwicklern überzeugen können, aber Sie haben ein sehr überzeugendes Argument geschrieben, bevor Sie die Frage gestellt haben.

CFL_Jeff
quelle
1

Um das Problem "PHP ist eine schlechte Sprache" anzugehen, müssen Sie herausfinden, warum die betreffende Person dies für eine schlechte Sprache hält. Vielleicht hat er an einem in PHP geschriebenen schlechten Projekt gearbeitet. Vielleicht mag er es einfach nicht, ihren Variablen ein Präfix zu setzen $. Vielleicht haben sie selbst versucht, die Sprache zu benutzen, und unhaltbares Durcheinander geschrieben. Viele Programmierer, die aus anderen Programmiersprachen stammen, sehen PHP und sehen ein Durcheinander, weil das, was in PHP Sinn macht, in einer anderen Sprache oder auf anderen Plattformen keinen Sinn ergibt. Beispielsweise sind Arrays in PHP das "Klebeband des Universums" und werden verwendet, um so ziemlich alles zu erreichen, während dies in anderen Programmiersprachen absurd wäre.

Ich würde hier eine Kombination der Antworten vorschlagen.

  1. Wie tylerl sagte, muss man zeigen, dass modernes PHP deutlich besser ist als ältere Cousins. Vorbei ist die Bosheit von create_function. Vorbei ist der Dschungel des includemanuellen Telefonierens .
  2. Bestätigen Sie, dass PHP fehlerhaft ist. Es gibt Fehler in jeder Programmiersprache. Wenn Sie etwas anderes sagen, werden viele ernsthafte Programmierer Ihre Antwort als "Fanboi" völlig ignorieren.
  3. Zeigen Sie Menschen Dinge, die in PHP einfach sind und die in anderen Programmiersprachen schwierig sind. Programmiersprachen sollen einige Aufgaben vereinfachen, was andere Aufgaben zwangsläufig erschwert. C? Speichermanipulation und Bit-Hacks sind wirklich einfach und die Sprache ist wirklich einfach, aber die Pflege großer Anwendungen ist schwierig. Java? Hat nicht free, und alles ist "OO-ish", aber die Laufzeit ist groß und OO kann einschränkend sein. C ++? Ermöglicht das Erstellen von Typen, die sich in der Sprache genau wie primitive Typen (z. B. int) verhalten, die jedoch sehr komplex sind. PHP? Erleichtert den Einstieg ohne große Programmierkenntnisse, hat jedoch sehr viel Müllcode im Internet veröffentlicht.
  4. Erkennen Sie nicht-sprachliche Vorteile von PHP an. Es gibt immer noch viele Dinge in PHP, als eine Sprache, mit der es ... ärgerlich sein kann, zu arbeiten. Aber es ist einfach zu konfigurieren, einfach bereitzustellen und verfügt über eine große Anzahl großartiger Bibliotheken, in die Sie ohne großen zusätzlichen Aufwand einbinden können.

Es gibt einen Ort für jede Sprache. Wählen Sie die Sprache, die dem jeweiligen Problem entspricht, und versuchen Sie nicht, eine bevorzugte Sprache an Orte zu bringen, an die sie nicht gehört.

Billy ONeal
quelle
1
-1: Warum versuchst du PHP zu verteidigen? Es ist scheiße
Jim G.
1
@JimG .: Weil das vom OP verlangt wurde. Ich spiele hier den Anwalt des Teufels. Ich hasse es wirklich, selbst mit PHP zu arbeiten. Nur weil die Arbeit mit einem System ärgerlich ist, heißt das noch lange nicht, dass es an diesem System nichts Gutes gibt. Man kann sogar von großen Spielern lernen. :)
Billy ONeal
@BillyONeal Warum hasst du es, damit zu arbeiten? Die Dinge selbst entscheiden.
Johnny
@Johnny: Meistens ist es nur eine Skriptsprache, die sich schlecht zum Erstellen großer Systeme eignet. Skriptsprachen eignen sich hervorragend für die schnelle Erstellung von Prototypen, sind einfach bereitzustellen und werden mit großen Standardbibliotheken geliefert. Das Erstellen großer Systeme mit ihnen führt jedoch häufig zu nicht zu wartendem Chaos, da es nicht möglich ist, Überprüfungen und Einschränkungen bei der Kompilierung durchzusetzen. Gerade die Dinge, die PHP flexibel und gut für Skriptszenarien machen (z. B. Variablen sind untypisiert), machen es schwierig, Systeme mit mehr als ein paar Leuten zu erstellen, die eine Komponente verwenden.
Billy ONeal
@Johnny: Zur Klarstellung - ich sage nicht, dass es unmöglich ist, große Systeme mit PHP zu erstellen - sind Facebook und Co. der Beweis dafür, dass dies sehr gut möglich ist. Dies ist jedoch schwieriger als bei Sprachen, die eine bessere Syntax für die Kompilierungszeit und semantische Prüfungen bieten.
Billy ONeal