24. June 2007, 09:53, by Silvan Mühlemann

PHP5-Entwickler im Aufstieg

TreppeIhr habt spannende Projekte, ein tolles Team, fünf Wochen Ferien… aber tut mir leid… Ihr arbeitet mit PHP… Ich möchte eher Richtung Java gehen“, hat ein Bewerber für die Software-Entwickler-Stelle seine Absage begründet.

Ich denke, das Image von PHP ist ein Problem für Unternehmen, welche PHP-Talente suchen. Erwähnt man PHP, dann kommt dem Software-Entwickler Stichworte wie “Gästebuch-Programmiersprache”, “Personal Homepage Processor”, “Spaghetti-Code”, “Sicherheitslücken in phpBB” in den Sinn.

Java wurde gut vermarktet. PHP nicht

Warum dieses Image? Gelernt wird an den Hochschulen Java. Java wird auch für den Beispielcode in Standartwerken verwendet. Java wurde durch eine grosse Enterprise entwickelt und – ganz wichtig – vermarktet.

PHP entstand als Plauschprojekt eines jungen Dänen für seine Homepage. Die Sprache ist einfach und die Lernkurve steil. Viele Einsteiger können damit schnell ihre Blogs programmieren. Bis Mitte 2004, als PHP5 freigegeben wurde, war die Unterstützung von OO-Techniken mangelhaft.

PHP-Image im Wandel

Der PHP5-Launch markiert aber auch den Beginn des Wandels: Mit der OO-Implementation von PHP5 lässt sich jedes GoF-Pattern umsetzen. Guter Software-Architektur mit PHP steht nichts mehr im Wege. Unserer Umsatz im Millionen-Bereich wird über ein in PHP5-Kampagnenmanagement-Tool abgewickelt.

Die Industrie akzeptiert langsam PHP als ernstzunehmende Programmiersprache: IBM unterstützt Zend und setzt es bei Kundenprojekte ein. CASE-Tools wie Visual Paradigm unterstützen PHP Code Generation. Bestimmt wird diese Entwicklung gefördert durch den Web2.0-Hype und dessen Einsatz bei Unternehmen wie Flickr oder Yahoo.
iX Programmiersprachenindex
Der O’Reilly Programmiersprachenindex (aus iX 6/2007), welcher auf die Anzahl verkaufter Bücher nach Programmiersprache basiert, zeigt: Java verliert gegenüber PHP, Javascript und Co. an Boden.

PHP-Entwickler sind gut bezahlt

Entscheidet man sich als Software-Entwickler für ein Unternehmen, welches PHP5 (natürlich heuzutage immer in Kombination mit Javascript) in professioneller Weise einsetzt, so wird man dafür gut bezahlt. Denn gute Ingenieure im Bereich PHP zu finden, ist schwierig. Da die meisten, wie auch der Bewerber oben, eher Richtung Java/C# gehen.
Gleichzeitig ist die Nachfrage als Folge des Web2.0-Booms hoch.

Hohe Nachfrage, niedriges Angebot = Hoher Preis. Damit meine ich nicht nur das Salär, sondern all jene Dinge, womit eine Unternehmen den Mitarbeiter belohnt: Auswahl der Projekte, Einrichtung des Arbeitsplatzes, Ferien, Freiheit.

Eine aufstrebende Technologie, Web2.0-Affinität, eine liberale Programmiersprache, gutes Salär. Dies sind Gründe welche dafür sprechen, auch als gut qualifizierter Ingenieur sich für PHP5 zu entscheiden.

Filed under: Programming,Web Development

