Ist die Ausgabe 01/2010 "iX Spezial Programmieren heute" lesenswert?



  • Das mit dem Euro-Zeichen hat mir auch sehr viel Spaß gemacht: Hat mir auch 6,5h Entwicklungszeit gekostet 😞

    MfG SideWinder



  • @Christoph
    *Popcorn hol* Woooww, Coool, 🕶 gibt es dazu eine Fortsetzung? Scheint interessant zu sein 🙂

    ~kleine Offtopic Frage:~

    Sind wir überhaupt noch On-Topic????

    ^oder sind wir in einen zugegebenermaßen interessanten und begründeten PHP-Bashing / Blamewar abgeglitten?^
    🙄



  • Rhombicosidodecahedron schrieb:

    Woooww, Coool, 🕶 gibt es dazu eine Fortsetzung? Scheint interessant zu sein 🙂

    Das geht ganz einfach: http://www.php.net/

    Dort steht auf der Startseite z.B.: "PHP 5.3.2 Released!". Etwas weiter unten steht:
    # Fixed bug #50847 (strip_tags() removes all tags greater then 1023 bytes long).

    Ok, eine willkürliche 1023-Bytes-Grenze ist schonmal verdächtig. Mal schauen, was strip_tags eigentlich macht: http://www.php.net/manual/en/function.strip-tags.php

    Offizielle Doku schrieb:

    This function tries to return a string with all NUL bytes, HTML and PHP tags stripped from a given str .

    Bis hierher klingt es vernünftig. Wobei, "tries"? Aber egal, vielleicht gibt die Funktion einfach ihr bestes.

    Offizielle Doku schrieb:

    It uses the same tag stripping state machine as the fgetss() function.

    Bitte was, state machine? Regexp nenn ich normalerweise nicht "state machine", obwohl es das theoretisch sein mag. Also ist die Funktion vielleicht gar kein Einzeiler, der nur eine regexp anwendet?

    Das Rätsel lüftet sich, wenn man zum zweiten Parameter kommt:

    Offizielle Doku schrieb:

    allowable_tags You can use the optional second parameter to specify tags which should not be stripped.

    Ok, in diesem Parameter können wir also Tags spezifizieren, die nicht entfernt werden sollen. Spezifizieren... nur wie? Laut Signatur ist der zweite Parameter ein string. Wie sollen wir dort Tags spezifizieren ohne Angabe des erwarteten Formats? Zum Glück gibt es ein Beispiel:
    strip_tags($text, '<p><a>'); // Allow <p> and <a>
    Wenn $text der String '<p>Test paragraph.</p> <a href="#fragment">Other text</a>' ist, dann wird dort nichts entfernt, weil <p> und <a> erlaubt sind. Dafür ist der zweite Parameter also da. Warum der zweite Parameter nicht einfach ein Array von Strings ist, bleibt weiterhin ein Rätsel.

    Mal überlegen, wofür man diese Funktion vermutlich einsetzen würde, wenn man sie zum ersten Mal sieht und nicht weiß, was PHP sonst so hat. Tags strippen, aber bestimmte Tags erlauben. Klingt nach einer billigen Variante, um vom User eingebene Texte zu validieren. Leider ist strip_tags dafür vollkommen unbrauchbar, wie die dicke rote Warnung weiter unten schreibt:

    Offizielle Doku schrieb:

    Warning This function does not modify any attributes on the tags that you allow using allowable_tags, including the style and onmouseover attributes that a mischievous user may abuse when posting text that will be shown to other users.

    Mit anderen Worten: Wenn wir den zweiten Parameter weglassen und einfach alle Tags strippen, dann kann man vielleicht (vielleicht) damit Input validieren. Wenn man den zweiten Parameter nutzt, ist es völlig vorbei, weil man in einem onmouseover-Attribut so ziemlich alles anstellen kann.

    Das Problem ist: Die Existenz des zweiten Parameters verkompliziert die ganze Implementierung von strip_tags um Größenordnungen. Würde strip_tags einfach das machen, was der Name sagt, würde es keinen zweiten Parameter geben und die Implementierung wäre relativ überschaubar, hätte also weniger Bugs.

    Das Verhalten von strip_tags bei nicht-wohlgeformten HTML ist übrigens undokumentiert, aber das war eh zu erwarten. Das einzige, was die Doku dazu sagt, ist "das kann schiefgehen".

    Wenn das alles nicht wirklich in der offiziellen Doku stehen würde, ich würde denken, da hätte jemand eine Satire-Seite aufgezogen. So traurig ist das.

    Wenn irgendjemand nochmal bezweifelt, dass PHP eine schlechte Sprache ist: Einfach auf die offizielle Doku verweisen.

    p.s.: Easteregg.



  • 👍

    BTW: Bald wird PHP6 ja alles richten...

    MfG SideWinder



  • Und zum Thema Geschwindigkeit von PHP: Facebook benutzt ja PHP (dämlich, das). PHP ist so langsam, dass die Leute von Facebook sich entschieden haben, einen eigenen Compiler dafür zu schreiben.

    http://developers.facebook.com/hiphop-php/

    🤡



  • Oha, erstmal Danke für eure vielen Antworten. 😮

    OK, ihr habt PHP ziemlich zerrissen und viele Bugs aufgedeckt. Ich muss zugeben, dass ich mich mit PHP nicht so ausgiebig beschäftigt habe, um derart in die Tiefe zu gehen. Für mich war PHP bisher ein einfach zu handhabendes System für dynamische Webseiten, aber offensichtlich ist es für Größeres ungeeignet.

    Ich meine nur: es gibt viel scheinbar gute Software in PHP, Content Management Systeme wie z.B. Typo-Light (damit arbeite ich manchmal und es gefällt mir eigentlich recht gut) oder dieses Forum hier. Meint ihr, das taugt alles nichts oder macht auf längere Sicht nur Probleme?

    Was ist eurer Meinung nach sinnvoller als PHP? Flash vielleicht?



  • Z schrieb:

    Ich meine nur: es gibt viel scheinbar gute Software in PHP, Content Management Systeme wie z.B. Typo-Light (damit arbeite ich manchmal und es gefällt mir eigentlich recht gut) oder dieses Forum hier. Meint ihr, das taugt alles nichts oder macht auf längere Sicht nur Probleme?

    Viele gute Webseiten sind in PHP geschrieben. PHP ist nur ein Werkzeug. Man kann auch mit schlechten Werkzeugen tolle Sachen bauen.

    Was ist eurer Meinung nach sinnvoller als PHP? Flash vielleicht?

    Flash ist eine komplett andere Baustelle.
    Defakto gibt es keine Alternative zu PHP.

    Manche werden jetzt vielleicht Python oder Ruby nenne andere vielleicht ASP - aber im Prinzip gibt es nur PHP.



  • Z schrieb:

    Was ist eurer Meinung nach sinnvoller als PHP? Flash vielleicht?

    Lisp?
    🙂



  • Shade Of Mine schrieb:

    Viele gute Webseiten sind in PHP geschrieben. PHP ist nur ein Werkzeug. Man kann auch mit schlechten Werkzeugen tolle Sachen bauen.
    ...
    Defakto gibt es keine Alternative zu PHP.

    Das beruhigt mich. 😉

    Wie gesagt, hatte ich bisher einen ziemlich positiven Eindruck von PHP, aber ich habe PHP auch noch nie voll ausgereizt, so dass mir gravierende Fehler offenbar wurden.

    Schauen wir mal, was aus PHP noch wird. Weiterentwickelt wird es noch. Ich denke, keine Programmiersprache war von anfang an perfekt.

    Für "richtige" Programme haben wir ja unser annähernd perfektes C++ und das ist, glaube ich, schon 30 Jahre alt. C++ hatte am Anfang sicherlich auch einige Mängel.



  • Shade Of Mine schrieb:

    Defakto gibt es keine Alternative zu PHP.

    Du redest aber nur von Hobbyfricklern, oder? Für kommerzielle Nutzer ist ASP.NET durchaus eine Alternative.

    Z schrieb:

    Für "richtige" Programme haben wir ja unser annähernd perfektes C++

    Tellerrand? 🙂



  • Shade Of Mine schrieb:

    Was ist eurer Meinung nach sinnvoller als PHP? Flash vielleicht?

    Flash ist eine komplett andere Baustelle.
    Defakto gibt es keine Alternative zu PHP.

    ABAP und SAP R/3 😃



  • audacia schrieb:

    Z schrieb:

    Für "richtige" Programme haben wir ja unser annähernd perfektes C++

    Tellerrand? 🙂

    Ja ich gestehe. 😉
    Ausser PHP und C++ habe ich bisher nur Java, Visual Basic und C# kennengelernt. Wobei mir die drei letzteren absolut nicht gefallen haben. Ich habe mit C++ angefangen und werde wohl auch dabei bleiben, jedenfall ist nichts in Sicht, das meiner Meinung nach C++ das Wasser reichen könnte.



  • Das kommt wohl stark auf die Einsatzdomäne an...

    RAD-Prototypen würde ich wohl nicht mit C++ entwickeln wollen...

    MfG SideWinder



  • Shade Of Mine schrieb:

    Defakto gibt es keine Alternative zu PHP.

    Manche werden jetzt vielleicht Python oder Ruby nenne andere vielleicht ASP - aber im Prinzip gibt es nur PHP.

    Warum?

    Nur weil für Kleinstunternehmen PHP die Norm ist, weil die ganzen Billighoster managed LAMP-Server für einen Apfel und ein Ei haben?

    Für Python gibt es Django und CherryPy, für Ruby Rails, Sinatra und einiges dazwischen und einige andere Sprachen holen auch auf.

    An Hostern gibt es mittlerweile eine Riesenmenge brauchbare VPS, Amazon EC2, Heroku, Google AppEngine etc., also auch für fast jeden Anwendungsfall was passendes.

    Ich habe schon ein paar Webapps für Firmen unterschiedlichster Größe geschrieben, aber PHP musste ich dafür zum Glück seit 2003 nicht mehr verwenden.

    Schauen wir mal, was aus PHP noch wird. Weiterentwickelt wird es noch. Ich denke, keine Programmiersprache war von anfang an perfekt.

    Aus PHP wird überhaupt nichts mehr. Christoph hat doch auf die offizielle Doku verlinkt, schau Dir mal an, was für Leute daran entwickeln. PHP hat auch nicht einfach eine leicht verbesserungsbedürftige Standardlibrary oder so, es ist von Grund auf kaputt. Durch Weiterentwicklung verbessern sich nur Sprachen, die a) realistischerweise rettbar sind, ohne die komplette Userbase zu vergraulen und b) Entwickler und Designer haben, die kompetent genug sind, um auch tatsächlich was retten zu können und die c) sehen, wie furchtbar kaputt ihr Projekt ist und motiviert sind, dagegen etwas zu tun.

    Ich sehe bei PHP keinen dieser Punkte erfüllt und in der Zwischenzeit erstarken Python und Ruby für Webanwendungen immer mehr. PHP wird nicht einfach sterben, aber es wird auch nicht in absehbarer Zeit zu einer akzeptablen oder gar guten Sprache werden.



  • Mit was wurde Wikipedia gemacht? Mit was werden Webseiten für Banken gemacht?



  • nagnana schrieb:

    Mit was wurde Wikipedia gemacht? Mit was werden Webseiten für Banken gemacht?

    Mir ist klar, dass das eine rhetorische Frage ist, aber in beiden Fällen lautet die Antwort: Das müsste heutzutage nicht mehr zwangsläufig PHP sein, andere Sprachen sind durchaus schon lange brauchbare Alternativen.

    Die Website meiner Bank mit meinem Hauptgirokonto sieht übrigens nach ASP aus, die der Bank mit meinem Bausparvertrag nach Java Server Pages. Gerade Banken sind ein schlechtes Beispiel für PHP.



  • Wenn deine Bausparvertragsbank zwei gekreuzte Pferdeköpfe als Logo hat, dann kann ich JSP definitiv bestätigen. Im Bankensektor (zumindest in Österreich) ist PHP afaik nicht existent.

    MfG SideWinder



  • Die Deutsche Bank hatte früher WebObjects und jetzt JSP im Einsatz.

    (Das habe ich an den HTTP-Headern und URLs festgemacht. :D)



  • nman schrieb:

    Nur weil für Kleinstunternehmen PHP die Norm ist, weil die ganzen Billighoster managed LAMP-Server für einen Apfel und ein Ei haben?

    Intranet Loesungen sind immer etwas anderes, aber wenn man sich die Standard Hoster so ansieht: ruby support sucht man mit der Lupe, python support ist halbwegs gaengig und ASP gibt es aufgrund der noetigen Software natuerlich auch sehr selten.

    Wenn man jetzt eine Riesen Anwendung ala Facebook schreiben wuerde, waeren die Voraussetzungen andere - aber die meisten Anwendungen sind relativ klein (ein paar tausend zeilen).

    Python tut sich schwer in bestehende Sturkturen zu integrieren. Und wenn ich Software an mehrere Kunden verkaufen will, dann ist das Problem dass PHP immer moeglich ist, Python aber nicht. Bei uns ist es zB so, dass wir python aus diesem Grund garnicht verwenden koennen, selbst wenn wir wollten. Da wir die Codebasis ja sowieso in PHP auch haben muessten fuer die Kunden die 0815 Hosting Pakete haben.

    PHP ist technisch sicher eine furchtbare alternative, aber die Verbreitung und die vorhandene Software (zB typo3, jeder webservice anbieter bietet dir die API in PHP an,...) macht PHP leider zum defakto standard.

    Ich wuerde gerne davon weggehen - ist aber aktuell nicht moeglich. Wenn man selber das Umfeld kontrolliert, wie eben bei Business Kritischen WebApps, ist natuerlich die Voraussetzung eine andere. Dann sind Python, JSP, ASP,... natuerlich viel viel besser.



  • Shade Of Mine schrieb:

    Intranet Loesungen sind immer etwas anderes, aber wenn man sich die Standard Hoster so ansieht: ruby support sucht man mit der Lupe, python support ist halbwegs gaengig und ASP gibt es aufgrund der noetigen Software natuerlich auch sehr selten.

    ASP ist natürlich selten, weil niemand gerne Windows-Server betreibt.

    Aber ansonsten: AppEngine, Heroku und Co. werden immer attraktiver und komplette VPS ebenfalls.

    Und wenn ich Software an mehrere Kunden verkaufen will, dann ist das Problem dass PHP immer moeglich ist, Python aber nicht. Bei uns ist es zB so, dass wir python aus diesem Grund garnicht verwenden koennen, selbst wenn wir wollten. Da wir die Codebasis ja sowieso in PHP auch haben muessten fuer die Kunden die 0815 Hosting Pakete haben.

    Schreibt Ihr denn soviel Software von Grund auf neu, die Ihr an mehrere Kunden verkauft? Oder ist das eher ein Argument vom erzkonservativen Produktmanager?

    Ich wuerde gerne davon weggehen - ist aber aktuell nicht moeglich. Wenn man selber das Umfeld kontrolliert, wie eben bei Business Kritischen WebApps, ist natuerlich die Voraussetzung eine andere. Dann sind Python, JSP, ASP,... natuerlich viel viel besser.

    Ich bin da sicher kein guter Ansprechpartner, weil ich nur da Arbeit habe, wo das Setup genauer kontrolliert wird als bei einem billigen Managed-Hoster. Aber aktuell sehe ich schon einen starken Trend in die Richtung, dass jeder Infrastruktur mietet, die entweder wie bei Heroku oder AppEngine den Serverbetrieb komplett wegabstrahiert, einfacher ist als simple 0815-Managed-Hoster und auch deutlich besser skaliert oder aber billig eigene Server bereitstellt, ohne dass man dafür ein eigenes Rechenzentrum betreiben muss.


Anmelden zum Antworten