Felix Riesterer: PHP-Facepalm meines Tages: 0 == '*new*'

0 80

PHP-Facepalm meines Tages: 0 == '*new*'

Felix Riesterer
  • menschelei
  1. 0
    dedlfix
  2. 0

    typensicherer Vergleiche, PHP wie Javascript

    tami
    • programmiertechnik
    1. 0
      dedlfix
      1. 0
        Felix Riesterer
        1. 1
          Christian Kruse
        2. 0
          dedlfix
        3. 0
          Tara
      2. 0
        tami
        1. 0
          dedlfix
          1. 0
            tami
  3. 0
    Der Martin
    1. 0
      Encoder
      1. 0
        dedlfix
        1. 0
          Whouzuo
          1. 3
            Tara
            1. 0
              tami
              1. 0
                Tara
                1. 0

                  Programmiersprachen sind keine Autos

                  tami
                  1. 0
                    Whouzuo
                    1. 0
                      Der Martin
                      1. 0
                        Whouzuo
                    2. 0

                      Schüler können kommunizieren - auch auf Englisch

                      Felix Riesterer
                      • meinung
                      1. 0
                        Whouzuo
                    3. 0
                      tami
                      1. 0
                        Whouzuo
                        1. 0
                          tami
                2. 0
                  M.
            2. 0
              M.
              1. 0
                Auge
                1. 0
                  Matthias Apsel
                  1. 0
                    Auge
              2. 0
                Der Martin
                1. 0
                  M.
                  1. 0
                    Matthias Apsel
                    1. 0
                      M.
                      1. 0
                        Christian Kruse
                        1. 0
                          Tabellenkalk
                      2. 0

                        PHP - nutze die guten Seiten und nutze Frameworks mit Modulen

                        tami
                        1. 0
                          M.
                        2. 0
                          Linker Setzer
                        3. 0
                          Whouzuo
                          1. 0
                            tami
                            1. 0
                              Whouzuo
                              1. 0
                                tami
                                1. 0
                                  Whouzuo
                                  1. 0
                                    M.
                                    1. 0
                                      Whouzuo
                                      1. 0
                                        M.
                                        1. 0
                                          Whouzuo
                                          1. 0
                                            M.
                                            1. 0
                                              Whouzuo
                                              1. 0
                                                M.
                                                1. 0
                                                  Whouzuo
                                                  1. 0
                                                    M.
                                                    1. 0
                                                      Whouzuo
                                                      1. 0
                                                        M.
                                                      2. 0
                                                        Der Martin
                                                        1. 0
                                                          Whouzuo
                                                          1. 0
                                                            M.
                          2. 0
                            M.
                            1. 0
                              Whouzuo
                              1. 0
                                M.
                                1. 0
                                  tami
                                  1. 0
                                    M.
                                    1. 0

                                      Texteditor "vs." IDE

                                      tami
                                      1. 0
                                        M.
                                2. 0
                                  Whouzuo
                                  1. 0
                                    M.
                                    1. 0
                                      Whouzuo
                                      1. 0
                                        M.
                      3. 1
                        Sven Rautenberg
                        1. 0
                          MudGuard
                        2. 0
                          M.
                          1. 0
                            Sven Rautenberg
                            1. 0
                              M.
                              1. 0
                                Matti Mäkitalo
                  2. 0
                    Der Martin
              3. 0
                1UnitedPower
        2. 0
          Encoder

Liebe Mitlesende,

Heute bin ich in PHP wieder über den Vergleichsoperator gestolpert:

$key = 0;  
if ($key != '*new*') {  
    // kommt nicht an  
}

Natürlich war die Lösung wieder der typsichere Vergleichsoperator mit dem extra Istgleichzeichen:

$key = 0;  
if ($key !== '*new*') {  
    // kommt jetzt an  
}

Warum ist denn eine Ganzzahl null einem Stringwert gleichzusetzen? Wird jetzt zuerst der String in eine Zahl umgewandelt (im Sinne von abs('*new*')?), oder wird irgendwie anders umgewandelt, um die beiden Werte zu vergleichen?

Liebe Grüße,

Felix Riesterer.

