PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Was können wir von anderen lernen

with 10 comments

Ein Gastbeitrag von Timo Puschkasch
Student aus Stuttgart, seit längerem als Webentwickler mit PHP und Ruby tätig. Seit kurzem auch in der UG Stuttgart anzutreffen.

PHP ist eine der ältesten serverseitigen Web-Sprachen und fast die einzige, die speziell zu diesem Zweck geschrieben wurde. Leider verleitet dies viele Entwickler dazu, den Gedanken, die PHP-Gemeinde könnte über den eigenen Tellerrand hinaus blicken und sich mit anderen austauschen, höchstens mit einem Lächeln abzutun. Dabei ist dieser Gedanke garnicht so abwegig. Es gibt viele Beispiele dafür, dass sich gerade Entwickler alt eingesessener Sprachen in alten Paradigmen verlieren und nicht dazu neigen, etwas Neues auszuprobieren. Deshalb möchte ich im Folgenden aufzuzeigen, an welchen Stellen die PHP-Entwicklergemeinde durchaus von anderen Gemeinden lernen kann. Dies betrachte ich am Beispiel der Ruby-Gemeinde, in der ich selbst seit einiger Zeit aktiv bin.

Ein sehr großer Unterschied, der einem sofort ins Auge fällt, ist die Wahl der Tools. Ich finde es zwar bemerkenswert und lobenswert, dass sich in PHP anders als in anderen Sprachen eine Vielzahl an Frameworks entwickelt hat, und dies ist eine Eigenschaft, die zu fördern durchaus lohnenswert ist. Doch diese Diversität bringt auch einen Mehraufwand mit, wenn es um das Einrichten und Betreuen von Anwendungen geht. Hier wäre es doch wünschenswert, einen Standard zu finden, der die Einrichtung von PHP-Anwendungen automatisiert. Diesen Standard gibt es bereits in Form von Pear, doch er hat sich nicht durchgesetzt. Symfony geht sogar so weit von einer Installation über Pear explizit abzuraten. Voller Neid schaut der PHP-Entwickler hier auf Rubys Gems und Bundle, mit deren Hilfe sich Anwendungen ganz einfach installieren lassen und auch mehrere parallel laufende Versionen kein Problem darstellen. Auch ein kompliziertes XML-Dokument zum Erstellen von Packeten ist überflüssig. Ich möchte nicht sagen, dass wir Pear als Standard erzwingen sollten. Vielmehr sollten wir uns fragen, weshalb die Community Pear bisher nicht angenommen hat und an den Schwächen arbeiten.

Ein weiterer Punkt sind Command Line Tools. Jedes Projekt bringt seine eigenen Tools inklusive eigener Implementierung mit. Wäre es nicht einfacher, wie Ruby einen de-facto Standard bei den Command Line Tools zu haben, der sehr leicht zu bedienen ist und dank einfacher Definition von Tasks auch von Entwicklern gerne benutzt wird? Es gibt mehrere Ansätze für solche Tools, doch bisher hat sich keines durchsetzen können. Deshalb müssen wir noch heute auswendig lernen, dass Befehle mal mit Unterstrich_Notation und mal mit Doppelpunkt:Trennung, mal groß mal klein und mit Sicherheit überall mit einer eigenen Parameterreihenfolge geschrieben werden, genauso wie viele Tools noch ohne Command Line Interface kommen, da es für den Entwickler zu komplex wäre, ein eigenes Tool zu implementieren. Und so müssen wir eben weiterhin im Quellcode rumpfuschen und ellenlange Logs lesen, um mit unseren Anwendungen zu arbeiten.