15 Comments

  1. Hey
    Sehr schöner Eintrag!
    Ich benuze selber gerne PHP, und kann nicht verstehen warum immer nur schlecht über PHP geredet wird!

    MfG

    Comment by Manuel — 26. June 2007 @ 08:42

  2. da bin ich aber nicht gemeint, oder ;-)

    gruesse aus indien

    Comment by brumm — 27. June 2007 @ 10:01

  3. Hehe… nein, da ist niemand bestimmtes gemeint… das ist ein fiktiver Bewerber :-)

    Comment by Silvan Mühlemann — 27. June 2007 @ 10:11

  4. Also es klingt ja echt lustig was hier behauptet wird. Hat aber in keiner Hinsicht einen halt.

    > “Personal Homepage Processor”
    Ja was ist es denn anderes. Code oben rein, Output unten raus. UND DAS WARS. Achso, ja will hier noch jemand auf PHP Threading ansprechen?

    > Mit der OO-Implementation von PHP5 lässt sich jedes GoF-Pattern umsetzen.
    Ja wir Programmieren hier Objektorientiert. Bitte erklärt mir hier jemand welches GoV Pattern so UNENDLICH sinnvoll sein soll bei einer STATELESS Application. Das Singleton. Oja, wir lieben es doch alle. ;-)

    > PHP-Entwickler sind gut bezahlt
    Ja, jeder der sich vermarkten kann, bekommt gut bezahlt bekommen.

    > Hohe Nachfrage, niedriges Angebot = Hoher Preis
    *g* niedriges Angebot. Ja von den Guten.
    Das Prinzip lässt sich ja auch gut an Waren erklären. Ich kaufe hier “Afrikanische Butter”, die ist logischerweise teuerer als die einheimische. Deswegen kaufen bei uns auch alle Afrikanische, oder?

    > Eine aufstrebende Technologie, Web2.0-Affinität, eine liberale Programmiersprache, gutes Salär. Dies sind Gründe welche dafür sprechen, auch als gut qualifizierter Ingenieur sich für PHP5 zu entscheiden.
    mhm… Genau… Tut mir nen gefallen. Streicht hier bitte alles bis auf den “Salär”…

    Mein Thema zu dieser Sache ist:
    PHP nimmt an Bedeutung in der “Software Entwicklung” zu. Das aber nicht aus Grund der Qualität oder Performance sondern weil nunmal ein PHP Programmierer KEINE TAU vom “Programmieren” haben muss, sondern vom Scripten.
    Bytecode bleibt bytecode und Script bleibt Script.
    Also seht PHP als das was es ist und nicht als das für was man es “misbraucht”.
    mfg maze

    Comment by maze — 29. June 2007 @ 15:31

  5. @brumm: Wir hatten leider noch mehrere dieser “fiktiven Bewerber” und die haben sich teilweise für weniger als den Platz an der indischen Sonne gegen uns entschieden.

    @maze: Wow, guter Start für einen Programmiersprachen-Glaubenskrieg! ;-)

    “Input rein, code drüber, output raus.” Gilt im überigen für ziemlich alles im Computer bereich. Da ist aber ein Herr Turing wesentlich mehr schuld dran als ein Herr Lerdorf.

    OO und GoF ist überall sinvoll wo wartbare Software geschrieben werden muss. Egal ob stateless oder statefull Application. (PHP ist im überigen nicht stateless sondern eine Share-Nothing-Architektur, was beleibe nicht das selbe ist). Für alle Bastler da drausen kann man aber in PHP auch wunderbaren funktionalen Spagetti-Code schreiben. “PHP isch für alli da!” vom Vereinshomepagebastler bis zum mulitnationalen Internet-Suchmaschinen-Konzern.

    “Ja von den Guten.”??? Hast du das Gefühl wir wollen schlechte Programmier anstellen? Ein schlechter Programmiere kann wohl mehr schlechten Code schreiben wie zwei gute wieder zurecht Factorn können. Und sowas können wir uns nicht schlicht nicht leisten.

    Und maze, wenn du bytecode (oder auch maschinencode) direkt schreiben kannst solltest du dich auf jeden Fall bei uns bewerben. Bei allen die das nicht können ist Programmieren einfach Programmieren, die darunterliegende Programmiersprache spielt wohl eine nicht so grosse Rolle, genauso wenig wie ob sie nun in maschinencode, bytecode oder direkt als Script ausgeführt wird.

    [disclaimer: ich arbeite inzwischen in diesem “laden” ;-)]

    Comment by Leo Büttiker — 1. July 2007 @ 10:31

  6. hehe, gebs zu, der Sprachenkrieg war absehbar.

    Ich wollte das mit dem Input rein, html raus schreiben, dann hätte ich mir aber die leier über xml anhören müssen.

    Ist natürlich quatsch ShareNothing Architektur.
    Ob ShareNothing, oder SharedStorrage ist egal, wenn es darum geht wie die Technik von php funktioniert. Wir haben es hier mit einer reinen Piped Based Programm Architecture zu tun. Der Webserver startet php als cgi, fcgi…
    Bei der JavaSpring Methode haben wir stetige Objekte die von mehreren Applicationen ohne Pipes direkt genutzt werden können.

    Das mit den Programmpatterns, war hier natürlich passend. Ich finde es echt wunderbar wenn du mir ein paar sinnvolle Patterns nennen könntest, die du in Webapplikationen effektiv einsetzt.

    Die Kluft zwischen Spagetti PHP und PHP Freaks ist groß. Für jedes Unternehmen einfach einzusehen ob Pfusch, oder nicht?!?!?!
    Jop und die riesigen Suchmaschienen konzerne, die PHP als super Technologie einsetzen. Ja, wo php drauf steht, ist auch php drinnen? Ich selber könnte hier überhaupt keinen effektiven Einsatz sehen. Hab ja nichts gegegen das bliebte Tool programming.

    Bytecode oder nicht, ja das ist hier die Frage. JIT oder Script. Evtl precompiled. Mhm Zend Optimizer mhm..

    Also um hier mal etwas klar zu stellen. PHP kann Java oder .NET das Wasser reichen. Egal was für Tests wir fahren, PHP ist langsamer. So und jetzt kommt die Ausnahme “type one letter and view” “coding” geht leider mit Java nicht so einfach. Dem PHPler wird hier die möglichkeit sofort geboten den Output zu sehen. (erspart viel planungszeit *g*)
    Ich kann nur so viel sagen.
    Wenn sich hier jemand von Web2.0 reden traut, soll er mal überlegen ob das was PHP bietet Web2.0 darstellt *g*. Man soll ja nicht immer das Frontend in Augenschein nehmen, vieleicht auch mal denken das das Backend 1.0 bleibt *g*.

    Comment by maze — 1. July 2007 @ 23:43

  7. hmm… soll ich das rätsel des design patterns auflösen das hier effektiv wäre?
    Nennt sich Flyweight… Das Pattern reduziert Object creation. Und jetzt wiso? Weil Object creation eine kostspielige Sache ist, wenn man sich die PHP Struktur anschaut. Java hat richtige Objects, keine erweiterbaren universal teiler.

    Also Objektorientierung, bei wenig objectcreation. Die ganze effektivität geht spätestens bei den Pointern verloren. (Und ich dachte zuerst Managed Pointer seien schlimm in Java. Hierbei kann ich nur auf den Core von PHP verweisen, wie hier Pointer funktionieren *g*)

    Aber ich habe gute Neuigkeiten für alle PHP Fans. Ihr habt ja die Möglichkeit “einfach” den Source von PHP zu erweitern und anzupassen. Das ist dann C++ Code. Dann geb ich mich geschlagen, weil damit erreicht ihr die Performance von Java locker. *g*

    Sorry, aber der Mittelweg heißt hier deffiniv Java oder .NET.
    mfg nomIad

    Comment by maze — 6. July 2007 @ 11:18

  8. PHP ist in C geschrieben und nicht in C++, nur so…

    Comment by Chregu — 6. July 2007 @ 12:25

  9. Interessant, was da alles zum Vorschein kommt. Ich hatte nicht gedacht das PHP tatsächlich so einen schlechten Ruf hat.

    Für mich ist das mit PHP durchaus kein Glaubenskrieg, ich habe sehr lang mit Java programmiert und finde das ebenfalls eine tolle Programmiersprache. Das war zwar für den Desktop und nicht fürs Web. Nach dieser Zeit weiss ich aber ganz sicher das Java keine managed-pointer hat (das nennt sich garbage collecting und hat rein gar nichts mit pointer zu tun), aber das nur am Rande.

    Zurück zu PHP. Ich habe zwar nicht ganz alle Äusserungen verstanden. Was PHP aber mit Pipes zu tuen hat ist mir eher weniger klar. PHP zumindest wenn es als Modul läuft, funktioniert ziemlich ähnlich wie alle anderen Webtechnologien. Natürlich hat es in PHP keine Objekte (oder Beans wie das die Javatrinker auch nennen) die über die Aufbauzeit der Seite “rumschwiren”. Ob das ein Performancevorteil ist kann ich, da ich zu wenig Erfahrung mit Large-Scall-Webseiten in Java habe, nicht beurteilen.

    Das du im übrigen “überhaupt keinen effektiven Einsatz sehen” kannst kümmert zum Glück zum Beispiel Yahoo! überhaupt nicht. Aber wenn du ihnen das verständlich erklären kannst kriegst du vielleicht auch bei ihnen einen Job.

    Scriptsprachen sind tatsächlich nicht so schnell wie compilierte Sprachen. Das spielt aber nur eine unbedeutende Rolle. Erstens kann man alles Cachen und zweites laufen alle rechenintensiven Abläufe (Bildmanipulation, DB, Filehandling, etc.) im C-Teil ab und sind somit wohl sogar schneller als z.B. in Java. Wenn wir gerade schon bei Performance sind, Objekterzeugung ist in ziemlich jeder Programmiersprache langsam (z.B. C++ und Java)

    Über Pattern möchte ich mich nicht zu lange auslassen. Jeder der sich länger damit beschäftigt hat weiss das diese Programmiersprachen unabhängig sind. Um nur einige zu erwähnen die ich letzte Woche fürs Filehandling implementiert habe: Facade, Factory und Strategy. Das Java-Ueber-Pattern Observer wird in den Views auch in PHP implementiert. Falls wer noch mehr Patterns in PHP will soll er auf phpPatterns.com nachschauen.

    Ach und ja, was Web2.0 mit Backend zu tun hat kann ich dir auch nicht sagen…

    Comment by Leo Büttiker — 6. July 2007 @ 16:35

  10. > Ich hatte nicht gedacht das PHP tatsächlich so einen schlechten Ruf hat.
    Ich will hier nicht den Ruf von PHP ankreiden, sondern sagen das es hier misbraucht wird.

    > Nach dieser Zeit weiss ich aber ganz sicher das Java keine managed-pointer hat (das nennt sich garbage collecting und hat rein gar nichts mit pointer zu tun), aber das nur am Rande.
    Sorry, mein Fehler, ich strebte den Vergleich zu .NET an. Java hat übrigens keine Managed Pointer sondern References. (Wenn ich sagen darf die eine ähnliche funktion erfüllen wie die Managed Pointers aus .NET). Nur hat sich jetzt mal jemand gefragt, wie Objektreferenzen in PHP abgebildet sind. Immerhin sollten wir nicht abstreiten das seis Pointer oder Referenz dies der Grundstock der Objektorientierung ist.

    > Was PHP aber mit Pipes zu tun hat…..
    Schon mal PHP als CGI (FCGI) betrieben???
    stdout stdin? Funktioniert genau gleich wie alle anderen Webtechnologien??? Kein Kommentar

    > Erstens kann man alles Cachen
    Ja das beliebte RAM Caching unter PHP. ;-)
    > im C-Teil ab und sind somit wohl sogar schneller als z.B. in Java.
    Jop schneller, aber nur solange C am Werk ist. Wir wollen jetzt hier mal nicht vergessen wie wir Datenbanken auslesen. Nach dem auslesen wird das auch verarbeitet.
    (.NET mit CodeOptimierung kann bis um 15% schneller als C++ Code sein ohne speziellem Prozessor Compiler)

    > Design Patterns
    Ich habe nie daran gezweifelt das alle GOF Patterns in PHP umsetzbar sind. Ich zweifle nur die effektivität von PHP in Verbindung mit der Objektorientierung an und das aus gutem Grund. Wie oben schon erwähnt ist die ObjectCreation in anderen Sprachen auch aufwendig. IM VERGLEICH zu PHP aber geradezu unbedeutend. Wir haben hier mit Atoms basierenden Datentypen zu tun. multifunktionale RAM Fresser.

    > Web2.0 Backend
    Elends viele Posts im Internet schreiben über Web2.0. Das erste was man findet? AJAX. Ok Vorteil von AJAX. Client State based Applications. Relativ einfach zu erstellen. Weil XML Schnittstelle Backend unabhänig.
    Reduziert AJAX die Anfragen an den Webserver? Nein, nur in seltenen Fällen gibt es eine Reduktion da heutige Applikationen von der Datenvielfalt abhänig sind. Aber AJAX läuft doch schneller? D.h. mehr Arbeit für den Webserver. Gröstenteils weniger Optimierbare Datenbank Abfragen, da eher viele kleine Anfragen kommen. So und jetzt kommt die Frage aller Fragen. Was hat PHP für ein Connection Pooling? CGI? Threadsave PHP Module? Die meisten HighPerformance Apps auf PHP laufen aber mit FCGI oder lighttp. Mysql Connection Pooling? Verschiedene Benutzer auf Datenbank…….

    Ok, wir wollen hier nichts schwarz malen, PHP wir sich in den kommenden Jahren noch stark entwickeln. Ich glaube sogar das es bald möglich ist mit den mpm erweiterungen von apache zu arbeiten…
    Für alle die schon jetzt testen wollen was aus PHP wird: http://www.php-compiler.net/doku.php *g*

    Comment by maze — 9. July 2007 @ 22:43

  11. Was? Wo wird PHP missbraucht? Wir würden das nie tun! Das ist sicher auch Strafbar! ;-)

    Warum bleiben wir eigentlich immer bei Managed-Pointer stecken. Vieleicht sollten wir alle mal bei Wikipedia nachlesen (heisst dort im überigen Smart Pointer). Managed-Pointer und Referenzen sind etwas grundlegend anderes, Managed-Pointer werden vom Benutzer implementiert und Referenzen sind eine Systemimplementierung. Managed Pointer gibts in .NET im überigen auch nicht. Respektive nur im unmanaged Code und dort sollte sich kein Webentwickler jemals vorwagen. Und selbstverständlich hab ich mich gefragt wie Referenzen in PHP implementiert sind. Das ganze ist ein wenig kompliziert (wie das innere sämtlicher Sprachen) Sara Golemon bringt das ganze recht anschaulich rüber. Pointer bilden im überigen der Grundstock der Programmierung schlechthin, warum du das aber erwähnst ist mir schleierhaft.

    Sicher kann man php auch als CGI betreiben, muss man aber nicht. Wenn wir schon beim Missbrauch sind, auch Java könnte man als CGI betreiben.

    Die Datenbank wird natürlich auch mit C code angefragt, selbst wenn es wahr ist das die Datenverarbeitung in PHP langsamer ist macht das bei einer guten Programmierung keinen gewaltigen Unterschiede. PHP hat vorallem den Vorteil das Strings keine Objekte sind und somit sehr schnell gehandelt werden können.

    Naja, ich weiss nicht ob Objekterzeugung in PHP so langsam ist. Aber Objekterzeugung wird wohl kaum der Flaschenhals sein. Laut zum Beispiel diesen Benchmark kann ich über 400 Objekte pro msec anlegen. Java und C# mögen hier wohl schneller sein. Bei diesen Zahlen ist wohl aber kaum die Objekterzeugung das Problem.

    Die meisten sogenannten PHP high-performance apps laufen auf Apache und mod_php und nützen somit das Connection Pooling von Apache, das wohl kaum zu übertreffen ist. MySQL Connection Pooling und verschiedene Benutzer auf der Datenbank (hat das was mit PHP zu tun?) sind absolut kein Problem.

    PHP wird sich in den nächsten Jahren sicher noch weiterentwickeln. PHP 6 wird sicher noch einige interessante Feature bringen. Denn php-compiler muss ich mir sicher mal anschauen, das tönt interessant.

    Comment by Leo Büttiker — 15. July 2007 @ 10:50

  12. Jawohl, einsperren…

    Warum wir hier bei den Pointern “hängen” bleiben ist echt komisch. “Managed Pointer gibts in .NET im überigen auch nicht”. Darf ich mal Fragen was ref und out ist? Könnte doch was mit den komischen Pointern zu tun haben?
    Ach, zu dem wo sich ein Webentwickler “vortrauen” sollte. Vieleicht sollte er sich sogar in die Diskussionsseite auf Wikipedia vortrauen, hoffe das ist nicht zu tief. Zum Thema Smartpointer. Achja, hier würde ich Expertenseiten empfehlen.
    (www.codeproject.com oder http://www.expertsexchange.com).

    > Sicher kann man php auch als CGI betreiben, muss man aber nicht. Wenn wir schon beim Missbrauch sind, auch Java könnte man als CGI betreiben.

    Wir lieben alle die Rechteverwaltung. Vorallem bei Seiten wo die Nutzer Speicherplatz haben und evtl sogar mit FTP upload machen können. Je nach dem…
    Ja bei Tillate kann ich mir das gut vorstellen mit den Fotos und FTP. u:apache für alles. Tja…
    Achja, .NET kommt mit dem Rechte Management ohne Probleme zurecht mit threading sogar.. uhu…

    “Vorteil das Strings keine Objekte”
    Ja, wir lieben das Dynamic Typing. “warte mal, war meine Variable jetzt eine Value oder ein Objekt? Ach egal, das intelligente Boxing löst das Problem so oder so…” Boxing? Gibts das überhaupt in PHP? Ne, das waren doch die Atoms, die komischen. Wie können die String sonst so rumgeschickt werden? ;-) Mir fällt da grad auf, ich hab ja ” ” gemacht… wir das jetzt auch noch geparsed? ‘g’

    Steht auch im Wiki wie ein PHP Objekt aussieht?
    Hat php ein Traits model für Objekte? ;-)

    Ja zu mod_php Ansichtssache. Ich schwör auf FCGI. Warum? Weil die schnelle,großen Seite “NIEMALS” lighttpd nützen würden. Ist eigentlich Tillate auch eine schnelle Seite?

    Ja, Php wird sich weiterentwickeln. Vieleicht habe n wir in 10 Jahren sogar eine komplett Objektorientierte Library. Die Sprache finde ich ja nicht mal so Problematisch, ich hätte da was am Interpreter auszusetzten. Ich meine theoretisch könnte jede VM mit PHP auskommen. Halt nicht den ganzen müll was php sonst noch drinnen hat, aber vieles. So ala PHP für .NET, neko, javavm.
    Aber das schönste an der Sache ist, das ich mit Java,.NET jetzt schon zufrieden bin weil es wirklich objektorientiert ist. Threading bietet…………………….

    mfg maze

    Comment by maze — 18. July 2007 @ 17:27

  13. Ich kann nicht verstehen, wie jemand auf die Idee kommt, mit PHP könne “Spaghetti-Code” programmiert werden.

    Eine Anweisung “goto” gibt es in PHP nicht.

    Comment by r.g. — 28. November 2008 @ 19:33

  14. und hier
    http://pastie.org/334058
    der ganze Kommentar inkl. Code …

    Comment by chregu — 8. December 2008 @ 19:17

  15. Ups, der goto-php-Befehl war ja gar nicht in meiner PHP-Referenz (http://www.selfphp.de).

    In C++ brauche ich den goto für genau einen Fall: Um aus zwei verschachtelten For-Schleifen auszutreten:

    for(i=0;…) {
    for(j=0;…) {
    if(x[i] == y[j]) {
    goto finish;
    }
    }

    finish:

    Mit der Anweisung break; würde die äussere For-Schleife fortgesetzt.

    Gut, dass man das auch mit PHP kann. Einen anderen (sinnvollen) Verwendungszweck für eine »goto«-Befehl gibt es heute nicht mehr.

    Comment by r.g. — 12. March 2010 @ 07:58

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

© 2017 tilllate Schweiz AG - Powered by WordPress