Wie verhält sich PHP5 mit früheren Versionen der Sprache?

8

Ich möchte PHP für die Webentwicklung lernen, wurde aber aufgrund von Kommentaren wie den folgenden zurückgezogen * :

  • PHP ist gut, generiert aber Spaghetti-Code
  • PHP ist nett, aber Python ist Heiratsmaterial
  • In PHP fehlen Dinge, die Sie in anderen Sprachen wie C # oder Java erhalten

Aber für PHP5 habe ich einige vielversprechende Kommentare gesehen. Meine Frage lautet also: Wie verhält sich PHP5 mit früheren Versionen der Sprache und ist es jetzt gut genug, um für die Webentwicklung zu lernen?

* Kommentare dienen nur als Referenz, um keinen Flammenkrieg auszulösen. Hier wird kein Vergleich von PHP mit anderen Sprachen verlangt. Bitte kommentieren Sie nur PHP5 und wie es mit früheren Versionen verglichen wird.

Pankaj Upadhyay
quelle
8
PHP generiert keinen Spaghetti-Code - schlechte PHP-Programmierer generieren Spaghetti-Code
HorusKol
Warum fügen Sie Kommentare zu PHP und anderen Sprachen hinzu und wie sie Zweifel aufkommen ließen, möchten aber keine Diskussion darüber in den Antworten?
Phant0m

Antworten:

17

Bei der Erörterung von Sprachen fallen immer diese beiden Stroustrup- Zitate ein:

Jeder, der zu Ihnen kommt und sagt, er habe eine perfekte Sprache, ist entweder naiv oder ein Verkäufer.

und

Es gibt nur zwei Arten von Sprachen: die, über die sich die Leute beschweren, und die, die niemand benutzt.

Nun zur Frage. Der größte Teil des Hasses richtet sich hauptsächlich gegen PHP4. PHP5 wurde erstmals im Juli 2004 veröffentlicht (Beta ein Jahr zuvor) und die letzte Version von PHP4 ist 4.4.9, die im August 2008 veröffentlicht wurde . Es gibt keinen gültigen Grund mehr, PHP4 zu verwenden, es sei denn, Sie pflegen eine ältere App. PHP4 wird von der PHP-Gruppe nicht mehr unterstützt, und wir alle hoffen, dass es bald verschwindet.

Die Lücke zwischen den beiden Versionen ist größer als normalerweise zwischen zwei Hauptversionen, da die Engine hinter dem Interpreter von Grund auf neu geschrieben wurde und ein neues Objektmodell enthielt. Die Veröffentlichung von PHP5 fiel ungefähr mit der Veröffentlichung von MySQL5 zusammen, einer umfassenden Überarbeitung von MySQL. PHP ist normalerweise mit MySQL gekoppelt, und die fünfte Version von beiden hat mehrere Probleme behoben und sie mit der Konkurrenz auf den neuesten Stand gebracht. MySQL unterliegt ebenfalls FUD-Kommentaren , aber es ist die Datenbank hinter Googles AdWords .

PHP 5.3 war eine Hauptversion in allem außer dem Namen. Viele Funktionen, die für PHP6 vorgesehen waren, fanden ihren Weg in 5.3 und für jeden 5.2-Entwickler da draußen würde ich dringend empfehlen, früher als später auf 5.3+ zu migrieren. Die aktuelle Version 5.4 enthält (unter anderem) einige großartige Funktionen:

Nun zu Ihren spezifischen Kommentaren:

PHP ist gut, generiert aber Spaghetti-Code

Das ist absolut nicht wahr. Keine Sprache generiert irgendeine Art von Code, es ist immer Sache des Entwicklers, Fehler zu machen. Spaghetti-Code ist in jeder Sprache möglich. Was jedoch stimmt, ist, dass PHP im Vergleich zu anderen gängigen Sprachen eine sehr niedrige Eintrittsbarriere aufweist. Daher ist es für unerfahrene Entwickler viel einfacher, schlechten (aber funktionierenden) Code zu schreiben. Aber das ist ein Nebeneffekt jeder leicht zu erlernenden Sprache.

Darüber hinaus erzwingt PHP keinen bestimmten Stil oder ein bestimmtes Paradigma, und es liegt immer an Ihnen, zu entscheiden, was zu tun ist. Ich habe das immer als eine gute Sache angesehen, während andere es als einen gültigen Kritikpunkt ansehen. Sie müssen selbst entscheiden.

PHP ist nett, aber Python ist Heiratsmaterial

In PHP fehlen Dinge, die Sie in anderen Sprachen wie C # oder JAVA erhalten