Bewegen wir uns von der handfesten Ebene der Tools weg zeigt sich ein anderes Bild: PHP hat eine Identität. Entwickler identifizieren sich mit dieser Sprache, jeder hat seine eigene Geschichte und seine Erfahrungen, und definitiv hat auch jeder seinen Stil und seine Vorlieben, über die gerne gestritten werden darf. PHP ist eine vergleichsweise alte Sprache und hat zwar keinen begrenzten, jedoch einen faktisch gut abgegrenzten Einsatzraum. Außerdem ist es eine feste Größe und aus dem Internet genauso wenig wegzudenken wie HTML und CSS. Was PHP jedoch fehlt ist ein Grundsatz, an dem sich alles orientiert. In Ruby gibt es derer zwei, nämlich alles ist ein Objekt und es gibt mehr als einen Lösungsweg. Hier liegt im Übrigen der ewige Zwist mit der Python-Community begründet, die die Auffassung vertritt, dass es nur einen offensichtlichen Weg zur Lösung geben sollte. PHP hingegen fehlt die klare Vorgabe und Struktur. Dies liegt unter anderem in der Geschichte begründet, PHP wurde nicht geplant, es hat sich einfach entwickelt. Und zu Zeiten der PHP-Entwicklung waren Grundsätze wie ausnahmslose Objektorientierung wohl auch noch nicht an der Tagesordnung. Doch diese fehlende Struktur zeigt sich noch heute vor allem in den PHP-eigenen Klassen und Funktionen.

Es ist an der Zeit eine Grundsatzdiskussion zu führen und sich darüber klar zu werden, was PHP ist und wie es sich von anderen unterscheidet. Wir müssen für uns herausfinden, warum uns etwas an dieser Sprache liegt, und wir müssen endgültig klären, ob es ($haystack, $needle) oder ($needle, $haystack) heißen soll. Es gibt kein und, nur ein oder in der Zukunft von PHP.

Alles in allem ist PHP eine tolle Sprache mit einer tollen und aktiven Community. Doch ich hoffe ich konnte aufzeigen, dass sich hin und wieder der Blick über den Tellerrand lohnt und dass es auch bei anderen Communitys durchaus etwas zu lernen gibt. Außerdem sollten wir uns in einen regen Austausch mit Mitgliedern der anderen Gemeinschaften begeben, denn nur so kann man effektiv voneinander lernen.

Written by Michael Kliewe

Dezember 27th, 2010 at 9:16 am

Posted in PHP

Tagged with , ,

10 Responses to 'Was können wir von anderen lernen'

