Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP erhalten?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #46
    Zitat von rkr Beitrag anzeigen
    Was hilft mit annotation-basiertes Typehinting, wenn es mir nicht aktiv bei der Entwicklung hilft? Und den Quellcode sinnlos belastet?
    Ich sag ja ist keine 100% Lösung.
    Aber letztendlich ist das doch eh alles keine Diskussion wert.
    PHP Entwickler: "Python hat dies und das nicht, achja und das? wie soll ich damit arbeiten!"
    Python Entwickler: "PHP hat dies und das nicht, und was soll das sein? Alles Mist!"

    Alles eine Frage der Philosophie, aber wie man sieht, kommt man irgendwie, irgendwo mit allem ans Ziel
    Die mysql_* Erweiterung ist veraltet!
    Besser: mysqli_* oder (noch besser) PDO

    Kommentar


    • #47
      Zitat von nameless97 Beitrag anzeigen
      Ich sag ja ist keine 100% Lösung.
      Aber letztendlich ist das doch eh alles keine Diskussion wert.
      PHP Entwickler: "Python hat dies und das nicht, achja und das? wie soll ich damit arbeiten!"
      Python Entwickler: "PHP hat dies und das nicht, und was soll das sein? Alles Mist!"

      Alles eine Frage der Philosophie, aber wie man sieht, kommt man irgendwie, irgendwo mit allem ans Ziel
      So ein Blödsinn!

      Es gibt klare Anhaltspunkte, warum sich eine Sprache für etwas besser eignet. Es mag sein, dass es für jede Sprache eine sehr aktive Community gibt, die ihre Seite bis aufs Blut verteidigen würde. Es gibt aber -ganz nüchtern betrachtet- auch klare Anzeichen für den Grad der Eignung einer Sprache - aber immer bezogen auf einen Anwendungsfall.

      Erst mal komm ich dir etwas entgegen. Jede Sprache hat irgendwo ihren SweetSpot. Das heißt, es gibt diesen einen, perfekten Anwendungsfall für jede Sprache. Und sicher gibt es Sprachen, für die muss man sich diesen Anwendungsfall erst konstruieren - aber auf die will ich nicht eingehen. Ich denke einem Jeden ist klar, dass nicht jede Sprache für alles sinnvoll sein kann.

      PHP ist es beispielsweise für WebApps. Zu einem gewissen Grad auch für Server-Scripting ohne http-Kontext und zumindest theoretisch auch für Desktopanwendungen.
      Wie gesagt, theoretisch.

      Schon mal eine Webseite gesehen, die in C geschrieben wurde? PHP und C liegen im Webanwendungsumfeld recht weit auseinander. Für die meisten Entwickler auf dieser Welt gilt, dass sich PHP besser für Webseitenentwicklung eignet, als C oder auch C++. Und dass PHP in C geschrieben wurde, macht dies C nicht zu der Sprache, in der eine auf PHP laufende Anwendung geschrieben wurde - nur falls gleich entsprechende Kommentare kommen.

      Java hingegen wird noch recht häufig eingesetzt. Und zwar immer dann, wenn die Anwendung einem gewissen Sicherheits- und Entwicklungsniveau unterliegen soll. Schon mal im Bankenumfeld auf eine PHP-Anwendung gestoßen, mit der Transaktionen getätigt werden? Oder mit der Irgendwas gemacht wird, was nicht rein zur Anzeige von stumpfen Informationen einer Bank dient?

      PayPal beispielsweise hat vor kurzem seine Frontendentwicklung in weiten Teilen auf NodeJS umgestellt. Aber nicht, weil NodeJS das neue Java ist, sondern, weil ein flexibles Frontend nun mal anderen Entwicklungszyklen untersteht, als eine stabile API, die dann immer noch auf einer Sprache wie Java basiert. Warum ist nun Java gerade für geschäftskritische Prozesse besser geeignet, als PHP? Offensichtlich bekommt man PHP-Anwendungen schneller an den Markt, was doch eigentlich ein gutes Verkaufsargument ist.

      Eine PHP-Anwendung hat eine steile Initialentwicklungskurve. Man kann damit schnell zu brauchbaren Ergebnissen kommen. Wesentlich schneller als mit Java. Dann geht die Applikation live und dank einer testgetriebenen Entwicklung behält man sich auch ein gewisses Stabilitätsniveau bei. Ab diesem Punkt steht sich PHP aber schnell selbst im Weg. Denn all das, was man mit Java bereits mit Bordmitteln ausdrücken kann und somit entsprechende Tests entfallen, zieht PHP später die ganze Zeit hinter sich her und wird dann träge. Zumal Tests immer langsamer reporten als die statische Analyse einer IDE. Dafür muss die Anwendung aber neben der simplen Größe (LOC) eine hohe hierachische Tiefe (aufeinander aufbauende Komponenten) bei gleichzeitig möglichst singulärer Zuständigkeit und geringer zyklomatische Komplexität einzelner Komponenten erreichen, damit man überhaupt erst einen Vergleich anstellen kann. Will heissen: Anwendungen, die nach den besten Designleitlinien und dem optimalen Werkzeugportfolio der jeweiligen Sprache entworfen wurden, werden bei Java bei steigender Komplexität wartbarer.

      Daher kommen auch die unterschiedlichen Blickrichtungen auf die Sprache an sich. Für die einen ist PHP völlig ausreichend und jeder Entwicklungsschritt bedeutet, neue Dinge lernen zu müssen oder im schlimmsten Fall eine Anwendung zu aktualisieren. Für professionelle Entwickler, die mit größeren Anwendungen Geld verdienen, ist PHP nach dem ersten Release einfach nur eine Qual.

      Mit einigen Dingen kann man sich arrangieren. Mit anderen nicht. Wäre PHP als Sprache für das Web ausreichend gewesen, wäre ein Projekt wie HHVM nie entstanden. Wer macht sich so viel Mühe, wenn das Ergebnis nutzlos ist? Und genau hier ist der Punkt. PHP ist nur deshalb so beschissen, weil viele Features zur Formulierung stabiler Strukturen fehlen:
      • (Optionales) skalares Typehinting kann früh im Entwicklungsprozess vor inkompatiblen Aufrufen gegen Interfaces schützen, die (zum Beispiel) durch Refakturierung entstanden geändert wurden. Interessant wird dies vor allem, wenn nicht applikationseigene Komponenten, sondern 3rd-Party-Komponenten genutzt werden, die nicht einer unternehmenseigenen Updatefrequenz unterstehen.
      • Generics können aus ganzen Klassen Schablonen machen, die einer IDE erlauben, dynamische zugewiesene strikte Typen zu erkennen.
      • Skalares Typehinting und Generics können einer IDE helfen, viele Assistenten zur schnelleren Codegenerierung einzusetzen.


      Würde PHP heute alles verwerfen und noch mal neu anfangen, dann könnten wir evtl. solche Features erwarten:
      • Wesentlich weniger Interpunktion.
      • Deklarative Ansätze.
      • Gut designte Komponentenbibliothek mit vielen nützlichen webnahen Features.
      • Dezidierte Objekttypen für RDBMS-nahe Datenstrukturen, Controller oder Views.
      • Internationalisierung und Lokalisierung.
      • Transaktionsbasierte Ausführung von Programmteilen (wie bei Datenbanken können Änderungen an Datenstrukturen rückgängig gemacht werden).
      • Erstellung eigener Syntax auf Basis einer Backus-Naur-Form-ähnlichen Sprache zum performanten Indizieren von verschiedenen Formaten (JSON, YAML, CSV, Template-Sprachen, Embedded Sprachen, Steuerungssprachen etc) – ähnlich XText (deklarative Programmierung).
      • Entfernung von "Static" aus der Objektorientierung und ein IoC-Container in der Standardbibiothek.


      Dazu gäbe es für eine neue Laufzeitumgebung viel Potential, dass man mit PHP so eigentlich nicht anbohren kann:
      • Nebenläufigkeit (Threading) kann unabhängig Lauffähige Applikationsäste parallel ausführen und so manche Anwendungsszenarien um Größenordnungen beschleunigen. GO (Channels) und Java (Futures) zeigen hier leicht nutzbare Ansätze.
      • Pre-Execution-Memory-Profiles: Die Berechnung von statischen Ausführungspfaden und die daraus berechenbare Startmap können eine Anwendung um drastisch schneller starten und ausführen lassen. PHP kennt bislang nur OpcodeCaching – also die konvertierung von Menschenlesbaren Quellcode in schnell einlesbaren Bytecode, an dem noch Optimierungen vorgenommen werden können.
      • Automatische Berechnung von parallel nutzbaren Ausführungspfaden, die dann gleichzeitig ausgeführt werden – inklusive frühem LowLevelLocking zur effektiven Vermeidung von Deadlocks.
      • Gemeinsam nutzbarer Speicher kann die ständige Neuerzeugung von Objekten oder Beschaffung von Informationen stark vermindern.
      • ConnectionPooling zu externen Datenquellen.


      Bzw: https://wiki.python.org/moin/PythonVsPhp

      Kommentar


      • #48
        Also ich finde Deinen Beitrag sehr gut geschrieben, muß ich zugeben. Stimme Dir in vielen Punkten auch zu, nur ein paar kleine Anmerkungen:
        Schon mal eine Webseite gesehen, die in C geschrieben wurde? PHP und C liegen im Webanwendungsumfeld recht weit auseinander. Für die meisten Entwickler auf dieser Welt gilt, dass sich PHP besser für Webseitenentwicklung eignet, als C oder auch C++. Und dass PHP in C geschrieben wurde, macht dies C nicht zu der Sprache, in der eine auf PHP laufende Anwendung geschrieben wurde - nur falls gleich entsprechende Kommentare kommen.
        Nicht in C, sondern in C++ entwickelte Webprojekte habe ich schon gesehen und auch tlw. mit umgesetzt. Klar ist es wesentlich einfacher mit PHP, aber für bestimmte Anwendungsfälle machen Bibliotheken direkt in C++ geschrieben durchaus Sinn. Als Vergleich sei die .NET ( C# ) Variante auf Windows-Servern erwähnt, die gerne mit DLL's hantieren. Allein nur um nicht OpenSource zu sein. Dazu eignet sich auf Linux-Servern C++ eigentlich sehr gut! Zugegeben, ich habe das ewig nicht mehr so eingesetzt und es ist auch keine gängige Praxis, aber ganz sinnfrei ist das nicht.

        Java hingegen wird noch recht häufig eingesetzt. Und zwar immer dann, wenn die Anwendung einem gewissen Sicherheits- und Entwicklungsniveau unterliegen soll. Schon mal im Bankenumfeld auf eine PHP-Anwendung gestoßen, mit der Transaktionen getätigt werden? Oder mit der Irgendwas gemacht wird, was nicht rein zur Anzeige von stumpfen Informationen einer Bank dient?
        Das liegt imho mehr daran, daß PHP als lauffähiges embeded System unbekannt ist und weniger an den vermeintlichen Nachteilen.

        PayPal beispielsweise hat vor kurzem seine Frontendentwicklung in weiten Teilen auf NodeJS umgestellt. Aber nicht, weil NodeJS das neue Java ist, sondern, weil ein flexibles Frontend nun mal anderen Entwicklungszyklen untersteht, als eine stabile API, die dann immer noch auf einer Sprache wie Java basiert. Warum ist nun Java gerade für geschäftskritische Prozesse besser geeignet, als PHP? Offensichtlich bekommt man PHP-Anwendungen schneller an den Markt, was doch eigentlich ein gutes Verkaufsargument ist.
        Ich weiß nicht, ob das PayPal-Frontend nun wirklich so ein gutes Positiv-Beispiel ist, aber gut lassen wir mal so stehen...

        Würde PHP heute alles verwerfen und noch mal neu anfangen, dann könnten wir evtl. solche Features erwarten:
        Berücksichtigt man die Entwicklung und anfängliche Intention von Rasmus Lerdorf, finde ich, daß PHP sich enorm positiv entwickelt hat!
        Sicher hier hätte man es sich besser gewünscht und da fehlt etwas, aber das sind für mich subjektive Meinungen.
        Nicht alles ist ungerechtfertigt, wie gesagt, Deinen Beitrag finde ich persönlich sehr gut, aber er bestätigt eigentlich auch viele Meinungen, die zuvor schon vertreten waren.

        Für jeden Fall gibt es eine dafür am besten geeignete Sprache.
        Die Entscheidung welche man verwendet basiert eigentlich nur auf 3 Möglichkeiten:

        1. Ich entscheide mich für die insgesamt am besten dafür geeignete, mit all ihren Kompromissen, die ich ja evtl. mit Workarounds etwas verbessern kann.

        2. Ich nehme eine Sprache, die alles hat, was ich mir wünsche, obwohl diese für den Zweck eher ungeeignet scheint.

        3. Ich beginne wie einst Rasmus, das was mir fehlt von Grund auf aufzubauen.
        Competence-Center -> Enjoy the Informatrix
        PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

        Kommentar


        • #49
          Ich stimme dir übrigens auch grundsätzlich zu.
          Zugegeben hab ich mich etwas unglücklich ausgedrückt, ich wollte keineswegs sagen, dass Python etc. besser für Webentwicklung geeignet sind als PHP.
          Im Gegenteil, ich finde auch, dass PHP zur Zeit für diese Art von Entwicklung am sinnvollsten ist (jetzt mal abgesehen von so mega kritischen Projekten, die nur in Java realisierbar sind).
          Was ich damit nur sagen wollte, dass es mit Python durchaus auch funktionieren kann (muss aber nicht gleich gut und nicht besser heißen). Es gibt ja durchaus einige Projekte die mit Python realisiert sind, wenn es auch Projekte sein mögen, die nicht das Auschöpfen müssen, was mit PHP eher möglich ist.

          Letzendlich schließe ich mich voll und ganz dem an, sich für jeden Anwendungszweck die passenden Tools zu suchen.
          Die mysql_* Erweiterung ist veraltet!
          Besser: mysqli_* oder (noch besser) PDO

          Kommentar


          • #50
            Schon mal eine Webseite gesehen, die in C geschrieben wurde?
            Fefes Blog natürlich
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #51
              Ich frage mich nur, was die Aussage hinter den – absolut lesenswerten – Ausführungen ist.

              Ein Vergleich von PHP und Java?

              Kommentar


              • #52
                mögliche erweiterungen wurden glaube ich hier auch schon mal angeschnitten:
                http://www.php.de/off-topic-diskussi...ee-ansatz.html
                http://www.php.de/off-topic-diskussi...p-6-ideen.html

                Kommentar


                • #53
                  Ich find es ja jetzt doch interessant, dass sich mein eigentlich doch so sinnloser Thread so reger Konversation erfreut


                  Zitat von mermshaus Beitrag anzeigen
                  Ein Vergleich von PHP und Java?
                  Ich glaub, das muss man gar nicht vergleichen.
                  Die mysql_* Erweiterung ist veraltet!
                  Besser: mysqli_* oder (noch besser) PDO

                  Kommentar

                  Lädt...
                  X