Ja tut es. Und in der Allzwecksprache X fehlen viele Dinge, die Sie in PHP bekommen. Zum Beispiel portabel über Betriebssysteme UND über http-Server hinweg und Unterstützung für jede denkbare Bibliothek von Drittanbietern, die in einer Webentwicklungsumgebung nützlich wäre. Sie müssen verstehen, dass PHP an nichts Wichtigem mangelt , wenn es so wäre, wäre es vor langer Zeit gestorben. Der Vergleich zwischen der Allzwecksprache X und anderen Mehrzwecksprachen mit PHP ist ein Irrtum, Äpfel und Orangen. Obwohl PHP einige Funktionen bietet, um die Idee zu unterstützen, dass es universell einsetzbar ist, ist es keine Web-Sprache.

Sie müssen bedenken, dass sich der Entwicklungspfad von PHP stark von der Allzwecksprache X unterscheidet : PHP ist gewachsen und hat sich weiterentwickelt, es wurde nicht entwickelt. Jedes Mal, wenn der Sprache ein Merkmal hinzugefügt wird, ist dies nicht unbedingt erforderlich, nicht in Übereinstimmung mit einem imaginären Ideal dessen, was eine Sprache sein sollte. Sprachen sind in erster Linie Werkzeuge, und PHP ist als solches perfekt.

Ich habe nichts gegen die Allzwecksprache X , ich bin alle dafür, das richtige Werkzeug für den Job auszuwählen. Ich habe immer gemischt und abgestimmt, und ich codiere auch in Java und Python, manchmal parallel zu PHP. Aber PHP ist das einzige, das ich jemals heiraten würde. :) :)

Wenn Sie überlegen, mit PHP zu beginnen, sollten Sie natürlich mit der neuesten stabilen Version beginnen, wie Sie es in jeder anderen Sprache tun würden.

Yannis
quelle
Ich würde einige Inkompatibilitäten zwischen PHP4 und 5 hinzufügen. Sie haben die Garbage Collection für PHP 5.3 vergessen.
Deadalnix
1
@deadalnix Ich habe die Inkompatibilitäten zwischen PHP4 und PHP5 nicht hinzugefügt, da ich denke, dass eine solche Liste nur nützlich ist, wenn Sie die Verwendung von PHP4 in Betracht ziehen. Mein Punkt ist, PHP4 aus irgendeinem Grund nicht zu verwenden, nur weil es so alt ist (PHP5 gibt es schon seit mehr als 3 Jahren). Außerdem habe ich Garbage Collection nicht vergessen. Es war nicht meine Absicht, eine endgültige Liste der Neuerungen in PHP5.3 zu erstellen (eine solche Liste finden Sie im Handbuch), um nur einige dieser Funktionen im Kontext von hervorzuheben die Frage.
Yannis
6

PHP hat „gut genug“ für Web - Entwicklung für eine lange Zeit . Wie bei jeder Programmiersprache hängt die Qualität des Codes von den Fähigkeiten des Entwicklers ab, der ihn schreibt.

Eine verbreitete Kritik an PHP ist, dass es unerfahrenen Entwicklern aufgrund seiner Flexibilität leicht fällt, schlechten oder "Spaghetti" -Code zu schreiben. Dies liegt hauptsächlich daran, dass versucht wird, gleichzeitig eine Reihe von Paradigmen zu erfassen, die gelegentlich in Konflikt stehen, schlecht implementiert sind oder nicht gut ineinander greifen.

  • Serverseitiges Scripting (PHP) neben clientseitigem Code (HTML + Javascript) ohne Modularität ist weit verbreitet und wird fast zum Nachteil der Klarheit und Lesbarkeit empfohlen.

  • Es wird üblicherweise in einem imperativen Stil geschrieben, bietet jedoch Mechanismen zur Objektorientierung. Dies führt leicht zu gemischten Stilen und kann oft zu schlechtem Design führen.

  • Objektorientiertes Design wurde (meiner Meinung nach) in PHP4 schlecht unterstützt. Dies ist ein Bereich, den PHP5 erheblich verbessert hat (z. B. mit Zugriffsmodifikatoren, abstrakten Klassen und verbesserter Bereichsauflösung ).

  • Die dynamische Typisierung von PHP ermöglicht Laufzeitfehler, die durch statische Typprüfung beseitigt werden könnten. Dies ist dem Design aller PHP-Versionen eigen und wird sich in Kürze nicht ändern. Die Last der Validierung der Objekttypen liegt beim Programmierer.

Die Änderungen im OOP-Modell von PHP5 tragen viel dazu bei, ein gutes Design voranzutreiben, fügen jedoch keine negativen Anreize hinzu, um die oben genannten schlechten Praktiken zu entmutigen.

rauben
quelle
2

PHP hat einige bedeutende Probleme in sich, aber diese sind in erster Linie ärgerlich: Seine Bibliothek ist inkonsistent und etwas schizophren, es fehlen Zeichenfolgen als erstklassige Objekte, solche Dinge. Es zwingt Sie nicht dazu, schlechten Code zu schreiben, und es funktioniert ziemlich gut für das, was es tut - das Schreiben von Webseiten. Ihr PHP wird so gut sein, wie Sie es anstreben; Es ist durchaus möglich, PHP zu schreiben, das furchtbar prozedural ist und wie C-Code aussieht, und es ist durchaus möglich, PHP zu schreiben, das übermäßig objektorientiert ist und wie Java aussieht. Als jemand, der sich täglich in PHP entwickelt, mag ich einige Dinge daran und hasse einige Dinge daran und kann es kaum erwarten, dass einige 5.4-Funktionen (wie Eigenschaften und die Dereferenzierung von vernünftigen Funktionen zurückkehren), aber ich möchte jemanden von ganzem Herzen ermutigen, der über das Auswählen nachdenkt es ist an der Zeit, dies zu tun.