--
"Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
  1. Tach!

    Warum ist denn eine Ganzzahl null einem Stringwert gleichzusetzen? Wird jetzt zuerst der String in eine Zahl umgewandelt?

    Ja, aber warum mischst du denn die Typen durcheinander?

    dedlfix.

  2. hi Felix,

    Liebe Mitlesende,

    Heute bin ich in PHP wieder über den Vergleichsoperator gestolpert:

    $key = 0;

    if ($key != 'new') {
        // kommt nicht an
    }

    
    >   
    > Natürlich war die Lösung wieder der typsichere Vergleichsoperator mit dem extra Istgleichzeichen:  
    >   
    > ~~~php
    
    $key = 0;  
    
    > if ($key !== '*new*') {  
    >     // kommt jetzt an  
    > }
    
    

    Warum ist denn eine Ganzzahl null einem Stringwert gleichzusetzen? Wird jetzt zuerst der String in eine Zahl umgewandelt (im Sinne von abs('*new*')?), oder wird irgendwie anders umgewandelt, um die beiden Werte zu vergleichen?

    Es macht m.E. keinen Sinn, typenlos zu vergleichen: http://forum.de.selfhtml.org/archiv/2013/10/t215185/#m1473919.

    Es ist und bleibt, wie man hier auch sieht, immer fehleranfällig. Und man muss die ganze Typecastabelle auswendig und richtig können ...;

    mfg

    tami

    1. Tach!

      Es macht m.E. keinen Sinn, typenlos zu vergleichen.

      Kennst du überhaupt die genaue Aufgabenstellung, dass du die Sinnhaftigkeit der Lösung beurteilen kannst? Mir stellt sich eher die Frage, warum hier Werte unterschiedlicher Typen verglichen werden. Da müsste man ansetzen, um eine passendere Lösung zu finden. Einfach einen typsicheren Vergleich zu nehmen, scheint mir nicht die angemessene Lösung zu sein. Aber um das genauer zu beurteilen brauch ich Informationen zum Anwendungsfall.

      dedlfix.

      1. Lieber dedlfix,

        Aber um das genauer zu beurteilen brauch ich Informationen zum Anwendungsfall.

        ich vergleiche Array-Keys, die sowohl numerisch als auch alphanumerisch sein können. Die numerischen Werte sind anscheinend nicht als Strings definiert...

        Liebe Grüße,

        Felix Riesterer.

        --
        "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
        1. Moin Felix,

          Aber um das genauer zu beurteilen brauch ich Informationen zum Anwendungsfall.

          ich vergleiche Array-Keys, die sowohl numerisch als auch alphanumerisch sein können. Die numerischen Werte sind anscheinend nicht als Strings definiert...

          Das hat damit nichts zu tun. PHP castet die Werte, wenn sie wie Ziffern aussehen, nach int:

            
          ➜ ckruse@pug ~/Sites/cforum (master) ✗ % php -r "var_dump(array('1' => 2));"  
          array(1) {  
            [1]=>  
            int(2)  
          }  
          ➜ ckruse@pug ~/Sites/cforum (master) ✗ %  
          
          

          Das kann auch andere unvorhergesehene Ergebnisse nach sich ziehen.

          LG,
           CK

        2. Tach!

          Aber um das genauer zu beurteilen brauch ich Informationen zum Anwendungsfall.
          ich vergleiche Array-Keys, die sowohl numerisch als auch alphanumerisch sein können.

          Das ist zu wenig Information, um den Fall zu beurteilen. Wie kommt es denn dazu, dass da so verschiedene Werte Verwendung finden?

          dedlfix.

        3. ich vergleiche Array-Keys, die sowohl numerisch als auch alphanumerisch sein können.
          Die numerischen Werte sind anscheinend nicht als Strings definiert...

          Da fällt mir noch was Lustiges ein.

      2. hi dedlfix,

        Kennst du überhaupt die genaue Aufgabenstellung, dass du die Sinnhaftigkeit der Lösung beurteilen kannst? Mir stellt sich eher die Frage, warum hier Werte unterschiedlicher Typen verglichen werden. Da müsste man ansetzen, um eine passendere Lösung zu finden. Einfach einen typsicheren Vergleich zu nehmen, scheint mir nicht die angemessene Lösung zu sein. Aber um das genauer zu beurteilen brauch ich Informationen zum Anwendungsfall.

        Nuja, die "Diskussion" ist ja alt ...; genau wie die Fallstricke.

        http://forum.golem.de/kommentare/security/facebook-programmiersprache-hack-offiziell-verfuegbar/typensicherheit-ist-schon-was-feines.../81012,3680316,3680871,read.html#msg-3680871

        http://forum.de.selfhtml.org/archiv/2014/5/t217557/#m1494924

        Wenn du typensicher vergleichst, brauchst du allenfalls ein paar Zeichen mehr, aber der Code ist dafür nicht nur typensicher sondern eineindeutig und also auch "idiotensicher".

        mfg

        tami

        1. Tach!

          Wenn du typensicher vergleichst, brauchst du allenfalls ein paar Zeichen mehr, aber der Code ist dafür nicht nur typensicher sondern eineindeutig und also auch "idiotensicher".

          Bei meiner Frage ging es nicht darum ob der eine oder der andere Feuerlöscher der bessere sei, sondern wie man den Brand von vorn herein verhindert.

          dedlfix.

          1. hi dedlfix,

            Wenn du typensicher vergleichst, brauchst du allenfalls ein paar Zeichen mehr, aber der Code ist dafür nicht nur typensicher sondern eineindeutig und also auch "idiotensicher".

            Bei meiner Frage ging es nicht darum ob der eine oder der andere Feuerlöscher der bessere sei, sondern wie man den Brand von vorn herein verhindert.

            mag ja sein. ein sicherer feuerlöscher ist aber sicher besser als einer der nur vielleicht funktioniert. dabei ist ein === natürlich kein feuerlöscher. ein sicherer brandverhinderer schon eher.

            mfg

            tami

  3. Hallo Felix,

    Heute bin ich in PHP wieder über den Vergleichsoperator gestolpert:

    na dann willkommen im großen Club. ;-)

    $key = 0;

    if ($key != 'new') {
        // kommt nicht an
    }

    
    >   
    > Natürlich war die Lösung wieder der typsichere Vergleichsoperator mit dem extra Istgleichzeichen:  
      
    Genau. Natürlich gibt es ab und zu Fälle, in denen die automatische Typumwandlung von Vorteil ist, zum Beispiel wenn URL-Parameter (die ja grundsätzlich Strings sind) als Zahlenwert verwendet werden sollen. Aber allgemein ist diese automatische Umwandlung ein omnipräsenter Fallstrick.  
      
    
    > Warum ist denn eine Ganzzahl null einem Stringwert gleichzusetzen? Wird jetzt zuerst der String in eine Zahl umgewandelt (im Sinne von `abs('*new*')`{:.language-php}?), oder wird irgendwie anders umgewandelt, um die beiden Werte zu vergleichen?  
      
    Für PHP ist intern der Typ "integer" der einfachere gegenüber "string", deshalb wird der string-Operand zunächst in number konvertiert, bevor der Vergleich durchgeführt wird. Dabei wird "\*new\*" verständlicherweise zu 0, und das ist nicht ungleich 0.  
      
    [Etwas ausführlicher ...](http://sldn.softlayer.com/blog/dmcaloon/PHP-Type-Conversions-Comparison)  
      
    [Die entsprechende Seite im PHP-Manual](http://php.net/manual/en/types.comparisons.php), die ich erst verlinken wollte, scheint ein kleines Problem zu haben - Opera zeigt bei mir den gesamten Fließtext in der Schriftart Wingdings oder einer ähnlichen Symbolschrift an. Firefox nimmt stattdessen eine normale, lesbare Schrift. Merkwürdig. :-(  
      
    So long,  
     Martin  
    
    -- 
    Niemand lebt allein von seinen Träumen.  
    Aber wer träumt, lebt noch.  
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    
    1. Bei sowas könnte ich auch reinschlagen. Da will man wissen ob etwas 0 ist und alles was keine andere Zahl ist gilt als 0. So eine Scheiße!

      Natürlich gibt es ab und zu Fälle, in denen die automatische Typumwandlung von Vorteil ist

      aber nicht der gezeigte, denn hier funktioniert es ja nicht :-)

      1. Tach!

        Bei sowas könnte ich auch reinschlagen. Da will man wissen ob etwas 0 ist und alles was keine andere Zahl ist gilt als 0. So eine Scheiße!

        Warum bist du dir so sicher, dass man nicht dich schlagen müsste ;-) , wenn du Strings mit Zahlen vergleichst?

        dedlfix.

        1. Tach!

          Bei sowas könnte ich auch reinschlagen. Da will man wissen ob etwas 0 ist und alles was keine andere Zahl ist gilt als 0. So eine Scheiße!

          Warum bist du dir so sicher, dass man nicht dich schlagen müsste ;-) , wenn du Strings mit Zahlen vergleichst?

          Weil man vorher die Sprachdesigner dafür verhauen müsste, dass sie einem nicht einen Fehler oder _zumindest_ eine Fette Warnung (die man explizit abschalten müsste, wenn man sie nicht sehen will) um die Ohren hauen. ;)

          1. Bei sowas könnte ich auch reinschlagen. Da will man wissen ob etwas 0 ist und alles was keine andere Zahl ist gilt als 0. So eine Scheiße!

            Warum bist du dir so sicher, dass man nicht dich schlagen müsste ;-) , wenn du Strings mit Zahlen vergleichst?

            Weil man vorher die Sprachdesigner

            Sprachdesign? PHP ist eine Ansammlung schlechter Beispiele. Mit Sprachdesign hat das nichts zu tun, höchstens mit dem Fehlen desselben.

              1. http://fabien.potencier.org/article/64/php-is-much-better-than-you-think

                "PHP is probably not the best designed language in the world, but it lets you get things done, and you can't argue with that."

                Wenn der einzige Anspruch an eine Sprache ist, dass man seinen Kram schnell irgendwie zusammenzimmern kann, dann gibt es sicher nichts gegen PHP einzuwenden.

                Dann hast du allerdings auch den Artikel, auf den ich hingewiesen haben, nicht verstanden, und zwar nicht einmal im Ansatz.

                Es ist in Ordnung, wenn jemand an ein Auto keinerlei Ansprüche stellt, außer dass es mittels Motorkraft vorwärts rollt, denn für alles andere gibt es ja den Zubehörhandel sowie Hammer und Meißel. Für diesen Jemand sind Trabant und Wartburg, meinetwegen auch ein Ford Taunus Baujahr '60, sicher eine völlig ausreichende, akzeptable Wahl.
                Andere Leute hingegen erwarten von einem für sie "guten" Auto gewisse Dinge der Ingenieurskunst, die berühmte Knautschzone etwa, vielleicht einen Airbag. Sind sie deshalb Nörgler, ihre vorgebrachten Mängelpunkte nicht beachtenswert?

                Die genannten Autos bringen dich zweifelsohne schnell und einfach von A nach B, aber spätestens wenn du so ein Fahrzeug ungebremst an einem Baum parkst, erst von der Lenksäule aufgespießt, dann vom Motorblock zerquetscht und schließlich vom Baumstamm in zwei Teile zerrissen, wirst du dir auf dem Weg in den Himmel sicher noch einmal überlegen, ob diese anderen Leute mit den gewissen Ansprüchen tatsächlich nur am Meckern waren oder ob sie nicht vielleicht doch nachvollziehbare Punkte hatten - vor allem aber, ob die Aussage "Das Auto ist zwar nicht so toll, aber ich kenne ja seine Mängel und stelle mich darauf ein" tatsächlich schon reicht, um es als objektiv gutes Automobil zu bezeichnen.

                1. hi Tara,

                  http://fabien.potencier.org/article/64/php-is-much-better-than-you-think

                  "PHP is probably not the best designed language in the world, but it lets you get things done, and you can't argue with that."

                  Wenn der einzige Anspruch an eine Sprache ist, dass man seinen Kram schnell irgendwie zusammenzimmern kann, dann gibt es sicher nichts gegen PHP einzuwenden.

                  Eine Programmiersprache ist kein Auto. Sie ist eher wie die Einzelteile, aus denen Du ein Auto bauen kannst. Deshalb: a) nutze die Teile, die "gut" sind und b) nutze Frameworks. Damit bist Du all Deine Probleme los (s. a. meine Links). Es macht keinen Sinn, sich über Inkonsitenzen im Deutsch, Englischen, Spanischen oder Chinesischen aufzuregen, wenn die halbe Welt das spricht und man damit hervorragend kommunizieren kann.

                  mfg

                  tami

                  1. hi Tara,

                    http://fabien.potencier.org/article/64/php-is-much-better-than-you-think

                    "PHP is probably not the best designed language in the world, but it lets you get things done, and you can't argue with that."

                    Wenn der einzige Anspruch an eine Sprache ist, dass man seinen Kram schnell irgendwie zusammenzimmern kann, dann gibt es sicher nichts gegen PHP einzuwenden.

                    Eine Programmiersprache ist kein Auto. Sie ist eher wie die Einzelteile, aus denen Du ein Auto bauen kannst.

                    Nope, sie ist das Auto. Die Einzelteile sind die einzelnen Sprachkonstrukte.

                    Deshalb: a) nutze die Teile, die "gut" sind und b) nutze Frameworks. Damit bist Du all Deine Probleme los (s. a. meine Links).

                    Bist du nicht. Z.B. die Sicherheitsprobleme bist du nicht los. Und es ist ja nicht damit getan, einfach nur Framework-Funktionen aufzurufen. Irgendwas wirst du auch selbst schreiben wollen. ;)

                    Es macht keinen Sinn, sich über Inkonsitenzen im Deutsch, Englischen, Spanischen oder Chinesischen aufzuregen, wenn die halbe Welt das spricht und man damit hervorragend kommunizieren kann.

                    Hervorragend? Frag das mal die Schüler, die sich über die tollen Ausnahmeregeln im Englischen aufregen. Die erzählen dir was. Umgekehrt natürlich genauso. ;)

                    1. Hallo,

                      Es macht keinen Sinn, sich über Inkonsitenzen im Deutsch, Englischen, Spanischen oder Chinesischen aufzuregen, wenn die halbe Welt das spricht und man damit hervorragend kommunizieren kann.
                      Hervorragend? Frag das mal die Schüler, die sich über die tollen Ausnahmeregeln im Englischen aufregen.

                      die haben's aber noch sehr leicht im Vergleich zu denen, die Französisch oder Deutsch als Fremdsprache lernen sollen. Englisch ist dagegen sehr einfach gestrickt.

                      Über Spanisch, Italienisch oder Mandarin sage ich lieber nichts, weil ich diese Sprachen nur sehr oberflächlich bzw. im Falle von Mandarin überhaupt nicht kenne.

                      Ciao,
                       Martin

                      --
                      Theorie ist, wenn jeder weiß, wie's geht, und es geht trotzdem nicht.
                      Praxis ist, wenn's geht, und keiner weiß warum.
                      Bei uns sind Theorie und Praxis vereint: Nichts geht, und keiner weiß warum.
                      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                      1. Hallo,

                        Es macht keinen Sinn, sich über Inkonsitenzen im Deutsch, Englischen, Spanischen oder Chinesischen aufzuregen, wenn die halbe Welt das spricht und man damit hervorragend kommunizieren kann.
                        Hervorragend? Frag das mal die Schüler, die sich über die tollen Ausnahmeregeln im Englischen aufregen.

                        die haben's aber noch sehr leicht im Vergleich zu denen, die Französisch oder Deutsch als Fremdsprache lernen sollen. Englisch ist dagegen sehr einfach gestrickt.

                        Genau und trotzdem selbst die meckern schon gehörig. :D

                    2. Lieber Whouzuo,

                      wenn die halbe Welt das spricht und man damit hervorragend kommunizieren kann.

                      Hervorragend? Frag das mal die Schüler, die sich über die tollen Ausnahmeregeln im Englischen aufregen.

                      was hat denn "kommunizieren" mit "Ausnahmeregeln" zu tun? Korrekte Sätze in "Schriftenglisch" zu formulieren ist eine Sache, sich in der Englischen Sprache verständlich machen eine andere. Beispiel:

                      A: You hungry?
                      B: Nope.

                      A inquired after B feeling any hungry to which B replied in the negative.

                      Ersteres ist Kommunizieren: Beide Teilnehmer verstehen genau worum es geht und was das jeweils andere Individuum will.

                      Zweiteres ist ein Satz (wenn auch ein etwas geschraubter), den Abiturienten so nicht unbedingt hinkriegen.

                      Liebe Grüße,

                      Felix Riesterer.

                      --
                      "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
                      1. Lieber Whouzuo,

                        wenn die halbe Welt das spricht und man damit hervorragend kommunizieren kann.

                        Hervorragend? Frag das mal die Schüler, die sich über die tollen Ausnahmeregeln im Englischen aufregen.

                        was hat denn "kommunizieren" mit "Ausnahmeregeln" zu tun?

                        Ganz einfach: man muss es erst aufwändig lernen. Bis dahin (und das ist ein langer Weg) kommuniziert man eben auf fehlerhafte Weise. Manches kann der Gegenüber ausgleichen, aber nicht alles. False friends z.B. lassen hier grüßen.

                        Ersteres ist Kommunizieren: Beide Teilnehmer verstehen genau worum es geht und was das jeweils andere Individuum will.

                        Ja in diesem Beispiel. Verallgemeinern kannst du das nicht.

                    3. hi Whouzuo,

                      Wenn der einzige Anspruch an eine Sprache ist, dass man seinen Kram schnell irgendwie zusammenzimmern kann, dann gibt es sicher nichts gegen PHP einzuwenden.

                      Eine Programmiersprache ist kein Auto. Sie ist eher wie die Einzelteile, aus denen Du ein Auto bauen kannst.

                      Nope, sie ist das Auto. Die Einzelteile sind die einzelnen Sprachkonstrukte.

                      Ok, dann zeig mir mal, wie Du dein Auto fährst, indem Du nur die guten Teilen benutzt.

                      Deshalb: a) nutze die Teile, die "gut" sind und b) nutze Frameworks. Damit bist Du all Deine Probleme los (s. a. meine Links).

                      Bist du nicht. Z.B. die Sicherheitsprobleme bist du nicht los. Und es ist ja nicht damit getan, einfach nur Framework-Funktionen aufzurufen. Irgendwas wirst du auch selbst schreiben wollen. ;)

                      Naja, um Konsistenzen und Sicherheit sind Frameworks aber bemüht.

                      Es macht keinen Sinn, sich über Inkonsitenzen im Deutsch, Englischen, Spanischen oder Chinesischen aufzuregen, wenn die halbe Welt das spricht und man damit hervorragend kommunizieren kann.

                      Hervorragend? Frag das mal die Schüler, die sich über die tollen Ausnahmeregeln im Englischen aufregen. Die erzählen dir was. Umgekehrt natürlich genauso. ;)

                      Nee, die Lehrerin sagt ja nicht: nutze nur die "good parts". Oder ein Framework.

                      mfg

                      tami

                      1. hi Whouzuo,

                        Wenn der einzige Anspruch an eine Sprache ist, dass man seinen Kram schnell irgendwie zusammenzimmern kann, dann gibt es sicher nichts gegen PHP einzuwenden.

                        Eine Programmiersprache ist kein Auto. Sie ist eher wie die Einzelteile, aus denen Du ein Auto bauen kannst.

                        Nope, sie ist das Auto. Die Einzelteile sind die einzelnen Sprachkonstrukte.

                        Ok, dann zeig mir mal, wie Du dein Auto fährst, indem Du nur die guten Teilen benutzt.

                        Ganz einfach, ich schmeiß die Rücksitze raus, lad viel Krempel rein und fahr trotzdem. Oder ich benutze im Sommer die Sommerreifen und im Winter die Winterreifen. =)

                        Klar, manche Sprachkonstrukte (z.B. Bedingungen) wird man immer nutzen müssen. Bei vielen hat man aber die Wahl. Im Falle von PHP hat man manchmal aber eben auch keine Wahl, weil es bestimmte Dinge nicht gibt. Z.B. first-class-functions.
                        Das ist so als wenn ich meine Klimaanlage anschalten will, aber es gibt nur die Belüftung. Damit komme ich vielleicht irgendwie auch zum Ziel, aber es geht auch besser.

                        Deshalb: a) nutze die Teile, die "gut" sind und b) nutze Frameworks. Damit bist Du all Deine Probleme los (s. a. meine Links).

                        Bist du nicht. Z.B. die Sicherheitsprobleme bist du nicht los. Und es ist ja nicht damit getan, einfach nur Framework-Funktionen aufzurufen. Irgendwas wirst du auch selbst schreiben wollen. ;)

                        Naja, um Konsistenzen und Sicherheit sind Frameworks aber bemüht.

                        Ja, darum dass sie nicht noch MEHR Sicherheitsprobleme einführen. ;)
                        Und die komische Benamsung diverser PHP built-in Funktionen beheben sie auch nicht.

                        Es macht keinen Sinn, sich über Inkonsitenzen im Deutsch, Englischen, Spanischen oder Chinesischen aufzuregen, wenn die halbe Welt das spricht und man damit hervorragend kommunizieren kann.

                        Hervorragend? Frag das mal die Schüler, die sich über die tollen Ausnahmeregeln im Englischen aufregen. Die erzählen dir was. Umgekehrt natürlich genauso. ;)

                        Nee, die Lehrerin sagt ja nicht: nutze nur die "good parts". Oder ein Framework.

                        Warum auch - das ist so als wenn du sagst "mach das, was du für sinnvoll hälst". Jeder benutzt nur die "good parts", warum sollte er auch die "bad parts" benutzen, wenn es die "good parts" doch offensichtlich gibt?
                        Nur sind sie bei PHP eben oft entweder nicht vorhanden oder nicht offensichtlich.

                        Aber ist auch okay. Entwickelt ruhig weiter mit PHP. Ich nutze es selbst ab und zu für kleine Scripte auf meinem Server. Was Größeres würde ich damit aber nie nie niemals entwickeln wollen. Wenn man einmal in den Genuss funktionaler und aspektorientierter sowie verünftig umgesetzter objektorientier Programmierung gekommen ist, der empfindet PHP als Qual. Genauso, wie ich Autos ohne Servolenkung ebenfalls als Qual empfinde.

                        1. hi Whouzuo,

                          Aber ist auch okay. Entwickelt ruhig weiter mit PHP. Ich nutze es selbst ab und zu für kleine Scripte auf meinem Server. Was Größeres würde ich damit aber nie nie niemals entwickeln wollen. Wenn man einmal in den Genuss funktionaler und aspektorientierter sowie verünftig umgesetzter objektorientier Programmierung gekommen ist, der empfindet PHP als Qual. Genauso, wie ich Autos ohne Servolenkung ebenfalls als Qual empfinde.

                          nuja ... dann eben "nie nie niemals" ...;

                          mfg

                          tami

                2. Mahlzeit,

                  Wenn der einzige Anspruch an eine Sprache ist, dass man seinen Kram schnell irgendwie zusammenzimmern kann, dann gibt es sicher nichts gegen PHP einzuwenden.

                  In welcher Sprache programmierst du denn?
                  Denn dieser Satz gilt auch für Perl, Python, Ruby und einige andere Scriptsprachen.

                  Bin mal gespannt ob von dir nochmal was konstruktives kommt, bisher gabs nur Bashing ohne Hintergrund.

                  --
                  42
            1. Mahlzeit,

              Sprachdesign? PHP ist eine Ansammlung schlechter Beispiele. Mit Sprachdesign hat das nichts zu tun, höchstens mit dem Fehlen desselben.

              Einen Artikel, der über 2,5 Jahre alt ist, zu zitieren, wenn es um eine Programmiersprache geht, zeugt IMO von Unwissen. 2,5 Jahre ensprechend ca. 8-10 Generationen in der IT und grad in den letzten 2,5 Jahren hat sich in PHP viel getan.

              Lustig finde ich dann ein "fachlich hilfreich". Offensichtlich werde die Leute die Lesen _und_
               mitdenken immer weniger :D

              Als nächstes kommt dann jemand der sich über Pearl beschwert, weil er es 1999 in der iX gelesen hat 8)

              --
              42
              1. Hallo

                Als nächstes kommt dann jemand der sich über Pearl beschwert, weil er es 1999 in der iX gelesen hat 8)

                Gab's den Laden damals schon? *scnr*

                Tschö, Auge

                --
                Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                Terry Pratchett, "Wachen! Wachen!"
                ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                Veranstaltungsdatenbank Vdb 0.3
                1. Om nah hoo pez nyeetz, Auge!

                  Als nächstes kommt dann jemand der sich über Pearl beschwert, weil er es 1999 in der iX gelesen hat 8)
                  Gab's den Laden damals schon? *scnr*

                  Der ist viel älter ;-)
                  Black Pearl
                  Quelle: http://commons.wikimedia.org/wiki/File:BlackPearl.jpg

                  Matthias

                  --
                  Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Brom und Bromelie.

                  1. Hallo

                    Als nächstes kommt dann jemand der sich über Pearl beschwert, weil er es 1999 in der iX gelesen hat 8)
                    Gab's den Laden damals schon? *scnr*

                    Der ist viel älter ;-)
                    Black Pearl
                    Quelle: http://commons.wikimedia.org/wiki/File:BlackPearl.jpg

                    Nicht schlecht, aber es geht noch vieeel älter. .-)

                    In einem über 7000 Jahre alten neolithischen Grab im Emirat Umm al Quwain (Vereinigte Arabische Emirate) haben Forscher 2012 eine Perle entdeckt.
                    Quelle: de.wikipedia.org, Perle

                    Tschö, Auge

                    --
                    Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                    Terry Pratchett, "Wachen! Wachen!"
                    ie:{ fl:| br:> va:) ls:[ fo:) rl:( ss:| de:> js:| zu:}
                    Veranstaltungsdatenbank Vdb 0.3
              2. Hi,

                Lustig finde ich dann ein "fachlich hilfreich". Offensichtlich werde die Leute die Lesen _und_  mitdenken immer weniger :D

                das war ich, weil ich den Artikel gelesen und größtenteils verstanden habe, und weil viele der ... ähm, Eigentümlichkeiten von PHP, die da angeprangert werden, bis heute unverändert sind. Einige davon waren mir noch gar nicht bekannt.

                Ciao,
                 Martin

                --
                There are 10 types of people in the world: Those who understand the binary system, and those who don't.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Mahlzeit,

                  Einige davon waren mir noch gar nicht bekannt.

                  Das liegt daran, dass die meisten "Mängel" dort einmal Altlasten aus früheren Versionen sind und einige nur dann ein Problem darstellen, wenn der Programmierer sie dazu macht.

                  Und wenn ich dann als Negativpunkt lese, dass PHP konstrukte aus C, C++ und Java übernommen hat, muss ich mich fragen, was will der Autor damit. PHP-Bashing liegt da nahe.

                  Ich halte diesen Artikel für Bild-Niveau. Hauptsächlich werden Eigenheiten von PHP deshalb als Mangel bezeichnet, weil es nicht genauso funktioniert wie bei anderen Sprachen. Wieso alle Sprachen gleich sein sollen, versteh ich aber nicht, dann brauch ich auch nur noch eine Programmiersprache.

                  Lustig dann (oder vielleicht traurig):

                  @fopen()

                  Wird bemängelt, dass keine Fehlermeldung ausgegeben wird. Es wäre ein Mangel, wenn eine Fehlermeldung kommen würde, obwohl sie explizit unterdrückt wurde.

                  Und was in diesem Artikel grösstenteils fehlt, sind die _echten_ Nachteile von PHP, aber das zeigt mir auch recht deutlich, dass es hier nur drum geht, PHP schlecht zu machen.

                  Ich halte PHP als eine der schlechtesten Programmiersprachen, aber deshalb ist sie trotzdem nicht mehr aus dem Web wegzudenken. Dass aber die Bashing-Artikel immer von Leuten verfasst werden, die anscheinend keine Ahnung von PHP haben, zeigt mir deutlich, dass es keine so gravierenden Nachteile, dass es echt sinnvoll Artikel dazu gibt. ;)

                  --
                  42
                  1. Om nah hoo pez nyeetz, M.!

                    Dass aber die Bashing-Artikel immer von Leuten verfasst werden, die anscheinend keine Ahnung von PHP haben, zeigt mir deutlich, dass es keine so gravierenden Nachteile, dass es echt sinnvoll Artikel dazu gibt. ;)

                    So, jetzt machst du mal bitte einen ordentlichen Satz draus ;-) und dann würde ich mich freuen, wenn du einen Link zu dem,

                    was in diesem Artikel grösstenteils fehlt, sind die _echten_ Nachteile von PHP,

                    hättest.

                    Matthias

                    --
                    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen HAL und Halsbandarassari.

                    1. Mahlzeit,

                      Dass aber die Bashing-Artikel immer von Leuten verfasst werden, die anscheinend keine Ahnung von PHP haben, zeigt mir deutlich, dass es keine so gravierenden Nachteile, dass es echt sinnvoll Artikel dazu gibt. ;)

                      So, jetzt machst du mal bitte einen ordentlichen Satz draus ;-)

                      Verdammt.... zu schnell geschrieben ;). Ich versuchs nochmal:

                      Dass aber die Bashing-Artikel immer von Leuten verfasst werden, die anscheinend keine Ahnung von PHP haben, zeigt mir deutlich, dass es keine so gravierenden Nachteile gibt, dass echt sinnvolle Artikel dazu geschrieben werden.

                      und dann würde ich mich freuen, wenn du einen Link zu dem,

                      was in diesem Artikel grösstenteils fehlt, sind die _echten_ Nachteile von PHP,

                      hättest.

                      Dazu gibt es keinen. Ich meinte die Nachteile, die ICH bei PHP sehe. Die Nachteile des genannten Artikel treten bei mir entweder nicht auf, weil ich sie bewusst verursachen müsste oder weil meine Programmstruktur es verhindert.

                      Der grösste Nachteil bei PHP ist mMn immer noch mangelhaftes OOP und ein Modul-System, ähnlich wie CPAN bei Perl.

                      Beim OOP ist es einfach inkonsequent, bei z.B. mysqli mit Objekten zu arbeiten, die Ergebnisse dann aber als Array zurück zu bekommen. Wenn ich das Ergebnis als Objekt haben will, muss ich mir das selbst bauen.

                      Dann stört mich, dass es einige gravierende Unterschiede zwischen Apache-Modul und PHP-FCGI gibt, die mich als Programmierer dazu zwingen, verschiedene Entwicklungsumgebungen zu testen (und der IIS kommt dann auch noch dazu, wo es nochmal Unterschiede gibt)

                      Allerdings gibt es Nachteile bei jeder Programmiersprache. Bei C nervt die statische Speicherverwaltung, bei Java nervt mich die pure Existenz ;)

                      --
                      42
                      1. Moin M.,

                        Dass aber die Bashing-Artikel immer von Leuten verfasst werden, die anscheinend keine Ahnung von PHP haben, zeigt mir deutlich, dass es keine so gravierenden Nachteile gibt, dass echt sinnvolle Artikel dazu geschrieben werden.

                        Eher daran, dass Leute, die so tief in die Materie eindringen keine Zeit und/oder Muße haben, Artikel zu schreiben ;)

                        LG,
                         CK

                        1. Hallo,

                          Eher daran, dass Leute, die so tief in die Materie eindringen keine Zeit und/oder Muße haben, Artikel zu schreiben ;)

                          oder sich ganz einfach nicht für einen Artikelschreiber halten.

                          Gruß
                          Kalk

                      2. Der grösste Nachteil bei PHP ist mMn immer noch mangelhaftes OOP und ein Modul-System, ähnlich wie CPAN bei Perl.

                        nutze die guten seiten (das gilt auch für javascript) [wozu überhaupt @fopen nutzen, wenn es file_get_contents() gibt?]
                        http://it-ebooks.info/book/95/

                        nutze frameworks [kaum einer nutzt ja javascript pur, ohne jquery o.ä.]
                        http://modules.zendframework.com/

                        was früher mal PEAR war, ist jetzt das ZF, Beispiel für eine einfache Mail mit ZF:
                        http://forum.de.selfhtml.org/archiv/2014/5/t217437/#m1493705

                        mfg

                        tami

                        1. Mahlzeit,

                          nutze die guten seiten (das gilt auch für javascript)

                          Das mache ich. Und da es funktioniert weiss ich, dass der oben zitierte Beitrag einfach nur Bashing ist.

                          [wozu überhaupt @fopen nutzen, wenn es file_get_contents() gibt?]

                          Ein weiteres Beispiel für Bashing im Artikel.

                          Ich hab mit mittlerweile mein eigenes Framework entwickelt. Ist über die Jahre gewachsen und wird von fast allen meinen Kunden eingesetzt.

                          --
                          42
                        2. Der grösste Nachteil bei PHP ist mMn immer noch mangelhaftes OOP und ein Modul-System, ähnlich wie CPAN bei Perl.

                          nutze die guten seiten (das gilt auch für javascript) [wozu überhaupt @fopen nutzen, wenn es file_get_contents() gibt?]

                          Woher soll man denn wissen, was es gibt?
                          In vernünftigen, objektorientierten Sprachen habe ich ein File-Objekt, setze nen Punkt dahinter und lass mir schön zeigen, was für Funktionen es gibt. In PHP darf ich sofort wieder in die Doku gucken... toll.

                          1. hi Whouzuo,

                            Der grösste Nachteil bei PHP ist mMn immer noch mangelhaftes OOP und ein Modul-System, ähnlich wie CPAN bei Perl.

                            nutze die guten seiten (das gilt auch für javascript) [wozu überhaupt @fopen nutzen, wenn es file_get_contents() gibt?]

                            Woher soll man denn wissen, was es gibt?
                            In vernünftigen, objektorientierten Sprachen habe ich ein File-Objekt, setze nen Punkt dahinter und lass mir schön zeigen, was für Funktionen es gibt. In PHP darf ich sofort wieder in die Doku gucken... toll.

                            Nun, dann nutze doch deine "vernünftigen, objektorientierten Sprachen". Für PHP-Frameworks solltest Du das aber auch finden (https://www.google.de/?#q=IDE+php+framework+autocompletion). Für PHP findest Du das auch (https://www.google.de/search?q=php ide autocompletion&rct=j). PHP-Storm war von Sven Rautenberg ja schon empfohlen worden meine ich ...;

                            mfg

                            tami

                            1. hi Whouzuo,

                              Der grösste Nachteil bei PHP ist mMn immer noch mangelhaftes OOP und ein Modul-System, ähnlich wie CPAN bei Perl.

                              nutze die guten seiten (das gilt auch für javascript) [wozu überhaupt @fopen nutzen, wenn es file_get_contents() gibt?]

                              Woher soll man denn wissen, was es gibt?
                              In vernünftigen, objektorientierten Sprachen habe ich ein File-Objekt, setze nen Punkt dahinter und lass mir schön zeigen, was für Funktionen es gibt. In PHP darf ich sofort wieder in die Doku gucken... toll.

                              Nun, dann nutze doch deine "vernünftigen, objektorientierten Sprachen". Für PHP-Frameworks solltest Du das aber auch finden (https://www.google.de/?#q=IDE+php+framework+autocompletion).

                              Es geht nicht um autocompletion (was aufgrund fehlender statischer Typisierung sowieso nicht so gut funktionieren wird wie z.B. in Java), sondern um die Objektorientierung.

                              1. hi Whouzuo,

                                Es geht nicht um autocompletion (was aufgrund fehlender statischer Typisierung sowieso nicht so gut funktionieren wird wie z.B. in Java), sondern um die Objektorientierung.

                                http://framework.zend.com/ ??? ist nicht das einzige, was komplett objektorientiert arbeitet ...;

                                mfg

                                tami

                                1. hi Whouzuo,

                                  Es geht nicht um autocompletion (was aufgrund fehlender statischer Typisierung sowieso nicht so gut funktionieren wird wie z.B. in Java), sondern um die Objektorientierung.

                                  http://framework.zend.com/ ??? ist nicht das einzige, was komplett objektorientiert arbeitet ...;

                                  Man merkt, dass es eben auf die Sprache draufgeflanscht ist. In einer Vernünftigen objektorientierten Sprache ist alles ein Objekt. Auch eine Funktion z.B.

                                  1. Mahlzeit,

                                    Man merkt, dass es eben auf die Sprache draufgeflanscht ist. In einer Vernünftigen objektorientierten Sprache ist alles ein Objekt. Auch eine Funktion z.B.

                                    Von was reden wir jetzt, von einer vernünftigen Sprache oder von Java?
                                    Java wird in einer virtuellen Umgebung ausgeführt, PHP, grob gesagt, in C übersetzt. C++ war ursprünglich auch nur C um OOP erweitert, mit deinem Argument ist dann C++ auf schlecht.

                                    Somit haben wir ganz klar einen riesigen Vorteil von PHP gegenüber Java. Und wenn du glaubst, Java wäre anständiges OOP, hast du vermutlich mit C++ nichts am Hut. Es gibt keinen Programmierer, den ich kenne (und das sind mehr als 5), der OOP von Java lobt, wenn er auch in C++ arbeitet.

                                    Aber machen wir doch eins: Wenn PHP so alt ist, wie Java jetzt, vergleichen wir mal, welche Programmiersprache besser entwickelt ist. Es ist immer leicht, etwas, was es schon viel länger gibt, besser umzusetzen, als etwas relativ neues.

                                    Und um zum absoluten Totschlagargument gegen Java und für PHP zu kommen: Es läuft ohne aufwändige Konfiguration im Webserver. Wenn ich für Java nen Tomcat aufsetzen muss, bekomm ich Suizidgedanken, weil da jeder Furz von Hand nachgestellt werden muss, weil die Grundkonfiguration schrottig ist.

                                    --
                                    42
                                    1. Mahlzeit,

                                      Man merkt, dass es eben auf die Sprache draufgeflanscht ist. In einer Vernünftigen objektorientierten Sprache ist alles ein Objekt. Auch eine Funktion z.B.

                                      Von was reden wir jetzt, von einer vernünftigen Sprache oder von Java?

                                      Na sicher nicht von Java. Java ist zwar definitiv objektorientierter als PHP, aber sicher nicht verünftigt. Scala könnte in Betracht kommen (wären da nicht die ätzenden Kompatibilitäts-Probleme aufgrund der JVM).

                                      Java wird in einer virtuellen Umgebung ausgeführt, PHP, grob gesagt, in C übersetzt. C++ war ursprünglich auch nur C um OOP erweitert, mit deinem Argument ist dann C++ auf schlecht.

                                      Ist es auch. Wenn auch deutlich besser als PHP. Dafür hat es aber den Hardware-Nähe und Performance-Vorteil (wenn man denn damit umzugehen weiß). PHP hingegen hat dafür den läuft-meist-out-of-the-box Vorteil. Das macht aber die Sprache nicht gleich gut.

                                      Somit haben wir ganz klar einen riesigen Vorteil von PHP gegenüber Java.

                                      Und gleichzeitig einen riesigen Vortiel von Java gegenüber PHP.

                                      Und wenn du glaubst, Java wäre anständiges OOP

                                      Du solltest mal meine anderen Beiträge hier lesen. Ich hasse Java. Mit der 8er gibt's zwar endlich draufgeflanschte first-class-functions und ein default-Methoden bei interfaces, aber es bleibt eben draufgeflanscht. Ich verstehe zwar, dass man die Kompatibilität nicht brechen will, aber ohne die zu brechen, wird die Sprache eben immer hinter den moderneren Sprachen zurückbleiben und irgendwann gnadenlos sterben so wie COBOL.

                                      , hast du vermutlich mit C++ nichts am Hut.

                                      Jedenfalls vermeide ich es, C++ zu benutzen. Es war allerdings meine erste Programmiersprache (sieht man mal von (HTML mit ein bisschen) Javascript-Krams ab).

                                      Aber machen wir doch eins: Wenn PHP so alt ist, wie Java jetzt, vergleichen wir mal, welche Programmiersprache besser entwickelt ist. Es ist immer leicht, etwas, was es schon viel länger gibt, besser umzusetzen, als etwas relativ neues.

                                      Wozu? Wir werden höchstens feststellen, dass Java immernoch scheiße ist, weil die Kompatibilität nicht gebrochen werden soll und alle seit 10 Jahren als deprecated gekennzeichneten Methoden immernoch da sind. Und null immernoch da ist. Und Operatorenüberladung immernoch fehlt. Und primitive Typen immernoch da sind. Und Modularisierung immernoch fehlt.
                                      Und PHP wird entweder verschwunden sein oder noch da sind und anders sein (Kompatibilität gebrochen) aber so wie es aussieht trotzdem völlig verhunzt ist und die Inkonsistenz bei den Methodennamen immernoch da sein wird usw.

                                      Und um zum absoluten Totschlagargument gegen Java und für PHP zu kommen: Es läuft ohne aufwändige Konfiguration im Webserver. Wenn ich für Java nen Tomcat aufsetzen muss, bekomm ich Suizidgedanken, weil da jeder Furz von Hand nachgestellt werden muss, weil die Grundkonfiguration schrottig ist.

                                      Voll Zustimmung! Dummerweise bleibt der Nebengeschmack, dass PHP eben für größere Sachen nicht geeignet ist. Und ja, Foren, Wikis etc. sind in PHP geschrieben. Wäre aber in Java wohl besser geworden. ;) Siehe z.B. die Atlassian Produkte. Laufen alle in der JVM. Dass z.B. Facebook seine eigene auf PHP basierende Sprache entwickelt (weils eben doch zu schlecht ist) spricht auch nicht für PHP. Für kleinere Scripte, um mal schnell was zu machen ist es aber gut. Wenn man die Gefahren kennt.

                                      1. Mahlzeit,

                                        Voll Zustimmung! Dummerweise bleibt der Nebengeschmack, dass PHP eben für größere Sachen nicht geeignet ist.

                                        Grössere Sache ist sicher definitionssache ;)
                                        Was für mich grösser ist, programmiere ich in C++ und klemm sowas, wie cgi.pm in Perl drauf.

                                        Allerdings lassen sich auch Multi-User Projekte in PHP umsetzen, solange man als Programmierer entsprechende Disziplin walten lässt :)

                                        Das du Java nicht magst, find ich gut ;) Ich hab wohl fälschlicherweise bei dir rausgelesen, du würdest dich auf Java beziehen. Ich halte Java für die Sprache, die die Welt am wenigsten braucht.

                                        --
                                        42
                                        1. Mahlzeit,

                                          Voll Zustimmung! Dummerweise bleibt der Nebengeschmack, dass PHP eben für größere Sachen nicht geeignet ist.

                                          Grössere Sache ist sicher definitionssache ;)
                                          Was für mich grösser ist, programmiere ich in C++ und klemm sowas, wie cgi.pm in Perl drauf.

                                          C++ ist für größere Sachen auch geeignet. Wenn auch weniger als Scala (sofern man die JVM verschmerzen kann, also z.B. nicht für embedded Krams). ;)

                                          Allerdings lassen sich auch Multi-User Projekte in PHP umsetzen, solange man als Programmierer entsprechende Disziplin walten lässt :)

                                          Natürlich! Auch in Assembler könnte man alles mit genügend Disziplin, Zeit und Schweiß machen. Aber niemand will das...

                                          Das du Java nicht magst, find ich gut ;) Ich hab wohl fälschlicherweise bei dir rausgelesen, du würdest dich auf Java beziehen. Ich halte Java für die Sprache, die die Welt am wenigsten braucht.

                                          Wahrscheinlich wegen dem "File.". Das sieht eben in Scala genauso aus wie in Java und Scala als (produktiv nutzbare) Sprache mag ich bisher am meisten. Was Besseres habe ich nicht gefunden.

                                          1. Mahlzeit,

                                            C++ ist für größere Sachen auch geeignet. Wenn auch weniger als Scala (sofern man die JVM verschmerzen kann, also z.B. nicht für embedded Krams). ;)

                                            Scala spreche ich nicht, kenne ich nur vom Namen her. Daher kann ich dazu nix sagen, aber brauch ich dafür ne Java-Runtime? Oder meintest du einfach ne Scala-VM und nicht die JVM?
                                            Ich mag keine Programmiersprachen, die eine VM brauchen, vorallem, weil ich viel im Embedded-Bereich mache. Und wie du sagst, dafür taugt es nicht ;)

                                            Natürlich! Auch in Assembler könnte man alles mit genügend Disziplin, Zeit und Schweiß machen. Aber niemand will das...

                                            Kein Vergleich. PHP ist und bleibt eine Hochsprache. Ich programmiere auch in Assembler (Hauptsächlich AVR 8-bitter), aber das erfordert wesentlich mehr als PHP.

                                            Wahrscheinlich wegen dem "File.".

                                            Genau deshalb.

                                            Das sieht eben in Scala genauso aus wie in Java und Scala als (produktiv nutzbare) Sprache mag ich bisher am meisten. Was Besseres habe ich nicht gefunden.

                                            Scala ist ja von Java inspiriert (u.a.). Aber, wie gersagt, ich kanns nicht, daher kann ich nicht wirklich was dazu sagen. Hat auch noch keiner meiner Kunden verlangt, aber wenn das passiert, weiss ich jetzt wenigstens jemanden, der es kann :)

                                            --
                                            42
                                            1. Mahlzeit,

                                              C++ ist für größere Sachen auch geeignet. Wenn auch weniger als Scala (sofern man die JVM verschmerzen kann, also z.B. nicht für embedded Krams). ;)

                                              Scala spreche ich nicht, kenne ich nur vom Namen her. Daher kann ich dazu nix sagen, aber brauch ich dafür ne Java-Runtime?

                                              Ja du brauchst ne JVM. Theoretisch geht z.B. auch LLVM, praktisch aber noch nicht.

                                              Ich mag keine Programmiersprachen, die eine VM brauchen, vorallem, weil ich viel im Embedded-Bereich mache. Und wie du sagst, dafür taugt es nicht ;)

                                              Ändert sich vielleicht mit LLVM. Aber warum magst du keine VM? VM bedeutet nicht gleich langsam. Facebook hat nicht aus Spaß eine VM für PHP/Hack gebastelt.

                                              Natürlich! Auch in Assembler könnte man alles mit genügend Disziplin, Zeit und Schweiß machen. Aber niemand will das...

                                              Kein Vergleich. PHP ist und bleibt eine Hochsprache. Ich programmiere auch in Assembler (Hauptsächlich AVR 8-bitter), aber das erfordert wesentlich mehr als PHP.

                                              Na klar kann ich das vergleichen. Der Abstand von Assembler zu PHP mag größer sein als von PHP zu Scala oder Haskell. Dennoch ist der letztere Abstand definitiv bedeutsam. Und "Hochsprache" ist sowieso nicht eindeutig definiert.

                                              Das sieht eben in Scala genauso aus wie in Java und Scala als (produktiv nutzbare) Sprache mag ich bisher am meisten. Was Besseres habe ich nicht gefunden.

                                              Scala ist ja von Java inspiriert (u.a.).

                                              Nein, umgekehrt. Java ist von Scala inspiriert. Die in Scala eingeführten Generics z.B. wurden dann später in Java übernommen.

                                              Aber, wie gersagt, ich kanns nicht, daher kann ich nicht wirklich was dazu sagen. Hat auch noch keiner meiner Kunden verlangt, aber wenn das passiert, weiss ich jetzt wenigstens jemanden, der es kann :)

                                              Immer her mit den Angeboten. ;)
                                              Ich hoffe, dass Scala wirklich irgendwann mit Java mindestens auf Augenhöhe sein wird.

                                              1. Mahlzeit,

                                                Ja du brauchst ne JVM. Theoretisch geht z.B. auch LLVM, praktisch aber noch nicht.

                                                Aber dann ist es ja definitiv Java-Bytecode, der erzeugt wird, also ist es Lediglich Quellcode der in Java übersetzt wird. Find ich uneffektiv.

                                                Ändert sich vielleicht mit LLVM. Aber warum magst du keine VM? VM bedeutet nicht gleich langsam. Facebook hat nicht aus Spaß eine VM für PHP/Hack gebastelt.

                                                Im Embedded_bereich ist teilweise C zu langsam, deshalb ja Assembler. Klar kostet ein schneller ARM kein Geld mehr, aber bei 500 Modulen im Schaltschrank ist es ein Unterschied ob ein ARM-Board für 12€ oder ein 8-Bit AVR für 3,50€ (also das komplette Board, nicht der Prozessor) verbaut wird.

                                                Na klar kann ich das vergleichen. Der Abstand von Assembler zu PHP mag größer sein als von PHP zu Scala oder Haskell. Dennoch ist der letztere Abstand definitiv bedeutsam. Und "Hochsprache" ist sowieso nicht eindeutig definiert.

                                                Darüber kann man streiten. Da halte ich den Vergleich zwischen PHP und Perl als schlüssiger. Ist aber grundsätzlich auch egal ;)

                                                Nein, umgekehrt. Java ist von Scala inspiriert. Die in Scala eingeführten Generics z.B. wurden dann später in Java übernommen.

                                                Dann solltest du mal bei Wikipedia reinschaun, da ist dann der Eintrag falsch, evtl. hilft es, wenn du das korrigierst, wie gesagt, hab ich von Scala keine Ahnung. Wikipedia ist ja auch nicht perfekt ;)

                                                --
                                                42
                                                1. Mahlzeit,

                                                  Ja du brauchst ne JVM. Theoretisch geht z.B. auch LLVM, praktisch aber noch nicht.

                                                  Aber dann ist es ja definitiv Java-Bytecode, der erzeugt wird, also ist es Lediglich Quellcode der in Java übersetzt wird. Find ich uneffektiv.

                                                  Bei LLVM nicht mehr. Warum du das uneffektiv findest, verstehe ich nicht. Maschinencode-Erzeugung zur Laufzeit hat einige Vorteile, die ansonsten gar nicht möglich sind. Einfaches Beispiel: die JVM stellt zur Laufzeit fest, dass eine Schleife immer nur mit den Werten 1-6 durchlaufen wird. Dann kann man jeden Schleifendurchlauf direkt fix in Maschinencode übersetzen und spart sich den Overhead. Hotspot eben.

                                                  Ändert sich vielleicht mit LLVM. Aber warum magst du keine VM? VM bedeutet nicht gleich langsam. Facebook hat nicht aus Spaß eine VM für PHP/Hack gebastelt.

                                                  Im Embedded_bereich ist teilweise C zu langsam, deshalb ja Assembler. Klar kostet ein schneller ARM kein Geld mehr, aber bei 500 Modulen im Schaltschrank ist es ein Unterschied ob ein ARM-Board für 12€ oder ein 8-Bit AVR für 3,50€ (also das komplette Board, nicht der Prozessor) verbaut wird.

                                                  Klar, Performance ist immer der Killer schlecht hin. Gegen Performance gibt es kein Argument. Tatsache ist aber, dass Hardware immer schneller, günstiger und stromsparender wird. Daher wird der embedded Teil immer kleiner, auch wenn er nie verschwinden wird.

                                                  Nein, umgekehrt. Java ist von Scala inspiriert. Die in Scala eingeführten Generics z.B. wurden dann später in Java übernommen.

                                                  Dann solltest du mal bei Wikipedia reinschaun, da ist dann der Eintrag falsch, evtl. hilft es, wenn du das korrigierst, wie gesagt, hab ich von Scala keine Ahnung. Wikipedia ist ja auch nicht perfekt ;)

                                                  Nö, der ist richtig. Da steht ja nur: "Von Java wurde vor allem eine Reihe von Schlüsselworten sowie die Blocksyntax übernommen". Hier geht es um einen eher kleinen Teil der Syntax und wie die Schlüsselwörter benannt werden. "Inspiriert" würde ich das nicht nennen. Da geht es um Konzepte - und die kommen eher nicht von Java (aber wie gesagt, umgekehrt schon eher), sondern von seinen anderen davor entwickelten Sprachen.

                                                  1. Mahlzeit,

                                                    Bei LLVM nicht mehr. Warum du das uneffektiv findest, verstehe ich nicht.

                                                    Ich habe das Programmieren zu einer Zeit gelernt, als man noch mit Taktzyklen gegeizt hat, weil die Prozessoren keine Leistung hatten.
                                                    Deshalb finde ich alles uneffektiv, was zusätzlich zwischen Code und Prozessor ist. Natürlich ist dabei PHP auch uneffektiv, aber es gibt so verdammt wenig Webserver, die Assemlber-CGI unterstützen :D

                                                    --
                                                    42
                                                    1. Mahlzeit,

                                                      Bei LLVM nicht mehr. Warum du das uneffektiv findest, verstehe ich nicht.

                                                      Ich habe das Programmieren zu einer Zeit gelernt, als man noch mit Taktzyklen gegeizt hat, weil die Prozessoren keine Leistung hatten.
                                                      Deshalb finde ich alles uneffektiv, was zusätzlich zwischen Code und Prozessor ist. Natürlich ist dabei PHP auch uneffektiv, aber es gibt so verdammt wenig Webserver, die Assemlber-CGI unterstützen :D

                                                      Naja. Manche halt auch gerne mit manueller Gangschaltung (ääh, korrigiere: erschreckend viele sogar) und holen damit vielleicht sogar 0,01% Sprit raus. Die meisten verbrauchen aber mehr. Genauso wie die meisten - ich wage sogar fast alle zu sagen - bei Assembler Optiminierungen gnadenlos von einem guten C++ Compiler geschlagen werden.
                                                      Deswegen sehe ich sowohl die manuelle Gangschaltung als auch das Assembler Programmieren als Hobby an ;) abgesehen von Spezialfällen natürlich.

                                                      1. Mahlzeit,

                                                        Naja. Manche halt auch gerne mit manueller Gangschaltung (ääh, korrigiere: erschreckend viele sogar) und holen damit vielleicht sogar 0,01% Sprit raus.

                                                        Keine Ahnung, ob ich weniger Sprit brauch, aber ich hab meine Automatik rausgeworfen und 6-Gang Schaltgetriebe eingebaut. Ok, Automatik war kaputt, sonst wär die dringebleiben ;)

                                                        Genauso wie die meisten - ich wage sogar fast alle zu sagen - bei Assembler Optiminierungen gnadenlos von einem guten C++ Compiler geschlagen werden.

                                                        Auf allem, was 16 Bit oder mehr hat, möglich, auf 8-Bit AVR und ähnlichen Prozessoren gibt es kein C++. Und C kannst du nicht so optimieren, dass es an Assembler rankommt. Es geht wirklich um einzelne Taktzyklen.

                                                        Deswegen sehe ich sowohl die manuelle Gangschaltung als auch das Assembler Programmieren als Hobby an ;) abgesehen von Spezialfällen natürlich.

                                                        Gangschaltung: Nein, Assembler auf nem PC: Ja ;)

                                                        --
                                                        42
                                                      2. Moin,

                                                        Manche halt auch gerne mit manueller Gangschaltung (ääh, korrigiere: erschreckend viele sogar) und holen damit vielleicht sogar 0,01% Sprit raus.

                                                        der Vergleich hinkt, und davon abgesehen ist das Argument "pro" Automatik ganz bestimmt nicht der Spritverbrauch, sondern vor allem der Komfort. Tatsächlich ist es so, dass ein PKW mit Automatik-Getriebe fast immer ein wenig mehr verbraucht als das gleiche Fahrzeug mit konventionellem Schaltgetriebe. Das liegt vor allem an der Hydraulik, die mit angetrieben werden muss, und im Teillastbetrieb auch an den Wandlerverlusten. Im NFZ-Sektor (Omnibus) eingesetzte Automatikgetriebe haben meistens eine Wandler-Überbrückungskupplung, so dass der Schlupf an der Stelle eliminiert wird und der Wandler wirklich nur noch beim Anfahren bzw. Langsamfahrt seinen Job tut. Ob dieser Aufwand bei PKW-Getrieben auch schon üblich ist, weiß ich nicht.
                                                        Ein weiterer Grund für Mehrverbrauch durch Automatik ist, dass das Getriebe nicht die Verkehrssituation vorausahnen kann wie ein menschlicher Autofahrer.

                                                        In der Wirklichkeit sind aber Verbrauchs-Unterschiede durch individuelle Fahrweise viel größer als die durch Automatik oder eben nicht Automatik.

                                                        Genauso wie die meisten - ich wage sogar fast alle zu sagen - bei Assembler Optiminierungen gnadenlos von einem guten C++ Compiler geschlagen werden.

                                                        Dazu fehlen mir Angaben, anhand derer ich das beurteilen könnte, ich zweifle aber stark an der Aussage. Aber vielleicht müssen wir bei Assembler-Programmierung zwei Lager unterscheiden.

                                                        Zum einen die Programmierer, die Assembler verwenden, weil sie "müssen" - etwa weil für die verwendete Plattform (µCs) kein C-Compiler verfügbar ist, oder weil das Projekt es aus historischen Gründen so vorgibt. Für die mag deine Aussage zutreffen, weil sie mit dem Zeug einigermaßen klarkommen, aber nicht in die Feinheiten und Rafinessen eindringen (und das möglicherweise auch gar nicht wollen).

                                                        Und dann diejenigen, die in Assembler programmieren, weil sie es wirklich können. Die schauen sich den Assembler-Code an, den der Compiler aus ihrem C-Source gemacht hat, und finden dann, dass man daran noch einiges verbessern könnte. Ich spreche da aus Erfahrung. ;-)

                                                        Für mich war Assembler (damals auf einer einfachen 8bit-CPU, ich sag nur: C64) der Einstieg in die Programmierung überhaupt, von einer oberflächlichen Bekanntschaft (nicht Freundschaft) mit BASIC mal abgesehen, und ich habe auch später auf dem PC unter DOS noch sehr viel mit Assembler gemacht. Aus Neugier habe ich mir auch oft den Assembler-Code angesehen, den a) der Borland-Pascal-Compiler und b) der Borland-C-Compiler produzierten. Und zu meiner Überraschung habe ich festgestellt, dass die beiden Compiler aus demselben Haus sehr unterschiedlich waren, was Effizienz und Optimierung angeht. Beim Pascal-Compiler hatte ich nur ganz selten den Eindruck, dass man da noch etwas "herauskitzeln" könnte, beim C-Compiler eigentlich ständig. Redundantes, mehrfaches Laden derselben Werte aus dem Speicher, Berechnen von konstanten Ausdrücken zur Laufzeit anstatt beim Compilieren, mehrfaches Ausführen gleichbleibender Operationen in einer Schleife, anstatt diese Operation aus der Schleife herauszuziehen.

                                                        Deswegen sehe ich sowohl die manuelle Gangschaltung als auch das Assembler Programmieren als Hobby an ;) abgesehen von Spezialfällen natürlich.

                                                        "Hobby" ist vielleicht nicht der richtige Begriff. Die Frage, ob Automatik oder Handschaltung hat viel mit der Persönlichkeit zu tun, eventuell auch mit dem Budget. Bei der Frage, ob Hochsprache oder Assembler mag der Begriff Hobby für diejenigen zutreffen, die sowieso "just for fun" programmieren; bei den meisten ergibt sich die Entscheidung aber wohl eher aus dem Diktat der Erfordernisse.

                                                        So long,
                                                         Martin

                                                        --
                                                        Der Klügere gibt solange nach, bis er der Dumme ist.
                                                        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                                        1. Moin,

                                                          Manche halt auch gerne mit manueller Gangschaltung (ääh, korrigiere: erschreckend viele sogar) und holen damit vielleicht sogar 0,01% Sprit raus.

                                                          der Vergleich hinkt

                                                          Weil?

                                                          , und davon abgesehen ist das Argument "pro" Automatik ganz bestimmt nicht der Spritverbrauch, sondern vor allem der Komfort.

                                                          Es ging aber nicht, um die Argumente für eine Automatik, sondern eben um den Vergleich. ;)

                                                          Tatsächlich ist es so, dass ein PKW mit Automatik-Getriebe fast immer ein wenig mehr verbraucht als das gleiche Fahrzeug mit konventionellem Schaltgetriebe.

                                                          Tatsächlich sind aber z.B. stufenlose Automatikgetriebe sparsamer als Schaltgetrieben. (allerdings auch technisch etwas aufwändiger und von Kundenseite leider kaum akzeptiert)

                                                          Genauso wie die meisten - ich wage sogar fast alle zu sagen - bei Assembler Optiminierungen gnadenlos von einem guten C++ Compiler geschlagen werden.

                                                          Dazu fehlen mir Angaben, anhand derer ich das beurteilen könnte, ich zweifle aber stark an der Aussage. Aber vielleicht müssen wir bei Assembler-Programmierung zwei Lager unterscheiden.

                                                          Zum einen die Programmierer, die Assembler verwenden, weil sie "müssen" - etwa weil für die verwendete Plattform (µCs) kein C-Compiler verfügbar ist

                                                          Nein, die müssen wir eigentlich nicht Unterscheiden, weil diese dafür keinen C++ Compiler benutzen können und daher bei meinem Vergleich im vorhinein gar nicht berücksichtigt sind. ;)

                                                          Und dann diejenigen, die in Assembler programmieren, weil sie es wirklich können. Die schauen sich den Assembler-Code an, den der Compiler aus ihrem C-Source gemacht hat, und finden dann, dass man daran noch einiges verbessern könnte. Ich spreche da aus Erfahrung. ;-)

                                                          Dann magst du eine rühmliche Ausnahme sein. ;)

                                                          Beim Pascal-Compiler hatte ich nur ganz selten den Eindruck, dass man da noch etwas "herauskitzeln" könnte, beim C-Compiler eigentlich ständig.

                                                          Interessant, das wundert mich ein wenig. Aber weils aus dem selben Hause kommt, müssen nicht die gleichen Leute dran gearbeitet haben.

                                                          1. Mahlzeit,

                                                            Und dann diejenigen, die in Assembler programmieren, weil sie es wirklich können. Die schauen sich den Assembler-Code an, den der Compiler aus ihrem C-Source gemacht hat, und finden dann, dass man daran noch einiges verbessern könnte. Ich spreche da aus Erfahrung. ;-)

                                                            Dann magst du eine rühmliche Ausnahme sein. ;)

                                                            Ich hab das mal mit Basic (Amstrad CPC 464) gemacht und dann versucht, den Maschinencode, den ich per Hexdump aus dem Speicher geholt hab, direkt auszuführen (Ich glaub ab Hex 0170 oder sowas lagen die Basic-Porgramme). Ab dem Zeitpunkt wusste ich, Maschinencode ist etwas schwerer zu erlernen als Basic. Zu meiner Entschuldigung, ich war grad mal 12 Jahre alt zu dem Zeitpunkt :D

                                                            --
                                                            42
                          2. Mahlzeit,

                            Woher soll man denn wissen, was es gibt?
                            In vernünftigen, objektorientierten Sprachen habe ich ein File-Objekt, setze nen Punkt dahinter und lass mir schön zeigen, was für Funktionen es gibt.

                            Das macht jetzt genau welche Programmiersprache? Ich kenne IDEs, die das machen, aber keine Programiersprache (mal abgesehen, dass keine Programmiersprache auch nur ansatzweise einen Editor mitbringt).

                            In PHP darf ich sofort wieder in die Doku gucken... toll.

                            Also weil du es nicht schaffst deine IDE anständig für PHP zu konfigurieren, ist die Sprache schuld? Dann schiebst du die Schuld also aufs Auto, wenn du scheisse fährst ;)

                            --
                            42
                            1. Mahlzeit,

                              Woher soll man denn wissen, was es gibt?
                              In vernünftigen, objektorientierten Sprachen habe ich ein File-Objekt, setze nen Punkt dahinter und lass mir schön zeigen, was für Funktionen es gibt.

                              Das macht jetzt genau welche Programmiersprache? Ich kenne IDEs, die das machen

                              Und ich kenne Menschen, die korinthenkacken...

                              In PHP darf ich sofort wieder in die Doku gucken... toll.

                              Also weil du es nicht schaffst deine IDE anständig für PHP zu konfigurieren, ist die Sprache schuld?

                              Tja, die IDE ist leider nicht anständig konfigurierbar, weil sie in vielen Fällen gar nicht wissen kann, was in meiner Variable nun wirklich drinsteckt. Dumme Sache das mit der schwachen dynamischen Typisierung.

                              1. Mahlzeit,

                                Und ich kenne Menschen, die korinthenkacken...

                                Für dich ist also die Unterscheidung zwischen Programmiersprache und IDE korinthenkacken?
                                Tja, Java ist dann vielleicht doch Javascript. Die haben mehr gemeinsam als eine IDE mit einer Programmiersprache.

                                Tja, die IDE ist leider nicht anständig konfigurierbar, weil sie in vielen Fällen gar nicht wissen kann, was in meiner Variable nun wirklich drinsteckt. Dumme Sache das mit der schwachen dynamischen Typisierung.

                                Wenn du es nicht wissen kannst, programmierst du nicht sauber. Meine IDE kann das, was einmal am Code und zum zweiten an der guten IDE liegt (Sublime Text ist der Traum).

                                Natürlich kannst du programmieren in was du willst, aber etwas schlecht zu reden, weil du es falsch anwendest, ist nicht richtig.

                                Es würde mich auch immer noch interessieren, was für dich eine Sprache mit richtigen OOP ist und welche IDE damit zurechtkommt aber nicht mit PHP.

                                --
                                42
                                1. hi M.,

                                  Tja, die IDE ist leider nicht anständig konfigurierbar, weil sie in vielen Fällen gar nicht wissen kann, was in meiner Variable nun wirklich drinsteckt. Dumme Sache das mit der schwachen dynamischen Typisierung.

                                  Wenn du es nicht wissen kannst, programmierst du nicht sauber. Meine IDE kann das,

                                  Welche?

                                  mfg

                                  tami

                                  1. Mahlzeit,

                                    Welche?

                                    Du schneidest den Namen aus dem Zitat und fragst dann danach? Erwartest du jetzt echt eine Antwort?

                                    --
                                    42
                                    1. hi M.,

                                      Du schneidest den Namen aus dem Zitat und fragst dann danach? Erwartest du jetzt echt eine Antwort?

                                      Ja, denn offenbar hatte ich das übersehen. Jetzt frage ich mich, wo der Unterschied zwischen IDE (=Eclipse? PHP-Storm???) und Texteditor (Sublime, SciTE) liegt ...;

                                      "Sublime Text is a sophisticated text editor for code, markup and prose." (http://www.sublimetext.com/)

                                      mfg

                                      tami

                                      1. Mahlzeit,

                                        Ja, denn offenbar hatte ich das übersehen. Jetzt frage ich mich, wo der Unterschied zwischen IDE (=Eclipse? PHP-Storm???) und Texteditor (Sublime, SciTE) liegt ...;

                                        Für mich ist Sublime kein reiner Editor mehr. Durch die Erweiterungsmöglichkeiten geht das, was Sublime kann, über das Können eines Editors hinaus.

                                        Allerdings halte ich den Übergang für fliessend. Eine genaue Abgrenzung dürfte ziemlich unmöglich sein.

                                        --
                                        42
                                2. Mahlzeit,

                                  Und ich kenne Menschen, die korinthenkacken...

                                  Für dich ist also die Unterscheidung zwischen Programmiersprache und IDE korinthenkacken?

                                  Nein.

                                  Tja, Java ist dann vielleicht doch Javascript. Die haben mehr gemeinsam als eine IDE mit einer Programmiersprache.

                                  Joa.

                                  Tja, die IDE ist leider nicht anständig konfigurierbar, weil sie in vielen Fällen gar nicht wissen kann, was in meiner Variable nun wirklich drinsteckt. Dumme Sache das mit der schwachen dynamischen Typisierung.

                                  Wenn du es nicht wissen kannst, programmierst du nicht sauber.

                                  Von MIR hab ich gar nicht geredet. ;)

                                  Meine IDE kann das, was einmal am Code und zum zweiten an der guten IDE liegt (Sublime Text ist der Traum).

                                  Na wenn du das für ausreichend hälst, schön. Meine Erfahrungen sind da anders.

                                  Natürlich kannst du programmieren in was du willst, aber etwas schlecht zu reden, weil du es falsch anwendest, ist nicht richtig.

                                  Ich wende PHP richtig an: maximal 50 Zeilige unabhängige Scripts. ;)

                                  Es würde mich auch immer noch interessieren, was für dich eine Sprache mit richtigen OOP ist und welche IDE damit zurechtkommt aber nicht mit PHP.

                                  An produktiven Sprachen gibts da nichts. Scala mit IntelliJ ist ganz gut, refactoring ist allerdings noch nicht akzeptabel. Dafür weiß die IDE wenigstens, was in welcher meiner Variablen drinsteckt.

                                  1. Mahlzeit,

                                    Ich wende PHP richtig an: maximal 50 Zeilige unabhängige Scripts. ;)

                                    Ok, ich hab ein paar Scripte mit mehr Zeilen :D

                                    An produktiven Sprachen gibts da nichts. Scala mit IntelliJ ist ganz gut, refactoring ist allerdings noch nicht akzeptabel. Dafür weiß die IDE wenigstens, was in welcher meiner Variablen drinsteckt.

                                    Ich werd mir bei Gelegenheit mal Scala genauer ansehen. Evtl. gefällts mir ja ;)

                                    Da ich mir meine Doku automatisch generieren lasse, habe ich eh alles im DocBlock-Stil geschrieben, damit ist jede Variable eindeutig definiert ;)

                                    --
                                    42
                                    1. Mahlzeit,

                                      Ich wende PHP richtig an: maximal 50 Zeilige unabhängige Scripts. ;)

                                      Ok, ich hab ein paar Scripte mit mehr Zeilen :D

                                      An produktiven Sprachen gibts da nichts. Scala mit IntelliJ ist ganz gut, refactoring ist allerdings noch nicht akzeptabel. Dafür weiß die IDE wenigstens, was in welcher meiner Variablen drinsteckt.

                                      Ich werd mir bei Gelegenheit mal Scala genauer ansehen. Evtl. gefällts mir ja ;)

                                      Da ich mir meine Doku automatisch generieren lasse, habe ich eh alles im DocBlock-Stil geschrieben, damit ist jede Variable eindeutig definiert ;)

                                      Guck dir bloß nicht Scala an. Du bist momentan noch auf der "dunklen Seite" und würdest in Scala versuchen so zu programmieren wie in C/C++, Java oder PHP. Oder gar Assembler. ;)
                                      Das ist natürlich völlig normal, aber nicht unbedingt sinnvoll. Wenn du also wirklich die Konzepte lernen willst, guck dir lieber Haskell an. Oder ML Krams wie OCAML.
                                      Aber beschwer dich hinterher nicht bei mir, wenn du dann nie wieder PHP anfassen willst (abgesehen von unter 50 zeiligen Skripten). ;D

                                      1. Mahlzeit,

                                        Das ist natürlich völlig normal, aber nicht unbedingt sinnvoll. Wenn du also wirklich die Konzepte lernen willst, guck dir lieber Haskell an. Oder ML Krams wie OCAML.
                                        Aber beschwer dich hinterher nicht bei mir, wenn du dann nie wieder PHP anfassen willst (abgesehen von unter 50 zeiligen Skripten). ;D

                                        Also mal ehrlich, wenn das mit OCAML vergleichbar ist, werd ich höchstens schreiend wegrennen. Da ist ja nur noch Brainfuck schlimmer :D

                                        Aber danke für den Rat, werd ich berücksichtigen, wenn ich mir wieder mal ne neue Programmiersprache antue ;)

                                        --
                                        42
                      3. Moin!

                        Dass aber die Bashing-Artikel immer von Leuten verfasst werden, die anscheinend keine Ahnung von PHP haben, zeigt mir deutlich, dass es keine so gravierenden Nachteile gibt, dass echt sinnvolle Artikel dazu geschrieben werden.

                        Zu denen musst du dich leider selbst zählen, denn:

                        Der grösste Nachteil bei PHP ist mMn immer noch mangelhaftes OOP und ein Modul-System, ähnlich wie CPAN bei Perl.

                        Composer. Schlägt CPAN vermutlich um Längen - was das "Carton" bei Perl macht, kann ich nicht beurteilen, es sieht ähnlich aus.

                        Beim OOP ist es einfach inkonsequent, bei z.B. mysqli mit Objekten zu arbeiten, die Ergebnisse dann aber als Array zurück zu bekommen. Wenn ich das Ergebnis als Objekt haben will, muss ich mir das selbst bauen.

                        $mysqli_result->fetch_object($classname = 'stdClass', $params = array());

                        Dann stört mich, dass es einige gravierende Unterschiede zwischen Apache-Modul und PHP-FCGI gibt, die mich als Programmierer dazu zwingen, verschiedene Entwicklungsumgebungen zu testen (und der IIS kommt dann auch noch dazu, wo es nochmal Unterschiede gibt)

                        Nun ja, wenn du ein Projekt hast, welches auf allen möglichen Plattformen installierbar sein soll, hast du nicht nur die Unterschiede bei dem Kontakt zum Webserver, sondern in gleicher Weise auch den Support für die verschiedensten PHP-Versionen inklusive HHVM zu leisten. Allein der Support für PHP 5.3, 5.4, 5.5 und 5.6 parallel dürfte nicht ohne ein paar Schmerzen ablaufen, die unterschiedlichen Plattformen sind da vermutlich auch nicht mehr wild. Wenn man ein Testsystem für genau diese Variantionen hat, analysiert man bei Problemen die Fehler und arbeitet drum herum.

                        Obwohl du richtig liegst, ist dieses Problem nicht PHP-exklusiv.

                        - Sven Rautenberg

                        1. Hi,

                          Variantionen

                          schöne Wortschöpfung!

                          cu,
                          Andreas

                          --
                          Warum nennt sich Andreas hier MudGuard?
                          O o ostern ...
                          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
                        2. Mahlzeit,

                          Zu denen musst du dich leider selbst zählen, denn:

                          Ich schreibe keine Artikel ;)

                          Composer. Schlägt CPAN vermutlich um Längen - was das "Carton" bei Perl macht, kann ich nicht beurteilen, es sieht ähnlich aus.

                          Alleine die Installation ist kompliziert. CPAN installiere ich über den Paketmanager. Die Auswahl ist ebenso bei CPAN besser gelöst, hier muss ich mich drauf verlassen ,dass der Programmierer die richtigen (als mir wichtigen) Tags verwendet hat.

                          Ich sags mal so, mir gefällt composer nicht und ich nutze ihn auch nicht.

                          $mysqli_result->fetch_object($classname = 'stdClass', $params = array());

                          Ok, schlechtes Beispiel von mir ;)

                          Allein der Support für PHP 5.3, 5.4, 5.5 und 5.6 parallel dürfte nicht ohne ein paar Schmerzen ablaufen, die unterschiedlichen Plattformen sind da vermutlich auch nicht mehr wild. Wenn man ein Testsystem für genau diese Variantionen hat, analysiert man bei Problemen die Fehler und arbeitet drum herum.

                          Einiges kann man ja als Voraussetzung angeben, ich hab echt noch Anfragen nach PHP4, weil keiner da ist, der mal ein Update auf dem Server macht. Aber viel Arbeit ist es, stimmt.

                          Obwohl du richtig liegst, ist dieses Problem nicht PHP-exklusiv.

                          Aber klar doch. Jede Programmiersprache hat ihre Nachteile. Wenn nur PHP welche hätte, würde ich nicht zu 80% damit arbeiten ;)

                          Ich finds nur nervig, wenn dann hier Artikel zitiert werden, die eben reines Bashing sind.

                          --
                          42
                          1. Moin!

                            Composer. Schlägt CPAN vermutlich um Längen - was das "Carton" bei Perl macht, kann ich nicht beurteilen, es sieht ähnlich aus.

                            Alleine die Installation ist kompliziert.

                            Das Copy&Paste einer Shell-Zeile ist kompliziert? Ja, tatsächlich ist die Convenience an dieser Stelle noch nicht optimal - in einer idealen Welt würde Composer direkt mit PHP mitgeliefert, hilfsweise _sehr einfach_ optional installiert - aber "kompliziert"?

                            Feature-Frage: Kann ich mit CPAN unterschiedliche Versionen je nach Perl-Software dezentral installieren?

                            CPAN installiere ich über den Paketmanager. Die Auswahl ist ebenso bei CPAN besser gelöst, hier muss ich mich drauf verlassen ,dass der Programmierer die richtigen (als mir wichtigen) Tags verwendet hat.

                            Welche Tags meinst du?

                            Ich sags mal so, mir gefällt composer nicht und ich nutze ihn auch nicht.

                            Du wirst nur dann drum herum kommen, wenn du niemals externe Softwarepakete einsetzt - auch in Zukunft nie. Andernfalls: Nahezu jedes verbreitet genutzte Softwarepaket lässt sich problemlos via Composer installieren, darunter sämtliche relevanten Frameworks bzw. Komponenten (Zend, Symfony, Doctrine, Laravel,...)

                            - Sven Rautenberg

                            1. Mahlzeit,

                              Moin!

                              Composer. Schlägt CPAN vermutlich um Längen - was das "Carton" bei Perl macht, kann ich nicht beurteilen, es sieht ähnlich aus.

                              Alleine die Installation ist kompliziert.

                              Das Copy&Paste einer Shell-Zeile ist kompliziert?

                              Nein, das komplizierte ist, ein .deb draus zu bauen. Ich kann es nicht leiden, irgednwas ausserhalb der Paketverwaltung zu installieren, deshalb werden grundsätzlich Pakete gebaut, wenn es keine gibt ;)

                              Ja, tatsächlich ist die Convenience an dieser Stelle noch nicht optimal - in einer idealen Welt würde Composer direkt mit PHP mitgeliefert, hilfsweise _sehr einfach_ optional installiert - aber "kompliziert"?

                              Alleine ein Paket im Repos würde ausreichen.

                              Feature-Frage: Kann ich mit CPAN unterschiedliche Versionen je nach Perl-Software dezentral installieren?

                              Keine Ahnung, ich programmiere wenig in Perl und wenn, hab ich entweder Versionsvorgaben, für die ich ein Envirement einrichte, ich gebe die Version vor oder ich liefere einen komplett vorinstallierten Rechner inkl. Software, also Plug&Play ;)

                              Welche Tags meinst du?

                              Beschreibende Stichworte. Entweder hab ich eine Übersicht aller Pakete übersehen oder man kann wirklich nur über die Suche arbeiten. Und diese Suche benötigt eben korrekte Suchworte im erfolgreich zu finden. Könnte man besser lösen, evtl. wie CPAN es gelöst hat.

                              Du wirst nur dann drum herum kommen, wenn du niemals externe Softwarepakete einsetzt - auch in Zukunft nie. Andernfalls: Nahezu jedes verbreitet genutzte Softwarepaket lässt sich problemlos via Composer installieren, darunter sämtliche relevanten Frameworks bzw. Komponenten (Zend, Symfony, Doctrine, Laravel,...)

                              Meinst du Libs, die kompiliert werden und dann per dl() oder php.ini eingebunden werden?

                              Wenn nicht, nahezu jedes Softwarepaket wird innerhalb von 2 Minuten zu einem Plugin in meinem eigenen Framework. Der Vorteil dabei, ich brauche nicht irgendeine Komponente vorauszusetzen sondern kann alles benötigte mitliefern. Mein FW benötigt die Dateien in einem Ordner und ein Template mit den include/require-Anweisungen und evtl. Initialisierungen. Die Installation erfolgt dann per Frontend und wenn ein Admin das Ganze auf seinem Server installiert, brauche ich nicht zu sagen, du brauchst composer um die Abhängigkeiten zu erfüllen.

                              Und da fällt mir auf, ich arbeite seit langem mit externen Komponenten. Und nicht einmal hatte ich ein Problem ohne Composer.

                              Zeigt mir, composer mag seine Vorzüge haben, ich sehe keine darin. Zumindest dann nicht, wenn es nicht nicht um Komponenten handelt, die in C geschrieben den Core erweitern. Alles andere ist ja nur ein Kopieren von PHP-Dateien in einen Shared-Folder die per Autoloader eingebunden werden.

                              Wie gesagt, ich nutze keinen composer, wenn meine Ausführungen an irgendeiner Stelle nicht zutreffen, bitte ich um Korrektur, ich lerne gerne dazu, vielleicht komme ich ja noch auf den Geschmack mit composer zu arbeiten ;)

                              --
                              42
                              1. Hi,

                                Zeigt mir, composer mag seine Vorzüge haben, ich sehe keine darin. Zumindest dann nicht, wenn es nicht nicht um Komponenten handelt, die in C geschrieben den Core erweitern. Alles andere ist ja nur ein Kopieren von PHP-Dateien in einen Shared-Folder die per Autoloader eingebunden werden.

                                Composer macht schon ein wenig mehr als das von dir beschriebene. Ich versuche mal aufzuzählen:
                                 - Konflikterkennung (wenn eine Library in verschiedenen Versionen gebraucht wird)
                                 - Versionsverwaltung (automatisch alle Libraries aktualisieren. Natürlich in dem Umfang, in dem man es mag, also z.B. nur Minor-Versionen aktualisieren)
                                 - Lizenzübersicht (mit einem Aufruf alle Lizenzen der verwendeten Libraries einsehen)
                                 - Security-Check (mit einem Extratool kann deine composer.lock überprüft werden, ob deine Libraries bekannte Sicherheitslücken enthalten. https://security.sensiolabs.org/)
                                 - Jede Library-Installation ist lokal pro Projekt (d.h., man generiert keine globalen Softwarepakete). Zumindest früher war CPAN an dieser Stelle nur sehr umständlich zu konfigurieren, dass man lokale Library-Installationen haben konnte.
                                 - Es entschlackt den Code, den man in die Versionsverwaltung eincheckt.
                                 - Menge an verfügbaren Libraries wird einfach durchsuchbar.
                                 - Private Library-Repositories

                                Gibt bestimmt noch viel mehr Gründe, aber das hier reicht mir erstmal.

                                Bis die Tage,
                                Matti

                  2. Hallo,

                    Einige davon waren mir noch gar nicht bekannt.
                    Das liegt daran, dass die meisten "Mängel" dort einmal Altlasten aus früheren Versionen sind und einige nur dann ein Problem darstellen, wenn der Programmierer sie dazu macht.

                    das trifft es in etwa.

                    Und wenn ich dann als Negativpunkt lese, dass PHP konstrukte aus C, C++ und Java übernommen hat, muss ich mich fragen, was will der Autor damit. PHP-Bashing liegt da nahe.

                    Ja. Das sind keine Mängel, das klingt nach positiven Aspekten. Es ist ja absolut in Ordnung, wenn eine Programmiersprache versucht, das Beste aus anderen Welten zu übernehmen.

                    Ich halte diesen Artikel für Bild-Niveau.

                    Ich nicht, dafür ist er noch zu sachlich.

                    Hauptsächlich werden Eigenheiten von PHP deshalb als Mangel bezeichnet, weil es nicht genauso funktioniert wie bei anderen Sprachen.

                    Nein, sondern weil die Vielzahl der in PHP realisierten Features in sich uneinheitlich und teils unlogisch ist.

                    @fopen()
                    Wird bemängelt, dass keine Fehlermeldung ausgegeben wird.

                    Nein. Es wird bemängelt, dass es vom Zusammenspiel vieler Konfigurations-Direktiven abhängt, ob überhaupt irgendwo eine Fehlermeldung hinterlassen wird, und wenn ja, wo.

                    Und was in diesem Artikel grösstenteils fehlt, sind die _echten_ Nachteile von PHP, aber das zeigt mir auch recht deutlich, dass es hier nur drum geht, PHP schlecht zu machen.

                    In diesem Punkt ist PHP IMO wie Windows: Man weiß, dass es eine Menge Schwächen hat, aber wenn man diese Schwächen kennt und mit ihnen umgehen kann, ist das System eigentlich ganz brauchbar.

                    Ich halte PHP als eine der schlechtesten Programmiersprachen

                    Das sehe ich ganz eindeutig nicht so. PHP hat Designmängel und ist alles andere als optimal, aber man kann sich doch ganz gut damit arrangieren.

                    Ciao,
                     Martin

                    --
                    Ordnung schaffen heißt, das Eigelb vom Dotter zu trennen.
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              3. Meine Herren!

                Sprachdesign? PHP ist eine Ansammlung schlechter Beispiele. Mit Sprachdesign hat das nichts zu tun, höchstens mit dem Fehlen desselben.

                Einen Artikel, der über 2,5 Jahre alt ist, zu zitieren, wenn es um eine Programmiersprache geht, zeugt IMO von Unwissen. 2,5 Jahre ensprechend ca. 8-10 Generationen in der IT und grad in den letzten 2,5 Jahren hat sich in PHP viel getan.

                Der Artikel ist vor 2,5 Jahren das erste mal veröffentlich worden. Damals war PHP 5.4 noch aktuell, heute stehen wir bei PHP 5.6. Wenn man den Artikel aber aufmerksam liest, dann findet man Hinweise darauf, dass der Artikel seit dem mehrfach überarbietet wurde. Es gibt Stellen, die machen auf Fixes in neueren (und älteren) PHP Versionen bis hin zu Version 5.5 aufmerksam. PHP 5.6 ist erst vor 1,5 Monaten erschienen. Der Artikel ist also noch recht aktuell, für den Artikel spricht auch die anhaltende disqus- und Twitter-Aktivität.

                Lustig finde ich dann ein "fachlich hilfreich". Offensichtlich werde die Leute die Lesen _und_
                mitdenken immer weniger :D

                Aha.

                --
                “All right, then, I'll go to hell.” – Huck Finn
        2. Warum bist du dir so sicher, dass man nicht dich schlagen müsste ;-) , wenn du Strings mit Zahlen vergleichst?

          Da bin ich mir nicht sicher, ganz im Gegenteil. Ich will eigentlich geschlagen werden (ähm....) wenn ich das mache. Aber PHP tut es leider nicht. Das ist der Punkt.