Subscribe to comments with RSS or TrackBack to 'Was können wir von anderen lernen'.

  1. Viele Rechtschreibfehler… musste aufhören zu lesen

    sir

    27 Dez 10 at 12:50

  2. Da gibt es ja viele Ansatzpunkte und jeden werde ich sicher nicht angehen. Aber die Tellerrand-Geschichte sehe ich ganz anders. Ich kenne kaum einen PHP-Entwickler, der nur PHP nutzt. Üblicherweise kommt Java oder Python als 2. Standbein vor und entsprechend benutzt der Entwickler dann auch PHP. Und genau das ist die Besonderheit, die mir an PHP gefällt.

    Gute Beispiele für die Java-nähe mancher Entwickler sind die QA-Tools von Sebastian Bergmann.

    Das beliebte Argument mit der abweichenden Parameter Reihenfolge wird ja mit jeder neuen PHP Version schwächer und wer eine gute IDE nutzt, bemerkt das Problem eigentlich nicht.

    Norbert Bartels

    27 Dez 10 at 14:51

  3. Hallo Norbert,

    ja, es stimmt wohl, dass viele PHP-Programmierer auch andere Sprachen nutzen, doch in der Praxis habe ich die Erfahrung gemacht, dass die Mehrheit dieser Programmierer einen Trennstrich zwischen beiden „Welten“ zieht und sehr viele nützliche Paradigmen aus der anderen Sprache nicht in PHP übertragen. Natürlich gilt dies nicht für alle Programmierer, doch ich denke es kann definitiv noch ausgebaut werden.

    Timo

    Timo

    27 Dez 10 at 17:49

  4. Das PHP-Pflichtthema „Abwärtskompatibilität“ verbietet eben grundlegende Restrukturierungen – was ich aber auch garnicht so dramatisch finde. Unter anderem aus dem von Norbert genanntem Grund der mittlerweile sehr guten IDEs.

    Außerdem gibts auch grade sehr intensive Diskussionen in der Community bezogen auf neue Features, wie bspw. hier: http://programmers.stackexchange.com/questions/27564/what-features-would-you-like-to-have-in-php

    Es tut sich was! 😉

    David Müller

    28 Dez 10 at 00:44

  5. Ich war relativ lange von PHP begeistert. Dann hatte ich mit Java und C# .NET zu tun. Und ich muss sagen, dass diese beide Welten schon teilweise krass auseinander liegen.

    Man kann mit allen 3 Sprachen sehr viel sehr schön lösen.

    Was aber Objektorientierung und Frameworks angeht, muss PHP noch viel machen.

    Benny

    28 Dez 10 at 15:56

  6. leider ist der anfang schon nicht sauber recherchiert.
    PHP 95, Perl 87, Ruby 95, Python 91

    MiAsin

    11 Jan 11 at 08:51

  7. Perl, Ruby, Python sind alle erst später ins Web eingezogen, PHP ist dort „geboren“.

    Timo

    2 Feb 11 at 13:56

  8. PHP ist auch die Sprache meiner Wahl!

    Beste Grüße,
    Torben Leuschner

    Torben Leuschner

    18 Mrz 11 at 10:41

  9. Mehr Lesestoff dazu (wer es noch nicht kennen sollte):

    http://phpsadness.com/
    http://www.phpwtf.org/
    http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/

    Man muss die Kirche immer im Dorf lassen. Wenn ich ein einfaches Hello-World (oder ein Gästebuch) will, dass lauffähig auf quasi allen normalen Webservern ist, greife ich halt zu PHP. Wer aber den Fehler macht und Applikationen wie Twitter, Google, Facebook oder Stackoverflow auf PHP-Basis zu entwickeln, sollte sich kurz die Augen schließen und bis 10 zählen. Und danach zu einer anderen Sprache greifen.

    MrPepperwood

    5 Apr 13 at 12:22

  10. Die Hälfte der vorgebrachten Fehler bzw. Schwachstellen sind veraltet. Hier beispielsweise eine Antwort auf den „fractal of bad design“ Artikel:
    https://news.ycombinator.com/item?id=4177516
    Wenn man wirklich danach sucht, dann gibt es auch in anderen Sprachen, die ein paar Jahre auf dem Buckel haben (im Fall von PHP mittlerweile über 18 Jahre), natürlich gewachsene Unschönheiten, die mit der Zeit verbessert werden müssen. Deshalb entwickeln sich Sprachen ja auch weiter, wachsen mit den Anforderungen. Das PHP von heute ist nicht mehr mit dem PHP von vor 5 oder 10 Jahren vergleichbar.
    Ist aber auf jeden Fall ein schönes Thema über das man streiten kann, über Dinge die sehr verbreitet sind spricht und streitet man ja auch lieber als über unwichtige kleine Dinge. Früher wurde über Microsoft geschimpft, heute ist der neue „Gegner“ Google. Und auf das kleine Microsoft, das schon am Boden liegt, tritt niemand mehr drauf rum.

    Facebook ist ein schlechtes Beispiel, das ist nämlich in PHP geschrieben…
    Es kommt immer darauf an welche Features man haben möchte, das hat selten etwas mit der Größe zu tun. Auch PHP-Projekte können gut skalieren, die Shared-Nothing-Architektur hat da seine Vorteile. Dafür gibt es an anderen Stellen Probleme, die man aber auch lösen kann. Die Sprache ist sehr mächtig, und gute Entwickler können damit auch performante und sichere Systeme bauen. Natürlich kann man Webseiten auch in Erlang schreiben, aber finde mal genügend Entwickler für ein größeres Projekt.

    Was wären denn deiner Ansicht nach „andere Sprachen“ in der Webentwicklung, Ruby, Python, Java?

    Michael Kliewe

    5 Apr 13 at 12:49

Leave a Reply

You can add images to your comment by clicking here.