EricBoersma
quelle
0

php5 ist eine stark verbesserte Version von php4.

Der meiste, aber nicht der gesamte PHP4-Code funktioniert in PHP5.

Was sich wirklich geändert hat, war das stark verbesserte Objektmodell, das viele Einschränkungen und Besonderheiten der vorherigen OO-Implementierung behoben hat, das jedoch weitgehend mit früheren Versionen nicht kompatibel ist.

Docs hier

Die anderen Kommentare haben eine gewisse Gültigkeit, sind aber kein "no go"

"PHP ist gut, generiert aber Spaghetti-Code" - Sie können alle Arten von Pasta in jeder Sprache generieren, aber PHP entmutigt den unerfahrenen Codierer nicht, ein Rattennest aus unstrukturiertem Code zu schreiben. Umgekehrt können Sie netten Code in jeder Sprache schreiben. Erfahrene Programmierer haben kein Problem damit, sauberes, gut strukturiertes PHP zu schreiben.

"PHP ist nett, aber Python ist Heiratsmaterial" - Es ist eine nette Sprache, aber es gibt verschiedene Web-Frameworks, die alle extrem gute Punkte haben, aber keines hat sich wirklich durchgesetzt, was alles in Ordnung ist, aber jedes Python / Rahmen Ihrer Wahl Kombination wird immer eine Nischenfähigkeit sein.

"PHP bleibt hinter anderen Dingen zurück, die Sie in anderen Sprachen wie C # oder JAVA erhalten" - PHP bietet die vielfältigste und am besten implementierte Bibliotheksunterstützung aller Sprachen außer Perl. Es gibt einige leere Stellen wie statistische Analyse und Vektorverarbeitung. Wenn Sie jedoch etwas tun möchten, wird bei einer schnellen Suche in PEAR im Allgemeinen eine Bibliothek gefunden, die dies tut. Die Sprache selbst ist einfacher als C # oder Java - aber die Einfachheit der Basissyntax plus "Duck Typing" bedeutet, dass Sie alles in PHP tun können, was Sie in Java auf lesbarere und elegantere Weise tun können.

James Anderson
quelle
Die Aussage "PHP hat die vielfältigste und am besten implementierte Bibliothek ..." ist umstritten. Ich würde behaupten, es ist viel zu aufgebläht und schlecht organisiert.
Rob
@robjb - bekomme nicht das "aufgeblähte" Bit, du verwendest nicht das, was du nicht brauchst und je mehr Bibliotheken verfügbar sind, desto besser, da PEAR und PECL für schlecht organisierte ziemlich geschickt sind - keine wirklichen Entsprechungen die C # - und Java-Welten. Die Bibliotheken sind nicht "orthogonal", aber dies ist unvermeidlich, da viele Projekte über mehrere Jahre hinweg einen Beitrag leisten.
James Anderson
1
Ich leugne nicht, dass PHP einige sehr nützliche Erweiterungen / Bibliotheken hat, aber ich weiß nichts anderes, um mehrere tausend Funktionen mit globalem Gültigkeitsbereich aufzurufen, als "aufgebläht". Eine Reihe von Funktionen haben ähnliche Zwecke. Inkonsistente Benennung verschleiert weiter die Kernbibliotheken, zB strip_tagsvs stripslashes. Ich würde behaupten, dass C diese Probleme nicht aufweist, aber es gibt sie schon viel länger. ;)
Rob
Die gesamte "Bloatware" - dh eine sofort einsatzbereite PHP-Installation, die zum Erstellen einer nützlichen Website verwendet werden kann - hat eine Größe von ca. 70 MB. Dies ist kleiner als einige der mit JE gelieferten JAR-Dateien. Die meisten Entwickler halten den globalen Umfang der integrierten Funktionen für ziemlich nützlich, verglichen mit der Ausführlichkeit von Java, bei der Sie eine JAR-Datei "importieren" müssen, bevor Sie esoterische Dinge wie das Schreiben einer Zeile an sysout ausführen können. PHP ist alles andere als perfekt, aber für kleine bis mittlere Webanwendungen ist es besser als alles andere.
James Anderson
@robjb - Ich bekomme keinen "C" -Kommentar, C zeigt die inkonsistenten APIs, doppelte Funktionalität in Pik. Nur weil die Bibliotheken schwer zu finden sind und Sie immer nur wenige verwenden, wie viele "Smart Strings" -Bibliotheken gibt es da draußen?
James Anderson