Donnerstag, 24. Mai 2012


News

Mittwoch, 24. November 2010 | News

Die Vor- und Nachteile von PHP

(Link zum Artikel: http://www.entwickler.de/php//057607)
  • Teilen
  • kommentieren
  • empfehlen
  • Bookmark and Share

Auf Mashable gibt es aktuell eine Reihe mit Meistern des PHP-Fachs, die Anfängern sowie Fortgeschrittenen und Profis wertvolle Tipps für den Einstieg geben. Nachdem die Tipps und Tricks nun abgearbeitet sind, ist es nun an der Zeit, sich mit den Vor- und Nachteilen der Entwicklung mit PHP zu beschäftigen. Was also sind die größten Stärken von PHP – und wo besteht dringend Verbesserungsbedarf?

Elizabeth Naramore von SourceForge sieht in einer der größten Stärken gleichzeitig eine der größten Schwächen von PHP: es führten einfach zu viele Wege nach Rom.

While this is great for those of us who like to do things our own way, it makes it very difficult for other people to pick up where you left off, and makes debugging and refactoring a nightmare. The result can be hacks on hacks and a whole lot of crappy, spaghetti code… if code standards are not consistent and best practices aren’t followed, so Naramore.

Diese Vielfalt sorge dafür, dass sich eine gewisse Copy-Paste-Mentalität breitgemacht hätte und die Ergebnisse teilweise so gruslig seien, dass man sie eigentlich lieber nicht auf dem eigenen Server laufen lassen möchte, so Abraham Williams.

Chris Cornutt geht sogar noch einen Schritt weiter und betrachtet die Sprache auch ein wenig vom historischen Aspekt: PHP, while a great language for web development, still has a bit of a scatter-brained mind. The development that’s been done over the years suffers some from the 'wouldn't it be cool if…' mentality.

Keith Casey hingegen macht sich Sorgen um den Sicherheitsaspekt. PHP könne für alles genutzt werden und laufe auf jedem OS – und seine größte Schwäche sei die Tatsache, dass es zu leicht zu erlernen sei. There were — and still are — some horribly insecure PHP applications out there. Lots of non-developers picked it up and didn’t know to consider security.

Natürlich bedeute das nicht, dass PHP selbst unsicher wäre. Dennoch würden eben dieser Schluss oft voreilig gezogen. Eine Meinung, der sich auch Lorna Mitchell anschliesst. Es gäbe einfach zu viel schlechtes PHP da draußen; und dabei dennoch nützliche Dinge erledige.

Doch auch Stärken gibt es genug. So sieht Stuart Herbert in der umfangreichen Dokumentation einen Pluspunkt, der sich nicht wegdiskutieren liesse. Und Maggie Nelson setzt auf die Community: he great strength of PHP is not that it is easy, but why it is so. The best part about PHP is the healthy (friendly, active, productive) PHP community. If you’re just starting with PHP, you immediately have… well-maintained and easy-to-access documentation of the language through docs on php.net.

In einem sind sich übrigens die meisten einig: Facebook hat PHP auf einen Level gehoben, den kaum jemand für möglich gehalten hätte. Ein eindeutiger Beweis dafür, dass deutlich mehr Potenzial vorhanden ist; und das obwohl bereits zahlreiche Beispiele dafür gibt, welche hervorragenden Projekte sich mit PHP umsetzen lassen.

Was bleibt ist die Frage, welche Stärken und Schwächen Sie in PHP schlummern sehen. Womit liegen die "PHP Master" richtig – und mit welchen Punkten haben sie das Ziel verfehlt? Wir sind gespannt auf Ihre Meinungen.

(tw)

Kommentare

Gravatar Trepper 24.11.2010
um 11:14 Uhr
Mehr fällt denen nicht ein?! Man wird wohl betriebsblind wenn man zu lange mit PHP arbeitet. Die Sprache ist im Kern völlig konfus und ohne jede Vision. Eigentlich war es eine Perl-artige Skriptsprache, aber dann wurde OOP draufgesetzt, aber auch wieder nicht so richtig konsequent. Exceptions wurden auch eingeführt, aber auch wieder nicht so richtig. Und wieso führt man in diesem Jahrtausend goto wieder ein?! Auf die gruseligen APIs will ich gar nicht weiter eingehen.

Ich verstehe nicht, wie man sich PHP freiwillig antun kann. Mit Python und Ruby stehen wesentlich bessere Alternativen bereit.
#zitieren
Gravatar tom myer 24.11.2010
um 11:25 Uhr
@trepper: full ack #zitieren
Gravatar Dennis Becker 24.11.2010
um 15:45 Uhr
Was kann ich mit Ruby & Python besser machen als mit PHP?

PHP hat einen großen Nachteil: der Zwang, abwärtskompatibel zu bleiben. In Ruby & Python sehen ich gleich gute Alternativen, besser würde ich aber nicht sagen. PHPs Problem liegt einfach in der Vergangenheit und für die urspürngliche Kernaufgabe, für die es entwickelt wurde: Form Handling und Database Communication. Ruby & Python wurden von Anfang an mit einem viel größeren Scope entwickelt!
#zitieren
Gravatar Trepper 24.11.2010
um 16:25 Uhr
@Dennis Was man mit Ruby und Python besser machen kann als mit PHP? Na, programmieren! Dass man mit allen dreien zum Ziel kommen kann, ist klar, aber bei Ruby und Python muss man sich eben nicht mit so vielen Hässlichkeiten von Sprache und APIs rumschlagen wie bei PHP. Dabei spielt es keine Rolle, ob PHP aus historischen Gründen hässlich ist oder nicht. #zitieren
Gravatar John Doe 24.11.2010
um 17:15 Uhr
>Mehr fällt denen nicht ein?! Man wird wohl betriebsblind wenn
>man zu lange mit PHP arbeitet.

Absoluter Unfug. Das ist eine Meinung ohne Fakten. Sofort gestrichen.

> Die Sprache ist im Kern völlig konfus und ohne jede Vision.

Dazu müsste man sich den Kern mal angesehen haben. Dieser ist zB (auch) in C geschrieben und ich kann dort nichts erkennen, was auch nur Ansatzweise diese Argumentation (ohne Fakten) rechtfertigen würde. Wundarbare Strukturierung, hervorragender Einsatz der GCC Makros, es wird immer mehr abstrahiert und modularisiert. Das ist also auch hier eine Wertung ohne jeden Inhalt. Ebenfalls gestrichen, zählt nicht.

Ursprünglich sollte PHP erst einmal grundlegende Komponenten von C abbilden um es den Programmierern einfach zu machen.

>Eigentlich war es eine Perl-artige Skriptsprache, aber dann >wurde OOP draufgesetzt, aber auch wieder nicht so richtig >konsequent.

Auch hier hat jemand seine Hausaufgaben nicht gemacht. PHP war nie eine Perl-artige Skriptsprache. Der Vergleich ist faktisch absurd. Die Stärken von Perl kommen aus dem Bereich der Shellprogrammierung sowie der Verwendung regulärer Ausdrücke. PHP ist ein Sprachmodell für Internetlösungen.

OOP ist in PHP 5.2 und 5.3 hervorragend möglich - aber ob ein Projekt letztendlich erfolgreich ist oder nicht hängt nicht von OOP ab. Höchstens bei Leuten, die nicht programmieren können. OOP bedeutet garnichts. MVC lässt sich zB mit jeder blöden Klasse realisieren und viele sind nicht einmal in der Lage, OOP generell auch nur ansatzweise praxistauglich einzusetzen.

>Exceptions wurden auch eingeführt, aber auch wieder nicht so
>richtig.

Eine Exception ist eine AUSNAHMEBEHANDLUNG. Die Exceptions von PHP sind durchweg umfangreich genug. Auch hier sind viele Programmierer nicht in der Lage zu erkennen, unabhängig der Funktionalitäten, wann eine Exception überhaupt Sinn macht und wann nicht. Selbst wenn PHP keine Exceptions unterstützt - das ist kein Problem. Exceptions in einer Interpreterspache sind technisch gesehen sowieso ein Widerspruch in sich (Stichwort INTERRUPT) und machen ein Projekt nicht weniger erfolgreich, wenn sie fehlen sollten. Also auch kein Argument.

>Und wieso führt man in diesem Jahrtausend goto wieder ein?!

Naja, dann könnten wir ja auch die JMP Instruction aus dem CPU Kern entfernen, die braucht ja dann auch keiner.

Wenn wer auch immer modellartig programmiert und nicht in der Lage ist, authentisch oder kreativ und abstrakt zu denken - dann braucht man kein GOTO. Wenn es um Performance geht (sofern man bei einer Interpretersprache dieses Wort in den Mund nehmen darf) dann bringt ein GOTO manchmal etwas mehr Speed - ganz klar. Nur Anfänger meinen, ein GOTO sei etwas für Leute, die nicht sauber programmieren können.

>Auf die gruseligen APIs will ich gar nicht weiter eingehen.

Dann können wir ja auch die ganzen C-Libraries von Linux gleich dazunehmen? OOP Programmierung und dann die Funktionsnamen ständig umschreiben um eine Anwendung inkompatibel werden zu lassen ist sicher auch kein Garant für saubere Strukturierung. An der API von PHP ist +garnichts+ gruselig. Viele APIs sind der Sprache C nachempfunden und wurden teilweise so weit es ging sinnigerweise übernommen.

>Ich verstehe nicht, wie man sich PHP freiwillig antun kann. Mit
>Python und Ruby stehen wesentlich bessere Alternativen bereit.

Ich würde sagen, da hat jeder seine eigene Vorstellung, nur müsste man vorsichtig sein wenn man Dinge ohne Fakten sinnlos und herablassend abwertet. Der Webserver in Rails ist alles andere als lasttauglich, Ruby ist laut Benchmark-Tests langsamer als PHP und die Marktanteile von Ruby im Vergleich zu PHP sind so gut wie 0. Jaja, man kann alles ändern, kann man in jeder Sprache.

Es ist letztendlich egal, ob ich eine Anwendung in PHP oder in Assembler schreibe. Jede Sprache beschreibt durch ihre Syntax und ihren Aufbau ein Konstrukt von Möglichkeiten. PHP ist eine hervorragende Sprache und wird es immer bleiben und die Marktanteile sprechen nicht nur eine klare, sondern eine völlig eindeutige Ansage. Alles andere ist Phantasie!
#zitieren
Gravatar Django Fett 24.11.2010
um 19:48 Uhr
Ich denke, das Hauptproblem, weshalb PHP immer noch so hoch in den Statistiken angesiedelt ist liegt an der extremen Leichtgewichtigkeit von PHP. Es gibt viele (und definitiv bessere) Alternativen beginnend mit Java und Groovy bis hin zu Python und Ruby. Allerdings benötigen diese alle mindestens einen Applikationsserver und sind auch entsprechend ressourcenfressend und gleichzeitig auch recht komplex, was dazu führt dass:

>Einsteiger sich schnell eingeschüchtert fühlen

>Wenige Web-Hoster bereit sind, PHP-Alternativen einzusetzen

>Kein Web-Hoster PHP-Alternativen gratis (oder zu Mindestens günstig) anbieten
#zitieren
Gravatar huschi 28.11.2010
um 18:19 Uhr
Ich muss John Doe überwiegen recht geben. Auch wenn sich verdammt viele Fehler in seinem überlangen Beitrag befinden. So ist PHP tatsächlich auf Perl zurück zuführen. Und eine Hochsprache mit Assembler/Maschinencode zu vergleichen hinkt ebenfalls gewaltig.

Aber ein GOTO findet sich in jeder Sprache. Evtl. in abgewandelter Form. Z.B. als "break" im Schleifen-Konstrukt. Dies ist nichts Anderes als ein Goto an das Ende der Schleife.
Sogar Exceptions sind im Grunde nichts anderes als eine vereinfachte Form eines Gotos.

Oder ein aufgesetztes OOP ist in so ziemlich jeder Sprache eben genau das: künstlich Aufgesetzt. Reine OOP-Sprachen wie damals Smalltalk oder heute Java wirken natürlich anders.

Allerdings muss ich auch Trepper recht geben:
> Die Sprache ist im Kern völlig konfus und ohne jede Vision.

Das hat nichts mit den Ausführen von John Doe zu tun. Nein wirklich: diese Sprache ist konfus. Z.B. durch die selbe Benennung der String-Funktionen wie in C. Aber dennoch teilweise mit der Zeit aufgeweicht mit unterschiedlichen Parametern und Rückgabewerten. Eine "Vision" von PHP ist tatsächlich erst ab Version 5.0 erkennbar. Wird aber erst ab 5.3 deutlicher.
Die gewünschte Abwärtskompatibilität hat PHP als reale Sprache in der Entwicklung gewaltig gefesselt. Erst mit 5.3 oder der geplanten 6.0 wird erstmalig wirklich alte Altlasten über Board geschmissen.

Hier war SUN (heute Oracle) mit Ihrem Java deutlich rigoroser. Was nicht mehr gebraucht wurde, erhielt das Flag "depricated" und war kurz danach schon gar nicht mehr gesehen. Und die Entwickler hatten sich daran gewöhnt und mitgezogen. Es geht also auch anders.

huschi.
#zitieren
Gravatar Jaap van Ganswijk 29.11.2010
um 00:33 Uhr
@John Doe:
PHP clearly was inspired by Perl (look at the '$' before variable names and the use of strings without quotes in early versions, but PHP tried to clean up the much bigger mess that Perl was. In PHP there is usually one way to do things whereas in Perl there were 10 solutions for each problem making the code generally unreadable by another programmer unless he would know all possible ways to solve a problem.

PHP is clearly based much more on the C-tradition, like C, C++, Java, Javascript, C# with C in turn being based on BCPL (and perhaps Algol?).

I am still very impressed by Javascript as a very complete C-like language using all of the advantages of a script language but also the integration with a browser (or any other application), but as a server side language I like PHP very much.

Python was not designed by a programmer but by a mathematician in Amsterdam and unfortunately that shows in the language. I had lessons from his professor at the TU Delft. The developer (and professor) clearly had no working knowledge of C or any of the other C-like-languages. Ruby is even much worse and seems to be based on Fortran, Pascal and/or Basic.

As regards the 'goto' statement: Of course good programmers try to avoid it just like they should never return from a function somewhere in the middle of a function but the for and while commands are not perfect in capturing all kinds of desired behaviour of loops, and commands like 'break' and 'continue' in C are also kind of goto's of course.

And OOP is very overrated I think...
#zitieren
Gravatar Trepper 29.11.2010
um 08:34 Uhr
Guido van Rossum ist Mathematiker _und_ Informatiker: http://en.wikipedia.org/wiki/Guido_van_Rossum

Wer mal ein bisschen mit Python gearbeitet hat, wird schnell erkennen, dass die Sprache viel sauberer als PHP ist. Es gibt weniger, dafür mächtigere Konstrukte als in PHP. Und nicht zuletzt ist auch der Quelltext wesentlich besser lesbar.
#zitieren
Gravatar Marvin 30.11.2010
um 13:41 Uhr
Unabhängig davon wie sich PHP gegen Ruby/Python schlägt sollte auch bedacht werden, dass es Situationen gibt wo Ruby/Python gar nicht in Frage kommen, weil der Kunde PHP kann/möchte/muss. Unterm Strich kann man doch mit allen drei Sprachen zum selben Ergebnis kommen. Was meiner Meinung nach PHP am stärksten fehlt ist ein integriertes Standardframework, so wie z.B. Ruby On Rails oder Django. Jaja, es gibt Zend aber das ist noch weit weg von der Eleganz eines Django. Aber das ist was anderes. Aber auch ohne solche integrierten Ansätze kommt man zum Ziel. Und wenn man PHP kennt auch sehr sauber und ohne Probleme. #zitieren
Gravatar Jaap van Ganswijk 01.12.2010
um 03:55 Uhr

Trepper:
Guido van Rossum ist Mathematiker _und_ Informatiker: http://en.wikipedia.org/wiki/Guido_van_Rossum

Wer mal ein bisschen mit Python gearbeitet hat, wird schnell erkennen, dass die Sprache viel sauberer als PHP ist. Es gibt weniger, dafür mächtigere Konstrukte als in PHP. Und nicht zuletzt ist auch der Quelltext wesentlich besser lesbar.


The question is not which language is more pure, but we have to consider the history of languages and Python clearly doesn't understand the latest (and earlier) insights in languages (like in Javascript).
PHP clearly isn't perfect, but can a company afford to keep supporting scripts written in all kinds of languages years after the original programmers have gone. And the brilliant programmers usually leave within three years and where will it find capable programmers to keep the support of the software up-to-date.

This problem isn't new. We used to have all kinds of languages like Cobol, Algol, C, Fortran, assemblers of all flavors, Pascal and later Ada, Java, C# and still later the script languages: Javascript, PHP, Perl, Python and Ruby. This is a management hell when you have to support programs written in all of these languages. And it's not only that you have to find programmers for all of those outdated languages but you also have to keep-up the development-environment for all of those languages.

Anyone with even a single braincell will understand that this is very expensive. That is why I think a company should try to restrict their programmers to write programs only in a limited set of languages. Personally I think that PHP is allowable and Ruby and Python are not.
#zitieren

Folgende Links könnten Sie auch interessieren