frankx: Standard PHP Library

080

Standard PHP Library

  1. 0
    1. 1
    2. 0
      1. 0
        1. 3
          1. 0
            1. 0
    3. 0
      1. 0
        1. 0
          1. 0
            1. 0
            2. 0
              1. 0
                1. 0

                  Kann das denn sein?

                  1. 0
                    1. 0
                  2. 12

                    Eine Lanze für strukturierte Programmierung und OOP

                    1. 0

                      [++] SCNR

                      1. 0
                    2. 0
                      1. 0
                        1. 0

                          [++] Eine Lanze [..]

                          1. 0
                            1. 0
                              1. 0
                                1. 0
                                  1. 0
                                    1. 0
                                      1. 2

                                        [++] Eine Lanze [..] für die sachbezogen diskussion

                                      2. 0
                                        1. 0
                                          1. 0

                                            Anonymer Stänkerer

                                            1. 0

                                              Anonymer Stänkerer??

                      2. 0
                        1. 0
                          1. 0
                            1. 0

                              Nur eine Zwischennachricht [und ein Spendenaufruf]

                              1. 0
                                1. 0
                                  1. 0
                                    1. 0
                                  2. 0
                              2. 0
                                1. 0
                                  1. 0
                                    1. 0
                                      1. 0
                                        1. 0
                                          1. 0

                                            Es wird Text

                                            1. 0
                                    2. 3
                                      1. 0

                                        Abschliessendes...

                                2. 0

                                  ... die Hoffnung stirbt zuletzt

                                  1. 0
                                    1. 0
                                    2. 0
                                    3. 0
                                      1. 0
                                        1. 0

                                          pro und contra OOP

                                          1. 0
                                          2. 0
                                            1. 0
                                        2. 0
                            2. 0
                    3. 0
        2. 0

          (Iteratoren)

          1. 0

            Iteratoren - mysqli-result-Iterator

            1. 0
              1. 0
            2. 0

              mysqli-result-Iterator looft, aber "Pattern" mit this nicht

    4. 0

      99 bottles of beer

  2. 0

    Standard PHP Library - SplDoublyLinkedList

    1. 0
      1. 0
        1. 0
  3. 0

    [++] Eine Lanze [..]

    1. 0
      1. 0

        menschliches Verhalten

Hellihello,

ausgehend von diesen http://forum.de.selfhtml.org/archiv/2008/8/t175534/#m1154285@Hinweisen zur SPL bin ich auf einen [Artikel aus dem PHP architecture magazine von Jan 2005](http://ramikayyali.com/archives/2005/02/25/iterators) gestoßen. Darin unter anderem

"The SPL extension didn’t get as much buzz as PHP5’s new XML and OOP features, but that didn’t stop it from making it to the final distribution ... .This collection of interfaces and classes ... currently focused on solving one problem—Iterators."

Mit scandir() lässt sich ja nun schön eine rekursive Funktion bauen, die sich selbst wieder aufruft, wenn der aktuelle Eintrag ein directory ist. Das alles geht aber auch mit dem RecursiveDirectoryIterator in Kombination mit dem RecursiveIteratorIterator. Wenn ich es recht sehe, ist es dem RII egal, woher die rekursive Struktur stammt. Nur Datenbanken bilden solche Strukturen rekursiver Art wohl nicht ab (? oder doch, mit JOIN und 1 zu n Struktur, 1 Kunde - 2 Bestellungen - 8 Produkte etc.pp.?).

Immerhin dachte ich, wenn man kapieren will, warum die _Standard_-Bibliothek nur aus Iteratoren besteht (und ein paar Funktionen wie register_autoload() - die aber nischt mit Iteration zu tun hat), könnte man damit ja mal rumexperimentieren. Eine verschachtelte Liste aus dem o.g. zu erstellen habe ich mal versucht, mit alternativerSyntax und HTML-Bausteinen, sowie mit DOMFunktionen. Vielleicht betreibt ja irgendwer sonst außer dedlfix - aber gerne auch wieder dedlfix himself (;-) - noch Recherche auf dem Gebiet und kann irgendwas sinniges dazu beisteuern. Ich kapiere zwar irgendwie, dass diese Iteratoren eine Art von Verallgemeinerung eines Datenstrukturhandlings (unabhängig von ihrer Herkunft) bedeuten soll (bzw. ist, es ist ein "Verhaltensmuster", ein "pattern" wie zB. Factory oder Singleton auch eins ist, aber eben aus dem Bereich "behaviour"), so dass vermutlich u.g. Schablonen auch mit anderen Datenquellen Wiederverwendung finden können, bin mir aber nicht ganz sicher, den "Clou" der Sache wirklich kapiert zu haben.

// set Directory to recursively iterate through $dir_path = "it_test"; // create instance of RecursiveDirectoryIterator predefined SPL-class $my_recursive_dir_reader_iterator = new RecursiveDirectoryIterator($dir_path); // create instance of RecursiveIteratorIterator passing over the recursive DirectoryIterator $dir_or_file_path = new RecursiveIteratorIterator($my_recursive_dir_reader_iterator, true); // creating a verschachtelte list using alternative Syntax ?> <ul> <?php foreach ( $dir_or_file_path as $file ):;?>  <?php if ($lastDepth > $dir_or_file_path->getDepth()): //on the way back up?>    </ul></li>   <?php endif;?>  <li>   depth:  <?php echo $dir_or_file_path->getDepth()?>   name: <?php echo $file;?>   <?php if ($dir_or_file_path->hasChildren()): // subdirectories?>  <ul>   <?php endif;?>   <?php if (!$dir_or_file_path->hasChildren()): // files will get a closing </li>?>    </li>   <?php endif;?>   <?php $lastDepth = $dir_or_file_path->getDepth(); // keep in mind where we come from?> <?php endforeach;?> <!-- keine idee, warum da zwei schließende uls hinmüssen...--> </ul></ul> <hr> <?php  // creating a verschachtelte list using DOMFunktions  $dom = new DOMDocument;  $dom->formatOutput = true;  $master_ul_element = $dom->createElement("ul");  $dom->appendChild($master_ul_element);  //iterate recursively through the object  foreach ( $dir_or_file_path as $file ) {   // create li-Element with text   $li = $dom->createElement("li");   $text = "depth: " . $dir_or_file_path->getDepth() . " - name: ". $file;   $textElement = $dom->createTextNode($text);   $li->appendChild($textElement);   // check if on top level, then append to master-ul-element   if ($dir_or_file_path->getDepth() == 0) {    $master_ul_element->appendChild($li);   } else { //if not, append to the one above    $sub_ul_element[$dir_or_file_path->getDepth()-1]->appendChild($li);   }   // if iteration-element has children, create an sub-ul-element   if ($dir_or_file_path->hasChildren()) {    $sub_ul_element[$dir_or_file_path->getDepth()] = $dom->createElement("ul");    $li->appendChild($sub_ul_element[$dir_or_file_path->getDepth()]);   }  }  // some output  echo $dom->saveXML();

Dank und Gruß,

frankx

-- tryin to multitain  - Globus = Planet != Welt
  1. Hello FrankX,

    konntest Du schon feststellen, ob diese Klassen auch den zirkulären Verlauf verhindern, wenn in einem Subdirectory ein symbolischer Link auf eine höhere im Scanbereich befindliche Ebene besteht?

    Ich habe zudem immer noch den Eindruck, dass OOP oft nur betrieben wird, weil sie "chique" ist, und "normale Menschen" sie nicht so leicht verstehen... Alle OOP-Konzepte, die ich bisher kennengelernt habe, sind auch nur Bastelkisten, Java vielleicht gerade mal ausgenommen.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de

    1. Hi,

      Alle OOP-Konzepte, die ich bisher kennengelernt habe, sind auch nur Bastelkisten, Java vielleicht gerade mal ausgenommen.

      Ich sach nur: Smalltalk :)

      Gruß, Cybaer

      --
      Man muß viel gelernt haben, um über das, was man nicht weiß, fragen zu können.
      (Jean-Jacques Rousseau, Philosoph u. Schriftsteller)

    2. Hi!

      Alle OOP-Konzepte, die ich bisher kennengelernt habe, sind auch nur Bastelkisten, Java vielleicht gerade mal ausgenommen.

      Warum nimmst Du gerade Java aus?
      Das ist doch die größte (und schönste?) aller Bastelkisten.

      off:PP

      --
      "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)

      1. Hello,

        Warum nimmst Du gerade Java aus?
        Das ist doch die größte (und schönste?) aller Bastelkisten.

        Weil sie dann wenigstens wieder ein strenge Typbindung einhält, die Klassenhierarchie nicht durchlöchert und die ganze schöne Theorie dadurch nicht sofort wieder ad absurdum führt.

        Dafür ist sie langsam, wie ich nach einer Kiste Hefeweizen...

        Liebe Grüße aus Syburg bei Dortmund

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de

        1. Hallo Tom,

          Warum nimmst Du gerade Java aus?
          Das ist doch die größte (und schönste?) aller Bastelkisten.

          Weil sie dann wenigstens wieder ein strenge Typbindung einhält, die Klassenhierarchie nicht durchlöchert und die ganze schöne Theorie dadurch nicht sofort wieder ad absurdum führt.

          Dafür ist sie langsam, wie ich nach einer Kiste Hefeweizen...

          Das ist - mit Verlaub - vollkommener Unfug. Was normale Instruktionen angeht, ist Java nur unwesentlich langsamer als z.B. C. Der JIT-Compiler in den aktuellen JVMs ist ratenschnell. Wenn Du Kommandozeilen-Java-Programme schreibst, die nur etwas berechnen sollen, merkst Du den Unterschied zu C eigentlich gar nicht mehr.

          Java hat nur bei drei Punkten diesbezüglich Nachteile:

           * Startzeit: Es dauert halt einige Zeit, bis die JVM mal geladen ist, etwa
             eine Sekunden, je nach Last auch mal mehr. Daher eignet sich Java nicht
             für kurze Kommandozeilenprogramme oder CGI-Scripte. Für alles andere,
             was etwas länger läuft (Servlets, GUI-Programme, Hintergrundprozesse,
             etc.) ist das aber kein Problem.

           * Die Standard-Klassenbibliothek für GUIs (AWT/Swing) ist das, was Java
             so langsam macht. Zudem mag ich das API von AWT/Swing überhaupt nicht.
             Aber das ist kein Problem von Java selbst sondern nur von der
             Bibliothek.

           * Speicherverbrauch: Java verbraucht für Objekte relativ viel Speicher.
             Die Entwickler von Saxon (XSLT-Prozessor) z.B. haben sich einige Dinge
             ausdenken müssen, um den Speicherverbrauch niedrig zu halten, um extrem
             große XML-Dokumente (geht teilweise in die GB!) noch brauchbar
             transformieren zu können, das wäre mit anderen Sprachen nicht ganz so
             drastisch ausgefallen. Bei allen alltäglichen Aufgaben, bei denen man
             keine Millionen von Objekten braucht, spielt das aber keine Rolle.

          Das einzige wirkliche Manko daran ist wirklich die Standard-GUI-Klassenbibliothek. Die anderen beiden Punkte fallen bei alltäglichen Programmen nicht ins Gewicht.

          Viele Grüße,
          Christian

          --
          Mein "Weblog" [RSS]
          Using XSLT to create JSON output (Saxon-B 9.0 for Java)

          1. Hello Christian,

            Das ist - mit Verlaub - vollkommener Unfug. Was normale Instruktionen angeht, ist Java nur unwesentlich langsamer als z.B. C. Der JIT-Compiler in den aktuellen JVMs ist rattenschnell. Wenn Du Kommandozeilen-Java-Programme schreibst, die nur etwas berechnen sollen, merkst Du den Unterschied zu C eigentlich gar nicht mehr.

            Ich habe diese Erkenntnisse auch erst die letzten Monaten ziehen können, nachdem ich einige Java-Programmierer kennengelernt habe. Sie arbeiten alle im industriellen Umfeld und haben das Problem, dass ihre Java-Programme gegenüber gut geschriebenen C Programmen oft die engen Zeitvorgaben ums dreifache überschreiten. Das hat mich dann dazu motiviert, doch lieber auch C zu wiederholen und endlich anständig C++ zu lernen... :-)

            Ich kann die Aussagen auch nur aus der Industrie abgreifen, wo meine Kunden saßen, habe aber durchaus Vertrauen zu deren Einschätzung.

            Nur dort, wo bereits "der Prozessor Java spricht" , sind Vorteile zu erkennen, insbesondere natürlich, was die Sicherheit der Programme betrifft. Die hat bei konsequenter Anwendung von Java bisher aber keiner der Gesprächspartner in Frage gestellt.

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de

            1. Hallo Tom,

              Das ist - mit Verlaub - vollkommener Unfug. Was normale Instruktionen angeht, ist Java nur unwesentlich langsamer als z.B. C. Der JIT-Compiler in den aktuellen JVMs ist rattenschnell. Wenn Du Kommandozeilen-Java-Programme schreibst, die nur etwas berechnen sollen, merkst Du den Unterschied zu C eigentlich gar nicht mehr.

              Ich habe diese Erkenntnisse auch erst die letzten Monaten ziehen können, nachdem ich einige Java-Programmierer kennengelernt habe. Sie arbeiten alle im industriellen Umfeld und haben das Problem, dass ihre Java-Programme gegenüber gut geschriebenen C Programmen oft die engen Zeitvorgaben ums dreifache überschreiten.

              Was heißt "enge Zeitvorgaben"? Echtzeit? Gut, dass sich Java nicht für Echtzeitanwendungen eignet, bezweifle ich nicht, die Latenzen für wenige Operationen sind teilweise wesentlich höher. Aber zur normalen Verarbeitung von Daten auf Arbeitsplatzrechnern oder Servern ist Java mehr als geeignet und schnell genug - darum gibt's doch die ganzen Application Server in Java und den ganzen Middleware-Kram sowie die ganzen Schnittstellen für Kommunikation um Business-Bereich. Wenn die Java-Programme ordentlich implementiert sind, ist das eigentlich rattenschnell und wird fast nur durch äußere Einflüsse (I/O, Datenbanken, ...) gebremst.

              Viele Grüße,
              Christian

              --
              Mein "Weblog" [RSS]
              Using XSLT to create JSON output (Saxon-B 9.0 for Java)

    3. Salvete,

      Ich habe zudem immer noch den Eindruck, dass OOP oft nur betrieben wird,
      weil sie "chique" ist, und "normale Menschen" sie nicht so leicht
      verstehen... Alle OOP-Konzepte, die ich bisher kennengelernt habe, sind
      auch nur Bastelkisten, Java vielleicht gerade mal ausgenommen.

      So eine Aussage findet man auch nur bei self_html_... echt klasse das..

      MfG,
      Sympatisant

      -- "Non dura iubeantur, non prohibeantur inpura."
      1. Hellihello

        Ich habe zudem immer noch den Eindruck, dass OOP oft nur betrieben wird,
        weil sie "chique" ist, und "normale Menschen" sie nicht so leicht
        verstehen... Alle OOP-Konzepte, die ich bisher kennengelernt habe, sind
        auch nur Bastelkisten, Java vielleicht gerade mal ausgenommen.

        So eine Aussage findet man auch nur bei self_html_... echt klasse das..

        Meinen Eindruck trifft das überhaupt nicht. PHP, 1995 von Rasmus Lerdorf entwickelt, wurde von Andi Gutmans und Zeev Suraski (Zend-Technolgies) weiterentwickelt. Erst vor vier Jahren erschien die 5er Verion. Vor drei Jahren wurde mit der Entwicklung des Zend-Frameworks begonnen, was auf der OOP-Funktionalität (u.a. mit Interzeptormethoden) und "spl" (register_autoload,  Iteratoren(?)) basiert.

        Zu dem Zeitpunkt existierte Ruby on Rails bereits. Die Entwickler vom Zend-Framework verfolgen da wohl eine anderen "Vision". RoRs "Convention over Configuration" eben nicht ganz so strikt. Die Iteratoren, als Kern der "spl", sollen ja wohl sowas wie einen standardisierten Zugriff auf eine Datenstruktur haben, unabhängig von ihrer Quelle, oder? Keine "while(get_next_line/result())" mehr, sondern nur "foreach". Um verschachtelte Strukturen rekursiv zu durchlaufen wird dann zB. wohl die aktuelle Tiefe ->getDepth() mitgegeben. Ich finde es durchaus abstrakt, das Einbauen der korrekten <li> und <ul> war auch eher trial-and-error-driven.

        Aber dass die über 12-jährige ja doch recht konsequente fortschreitende Entwicklung von PHP Dinge aus Gründen des "chick"s hervorbringen sollte, übersteigt mein Vorstellungsvermögen. Eher sowas wie: "Mit den Iteratoren sollte dies und jenes erreicht werden, haben die "User" aber nicht angenommen." Oder: "hat sich gezeigt, dass das anders besser lösbar ist". Der Versuch ist ja wohl, bei den Iteratoren der "spl" wie auch beim "FW", ein grundlegendes Modell anzubieten, dass genug Konventionen (u.a. auch Definition von "best practices" im ZendFW) bietet, um nach einheitlichen Grundmustern (und somit verständlich für andere sowie effizient) zu coden, auf der anderen Seite aber ausreichend Flexibilität, also den absichtlichen Verzicht auf gewisse Rahmen, die Ruby-on-Rails steckt.

        Dank und Gruß,

        frankx

        -- tryin to multitain  - Globus = Planet != Welt
        1. Salvete,

          ich glaub, du hast Ironie nicht erkannt ;-)
          Es ging mir eigentlich darum, dass man, wenn man das Programmieren nicht mit
          PHP, sondern mit gaengigen Hochsprachen gelernt hat, nicht solch eine
          Aussage von sich geben wuerde.

          MfG,
          Sympatisant

          -- "Non dura iubeantur, non prohibeantur inpura."
          1. Hellihello

            ich glaub, du hast Ironie nicht erkannt ;-)

            Ich erkannte. Ich antwortete dem falschen.

            Es ging mir eigentlich darum, dass man, wenn man das Programmieren nicht mit
            PHP, sondern mit gaengigen Hochsprachen gelernt hat,

            Was sind "gängige Hochsprachen"?

            C, C++, C#, Java (oder auch Python und Perl?)

            Dank und Gruß,

            frankx

            -- tryin to multitain  - Globus = Planet != Welt
            1. Salvete,

              Was sind "gängige Hochsprachen"?

              Ich meine die Sprachen der dritten Generation.
              Also BASIC, C, C++, C#, Borland Delphi, Java

              Gruesse aus Berlin,
              Sympatisant

              -- "Non dura iubeantur, non prohibeantur inpura."
            2. Hallo,

              Es ging mir eigentlich darum, dass man, wenn man das Programmieren nicht mit
              PHP, sondern mit gaengigen Hochsprachen gelernt hat,

              Was sind "gängige Hochsprachen"?
              C, C++, C#, Java (oder auch Python und Perl?)

              Ada, BASIC, C, Delphi, Eiffel, FORTRAN, ...

              Ich bezweifle allerdings, dass Tom Programmieren mit PHP erlernt hat. Soweit ich das in Erinnerung habe, hat Tom sich bereits mit Programmieren herumgeschlagen, als PHP noch lange nicht erfunden worden war. Allerdings auch lange, bevor die Idee der Objektorientierung geboren wurde.

              Praxistaugliche Tutorials für OOP, und speziell solche für den Umstieg von prozeduraler Programmierung zu OOP, findet man leider höchstens wie eine Stecknadel in einem riesigen Heuhaufen und nicht wie Sand am Meer.

              Freundliche Grüße

              Vinzenz

              1. Salvete,

                Praxistaugliche Tutorials für OOP, und speziell solche für den Umstieg
                von prozeduraler Programmierung zu OOP, findet man leider höchstens wie
                eine Stecknadel in einem riesigen Heuhaufen und nicht wie Sand am Meer.

                Dafuer gibt es aber sehr gute Buecher:
                http://www.amazon.de/Entwurfsmuster-von-Kopf-bis-Fu%C3%9F/dp/3897214210/ref=sr_1_8?ie=UTF8&s=books&qid=1219763469&sr=1-8
                http://www.amazon.de/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612

                MfG,
                Sympatisant

                -- "Non dura iubeantur, non prohibeantur inpura."
                1. Hello,

                  Praxistaugliche Tutorials für OOP, und speziell solche für den Umstieg
                  von prozeduraler Programmierung zu OOP, findet man leider höchstens wie
                  eine Stecknadel in einem riesigen Heuhaufen und nicht wie Sand am Meer.

                  Dafuer gibt es aber sehr gute Buecher:
                  http://www.amazon.de/Entwurfsmuster-von-Kopf-bis-Fu%C3%9F/dp/3897214210/ref=sr_1_8?ie=UTF8&s=books&qid=1219763469&sr=1-8
                  http://www.amazon.de/Patterns-Elements-Reusable-Object-Oriented-Software/dp/0201633612

                  Es geht aber nicht nur darum, was theoretisch möglich ist, sondern auch um das, was praktisch sinnvoll ist. MMn vergessen viele der OOP-Konzepte die konsequente Rückführung des entstehenden Codes auf das Machbare und die Nutzung der tatsächlichen Systemressourcen.

                  Eines meiner Beispiele sind die Unterschiede zwischen Schleifenkonstrukten.

                  Eine for-Schleife ist entstanden als sogenannte dedizierte Schleife und ich habe bisher keinen neuren Compiler gefunden, der diese nachher auch tatsächlich noch in eine solche umsetzt auf Prozessorebene. Diese ist aber, richtig umgestezt, oft viermal so schnell, was gerade bei annähernd stumpfen Massenkopieroperationen viel ausmacht. Grafikdarstellung, die wohl inzwischen über 90% der Arbeit mit einem OS im Tagesbetrieb ausmacht, leidet unter der mangelhaften Rückführung auf die Fähigkeiten der Hardware - das Schlimme ist, fast jeder gängigen Hardware!

                  Die Einführung von asp.net mutet dann auch recht abenteuerlich an. Diverse Megabytes (oder sind es schon Giga?) an notwendiger Library für das Funktionieren von einigen Programmen mit ein paar Kilobytes vorauszusetzen, anstatt EINEN VERNÜNFTIGEN Prozessor und eine passende Hochsprache nebst Compiler und Linker dafür zu entwickeln, erscheint mir doch angesichts der Verbreitung der betroffenen Systeme eher als Fake, als Vorbereitung auf einen mächtigen Tiefschlag gegen die Menschheit.

                  Ok, als PHP-Fan sollte ich eigentlich hübsch still sein...
                  Schließlich ist PHP heute schon "plattformunabhängiger", als es Java je sein wird! ;-)

                  Aber zufrieden bin ich mit der Entwicklung keinesfalls.

                  Moderne Systeme und Prozessoren könnten heute bei passenden Hochsprachen und Compilern und Einsatz in ihren Aufgabenbereichen mit jeweils 5Watt Betriebsleistung auskommen, anstelle von (vor kurzem noch) 300 Watt (inclusive grafischer Darstellungseinheit). Das wäre dann eine mögliche Ersparnis von ca. 30.000.000 * 295W = ???.

                  Die Illusion von der allseits präsenten Universalmaschine auf Kosten der Umwelt macht mir eben Angst.

                  Liebe Grüße aus Syburg bei Dortmund

                  Tom vom Berg

                  --
                  Nur selber lernen macht schlau
                  http://bergpost.annerschbarrich.de

                  1. Hallo,

                    Eine for-Schleife ist entstanden als sogenannte dedizierte Schleife und ich habe bisher keinen neuren Compiler gefunden, der diese nachher auch tatsächlich noch in eine solche umsetzt auf Prozessorebene. Diese ist aber, richtig umgestezt, oft viermal so schnell, was gerade bei annähernd stumpfen Massenkopieroperationen viel ausmacht.

                    wie hast Du das festgestellt.

                    Grafikdarstellung, die wohl inzwischen über 90% der Arbeit mit einem OS im Tagesbetrieb ausmacht, leidet unter der mangelhaften Rückführung auf die Fähigkeiten der Hardware - das Schlimme ist, fast jeder gängigen Hardware!

                    Tom, das ist Unsinn.

                    Die Einführung von asp.net mutet dann auch recht abenteuerlich an. Diverse Megabytes (oder sind es schon Giga?) an notwendiger Library für das Funktionieren von einigen Programmen mit ein paar Kilobytes vorauszusetzen, anstatt EINEN VERNÜNFTIGEN Prozessor und eine passende Hochsprache nebst Compiler und Linker dafür zu entwickeln, erscheint mir doch angesichts der Verbreitung der betroffenen Systeme eher als Fake, als Vorbereitung auf einen mächtigen Tiefschlag gegen die Menschheit.

                    ???

                    Ich finde es toll, welche Möglichkeiten mir .NET, Java & Co. ermöglichen. Nein, ich möchte das Rad nicht zum millionsten Mal von Grund auf neu erfinden.

                    Moderne Systeme und Prozessoren könnten heute bei passenden Hochsprachen und Compilern und Einsatz in ihren Aufgabenbereichen mit jeweils 5Watt Betriebsleistung auskommen, anstelle von (vor kurzem noch) 300 Watt (inclusive grafischer Darstellungseinheit). Das wäre dann eine mögliche Ersparnis von ca. 30.000.000 * 295W = ???.

                    Mein Desktoprechner verbrät bei normalem Betrieb ca. 70-90 Watt, mein Notebook im Netzbetrieb etwa 20 Watt (mit herkömmlichen Verbrauchsmessgerät gemessen). Wie kommst Du auf Deine abenteuerlichen Zahlen.

                    Freundliche Grüße

                    Vinzenz

                    1. Hello,

                      Mein Desktoprechner verbrät bei normalem Betrieb ca. 70-90 Watt, mein Notebook im Netzbetrieb etwa 20 Watt (mit herkömmlichen Verbrauchsmessgerät gemessen). Wie kommst Du auf Deine abenteuerlichen Zahlen.

                      Rechner, die nur aufgabengerecht eingestzt werden, kommen mit 8 Watt plus ggf. 20 Watt für das Display aus... :-)

                      Ich schaue mal, dass ich abgesicherte Zahlen aus ernsthaften Untersuchungen zum Thema nochmal mit Stempel und Unterschirft bekomme... Vielleicht schaffe ich das bis zum Selftreffen.

                      Liebe Grüße aus Syburg bei Dortmund

                      Tom vom Berg

                      --
                      Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de

                  2. Hallo Tom,

                    Ich möchte hier mal für's Archiv eine Lanze für OOP brechen. Oder besser gesagt: Für strukturierte Programmierung allgemein, wo OOP nur ein bekannter Vertreter ist (es gibt auch andere Paradigmen). Du schreibst, dass Dir höhere Sprachen suspekt sind, weil sie für einfache Konstrukte, wie zum Beispiel schleifen, zu viele Operationen durchführen und damit komplett ineffizient sind.

                    Ich möchte Deiner Schlussfolgerung, dass sie aus diesem Grund ineffizient sind, komplett widersprechen. Das Problem 99% aller Software ist nämlich nicht, wie lange eine einzelne Instruktion braucht. Ob eine Schleife vom Compiler totoptimiert wird oder nicht ist für die meisten Anwendungen vollkommen uninteressant.

                    Betrachten wir zum Beispiel eine Suchfunktion einer Webseite. Betrachten wir folgende beide Herangehensweisen:

                    1) Man nimmt eine klassische, lineare Suche, die alle zu durchsuchenden Dateien einliest und nach den Suchbegriffen nacheinander sucht. Man optimiert den Assembler-Code auf Mikroebene, dass alle Schleifen und Instruktionen so schnell wie es nur möglich ist ausgeführt werden.

                    2) Man überlegt sich eine brauchbare Suchindexstruktur und schreibt die Suche in einer sehr abstrakten Hochsprache (Java, Python, Ruby, whatever) und optimiert die einzelnen Instruktionen überhaupt nicht. Allerdings steckt man viel Aufwand in die Auswahl der Indexstruktur etc.

                    Ich garantiere Dir, dass bei nichttrivialen Datenmengen die zweite Version in einer Hochsprache der Assembler-Version um mehrere Größenordnungen schneller ist. Nicht, weil die Hochsprache irgendwie schneller oder besser wäre als Assembler. Aber weil ein brauchbarer Suchindex weitaus mehr ausmacht, als Mirkooptimierung von Prozessorinstruktionen.

                    Natürlich könnte man auch einen Suchindex in Assembler nachbauen, aber das würde einen sehr hohen Entwicklungsaufwand nach sich ziehen. Einfach weil es in Assembler weitaus aufwändiger und schwieriger ist, abstrakte Ideen umzusetzen, als in einer Hochsprache, die Abstraktionskonzepte bereits mit sich bringt.

                    Man mag einwenden, dass das Suchindexbeispiel vielleicht nicht unbedingt ein Paradebeispiel für OOP an sich ist, aber es verdeutlicht zumindest mal, warum Optimierung auf einer höheren Ebene für die meiste Software viel wichtiger ist, als Mirkooptimierung. Die ist für fast jede Software vollkommen uninteressant.

                    Es gibt jetzt nun in meinen Augen zwei extrem gute Gründe, warum OOP ein sehr hilfreiches Konzept ist:

                    1. Es bietet eine ausreichend abstrakte Ebene, um Dinge darzustellen und ermöglicht es so, sich auf die wesentlichen Aspekte eines Algorithmus zu konzentrieren.

                    2. Es ermöglicht, Code auf mehrere Arten wiederzuverwenden.

                    Zum Punkt 1: Ich kann Code sehr gut kapseln, d.h. bestimmte Logik, die an bestimmten Stellen im Programm nicht interessiert, in andere Klassen kapseln. Damit hast Du sehr sprechenden Code (objekt.tuDies(), objekt.holeDas(), ...), der einem einen viel besseren Überblick über die Art gibt, wie der Code funktioniert.

                    Dies ist insbesondere bei der Wartung des Codes sehr wichtig, dass man den Code sehr schnell verstehen kann, auch wenn man ihn schon einige Zeit nicht mehr oder noch nie (wenn man neu hinzugekommen ist) gelesen hat.

                    Zum Punkt 2: Wiederverwenden von Code im OOP-Bereich funktioniert auf zwei verschiedene Arten:

                    Man kann Dinge in generische Klassen kapseln, die bestimmte Aufgaben erledigen. Paradebeispiel für den OOP-Einsatz sind GUIs: Ein Eingabefeld ist ein Objekt, ein Fenster ist ein Objekt, etc. Die zu Grunde liegenden Klassen kann man beliebig oft wiederverwenden für weitere Eingabefelder / Fenster / etc. im Programm. Wenn man an dem Aussehen oder Verhalten aller Eingabefelder etwas ändern will, muss man eine zentrale Klasse ändern.

                    Ferner gibt es in der OOP das Konzept der Vererbung: Man kann Klassen erzeugen, die von anderen Klassen erben und damit erst einmal alle Eigenschaften und Methoden übernehmen. Bestimmte Eigenschaften und Methoden kann man dann überschreiben, um in spezifischen Kindklassen ein anderes Verhalten zu erzeugen. Auch hier wäre die GUI ein Paradebeispiel: Es gibt eine allgemeine Klasse "Eingabefeld" und dann gibt es eine Klasse "ZahlenEingabefeld", die die mögliche Eingabe auf Zahlen beschränkt. Die meisten Eigenschaften beider Klassen sind gleich (wäre also doppelter Code, wenn man kein OOP einsetzt - und OOP-Einsatz heißt für mich auch, wenn man OOP in nicht-OOP-Sprachen wie C nachbildet), allerdings gibt es ein paar wenige Dinge, bei denen sich beide Eingabefelder unterscheiden. Und genau hier ist dann Code-Wiederverwendung sehr sinnvoll.

                    Wenn Du Dir dann noch überlegst, wie viel Zeit dabei verloren geht, Software zu erweitern und/oder zu debuggen, die solche Abstraktionen wie OOP eben nicht einsetzt, aber doch sehr komplexe Systeme umsetzt, dann geht Deine Milchmädchenrechnung, dass man durch OOP die Umwelt belastet, erst recht nicht auf, unabhängig von der Tatsache, dass Mirkooptimierungen meistens sowieso nicht viel ausmachen (siehe oben). Ja, ich weiß, das mit der Umwelt hast Du nicht ganz so gesagt, aber wenn Du schon Polemik einbringst, dann darf ich nachfassen. ;-)

                    Selbstverständlich gibt es auch Leute, die es stark übertreiben und alle möglichen Programme mit Features bis zum geht nicht mehr vollstopfen, die kein Mensch benötigt, und damit Ressourcen ohne Ende verschwenden. Oder Leute, die alles ZU generisch machen wollen und sich 5 Klassen anlegen, wo nur eine ausreichen würde, so dass keiner mehr durchblickt. Das ist aber kein grundsätzliches Problem von OOP, denn mit jedem Programmierkonzept kann man unsäglichen Mist bauen. Und deswegen ändert es nichts an der Tatsache, dass OOP ein sehr nützliches Konzept für sehr viele Anwendungsbereiche ist.

                    Natürlich gibt es auch Bereiche, in denen solche Konzepte nicht sinnvoll sind, nämlich genau dann, wenn hardwarenähe sehr wichtig ist. Dies ist vor allem bei Low-Level-Treibern der Fall, bei Anwendungen mit Echtzeitanforderung, im Embedded-Bereich (Mikrocontroller) und eben auch bei bestimmten kritischen Algorithmen, die besonders viele Daten möglichst schnell verarbeiten können sollen, wie zum Beispiel Verschlüsselungsalgorithmen für SSL oder Festplattenverschlüsselung oder ähnliches. Dies macht jedoch von der tatsächlich entwickelten Software nur einen geringen Teil aus und wenn man so etwas macht, dann programmiert man auch ganz anders, als wenn man normale Software programmiert. Und gerade z.B. Treiber oder Verschlüsselungsalgorithmen: Die werden idR. von Experten programmiert und von normaler Anwendungssoftware nur eingebunden und genutzt, so dass man die Vorteile aus beiden Welten hat.

                    Viele Grüße,
                    Christian

                    --
                    Mein "Weblog" [RSS]
                    Using XSLT to create JSON output (Saxon-B 9.0 for Java)

                    1. Hallo,

                      wer ist eigentlich dieser Mirko und ist er wirklich so unvollkommen, dass alle ihn optimieren wollen?

                      Mathias

                      -- SELFHTML aktuell Weblog
                      1. Hello,

                        wer ist eigentlich dieser Mirko und ist er wirklich so unvollkommen, dass alle ihn optimieren wollen?

                        das scheint wohl der Sohn von Billy the Gator zu sein. Hat der Seine Firma nicht nach seinem Sohn benannt?

                        Liebe Grüße aus Syburg bei Dortmund

                        Tom vom Berg

                        --
                        Nur selber lernen macht schlau
                        http://bergpost.annerschbarrich.de

                    2. Hello Christian,

                      ich habe Deine Antwort gelesen und viele Gedanken dazu.
                      Eine ausführlicher Antwort kommt noch.

                      Vorab nur diese Stellungnahme:
                      Generell habe ich gegen die Entwicklung höherer Programmiersprachen keinerlei Einwände. Immerhin habe ich schon den Schritt zum Makroassembler sehr angenehm empfunden... Solange diese "Vereinfacher"  in der Lage sind, die mittels ihrer Hilfestellungen erzeugten Befehlsblöcke über die verschiedenen Ebenen auch wieder jweils für eine bestimmte Plattform zu optimieren, ist alles in Butter.

                      Das wird leider meistens vernachlässigt, sondern es wird an höherer Stelle bereits unangemessen vereinfacht, sodass in den unteren Schichten gar nicht mehr ohne Risko, etwas zu verschlimmbessern, optimiert werden kann.

                      ... tbc

                      Liebe Grüße aus Syburg bei Dortmund

                      Tom vom Berg

                      --
                      Nur selber lernen macht schlau
                      http://bergpost.annerschbarrich.de

                      1. Hallo Tom,

                        Vorab nur diese Stellungnahme: [...]

                        Du bist darin aber leider gar nicht auf mein zentrales Argument eingegangen, dass die Optimierungen, an denen Du so klebst, für die meiste Software vollkommen irrelevant sind.

                        Viele Grüße,
                        Christian

                        --
                        Mein "Weblog" [RSS]
                        Using XSLT to create JSON output (Saxon-B 9.0 for Java)

                        1. Salvete,

                          Du bist darin aber leider gar nicht auf mein zentrales Argument
                          eingegangen, dass die Optimierungen, an denen Du so klebst, für die
                          meiste Software vollkommen irrelevant sind.

                          Tja, so ist das meisstens.. so ein schoener Artikel.. und alles fuer die Katz'

                          Sagte ich Katz? Es gibt ja noch das Archiv ;-)

                          MfG,
                          Sympatisant

                          -- "Non dura iubeantur, non prohibeantur inpura."
                          1. Hoi!

                            Tom hatte ja eine detaillierte Antwort angekündigt. Ich bin womöglich nicht der einzige, der gespannt darauf wartet?

                            Gespannte Grüße

                            1. Hai,

                              Tom hatte ja eine detaillierte Antwort angekündigt. Ich bin
                              womöglich nicht der einzige, der gespannt darauf wartet?

                              Hehe.. aber dann muesste er ja was eingestehen..

                              MfG,
                              Sympatisant

                              -- "If the future isn't bright, at least it is colorful"
                              1. Hallo,

                                Tom hatte ja eine detaillierte Antwort angekündigt. Ich bin
                                womöglich nicht der einzige, der gespannt darauf wartet?

                                Es gibt Hoffnung.

                                Wartende Grüße

                                Vinzenz

                                1. Hai,

                                  Es gibt Hoffnung.

                                  Herrlich ;)

                                  MfG,
                                  Sympatisant

                                  -- "If the future isn't bright, at least it is colorful"
                                  1. Hello,

                                    Es gibt Hoffnung.

                                    Herrlich ;)

                                    Schade, dass Du dich nicht wie ein fairer Disputant sondern immer nur wie ein fieser Agitator verhältst.

                                    Wenn ich mich darüber beklage, dass OOP für mich selten ein erkennbaren Nutzen hat, sondern vielmehr meistens nur die Projekte aufbläst, dann kann ich das auch an etlichen Erlebnissen und Erfahrungen festmachen. Kann ja sein, dass alle Beispiele, die ich bisher gesehen habe, so dermaßen schlecht waren, dass sie es gar nicht wert sind...

                                    Aber soviele schlechte auch aus eigentlich qualifizierten Quellen?

                                    Und er nächste Schritt (asp.net) ist ja auch nicht unbedingt platzsparend. Es geht alles in die Richtung der eierlegenden Wollmilchsau. Den Focus auf die wesentlichen Fähigkeiten zu legen, wird dabei aber leider oft vergessen.

                                    Aber das will ich jetzt hier nicht zur Diskussion stellen. Du kannst da aber gerne ohne mich weitermachen.

                                    Nur bitte ich Dich um eins: bring auch mal inhaltliches und nicht nur Mobbing gegen andere Forumsteilnehmer. An mir perlt das ab, gerade von Dir, denn Du machst es zu billig. Aber sollte ich es noch öfter registrieren, dass Du weiterhin auch Andere angehst, werde ich mich für Sanktionen gegen Dich stark machen!

                                    So weit, so gut...

                                    Liebe Grüße aus Syburg bei Dortmund

                                    Tom vom Berg

                                    --
                                    Nur selber lernen macht schlau
                                    http://bergpost.annerschbarrich.de

                                    1. Hai Tom,

                                      das, was mich ehrlich gesagt an dir missfaellt, Tom, ist dein teils unermesslich dilettantisches Verhalten. Wenn sich mir eine Sache nicht erschliesst, dann mutmasse ich mir nicht an, ueber sie zu urteilen. Erst wenn man etwas verstanden hat, wird einem die Sinnhaftigkeit einer Sache ersichtlich. Und da diese Erkenntnis, das geht anschaulich aus deinen Postings hervor, selten vorhanden ist, sehe ich fuer mich keinen Anreiz argumentativ vorzugehen. Fuerwahr, jetzt stellt sich die Frage, warum ich ueberhaupt etwas antworte; der Schluessel hierfuer liegt jedoch in deinen teils ueberheblichen, teils mit Buzzwords zugespickten Postings - da kann man sich einfach nicht zurueckhalten. Es mag eine Schwaeche von mir sein, aber dazu stehe ich.

                                      Und wenn sich einer mal die Muehe macht, dir etwas naeher zu bringen respektive verstaendlicher zu machen, dann folgt keine Antwort mehr von dir; oder du ziehst einfach eine beliebige, meisst schwammig formulierte Aussage aus dem Potpourris, an der du dich festklammerst, um nicht eingestehen zu muessen, dass du falsch lagst.
                                      Beispiele? Allein auf der aktuellen Startseite wirst du fuendig.

                                      Um bei dem aktuellen Thread zu bleiben:
                                      Grob skizziert - sprich: ohne die ganzen Buzzwords -, wettest du gegen OOP einzig und allein mit dem "Argument", dass dort Schleifenkonstruktionen prinzipiell nicht gut umgesetzt seien. Dass sich da ueberhaupt wer bemueht zu antworten, ist schon beachtlich. Dann, in einem anderen Thread, musstest du dir erklaeren lassen, was Reflection bedeutet. Diese Aussage, gepaart mit den vorherigen, fuehren zu der Annahme, dass da ein allgemeines und grundlegendes Verstaendnisproblem existiert.

                                      Wie oben bereits erwaehnt, das alles macht ja nix. Ich meinerseits freue mich stets, wenn ich etwas nicht wusste. Denn dann hat man ja wieder etwas dazugelernt. Doch die Ueberheblichkeit ist fehl am Platz; und ich deuete sie als Charakterschwaeche.

                                      So, damit du mir jetzt nicht vorwirfst, nicht auf die weiteren Aspekte deines Postings eingegangen zu sein, hier die Beantwortung dessen:

                                      Schade, dass Du dich nicht wie ein fairer Disputant sondern immer nur wie ein fieser Agitator verhältst.

                                      Zaehlst du dich tatseaechlich zu ersterem?

                                      Wenn ich mich darüber beklage, dass OOP für mich selten ein erkennbaren Nutzen hat, sondern vielmehr meistens
                                      nur die Projekte aufbläst, dann kann ich das auch an etlichen Erlebnissen und Erfahrungen festmachen. Kann ja
                                      sein, dass alle Beispiele, die ich bisher gesehen habe, so dermaßen schlecht waren, dass sie es gar nicht wert
                                      sind...

                                      Genau diese Herangehensweise fuehrte mich zu der Aussage meines ersten Satzes in diesem Posting.
                                      Du moechtest gern ein einfaches Beispiel sehen, wo du dann sagen kannst, ja, OOP hat seinen Sinn. Und solange du das nicht gefunden hast, behauptest du die Tiefen von OOP verstanden zu haben.. so, dass du es als "unbrauchbar" abstempeln kannst.
                                      Ich empfehle dir dich mal mit Java zu beschaeftigen. Insbesondere mit 3-Tier-Development, einem Applicationserver und EJBs, und am besten noch in Kombination mit Hibernate. Sich da einzuarbeiten ist anfaenglich vielleicht harter Tobak, aber es lohnt sich. Ich glaube nicht, dass du danach immernoch solche Aussagen von dir geben wuerdest.

                                      Aber soviele schlechte auch aus eigentlich qualifizierten Quellen?

                                      Wie bereits gesagt, ein Verstaendnis muss vorhanden sein.

                                      Und er nächste Schritt (asp.net) ist ja auch nicht unbedingt platzsparend. Es geht alles in die Richtung der
                                      eierlegenden Wollmilchsau.

                                      Und noch so eine Aussage. Ich bezweifle, dass du ueberhaupt den Untreschied von ASP und .NET kennst, geschweige denn, was .NET ueberhaupt darstellt. Was genau hast Du mit .NET gemacht?
                                      Hast du dir mal C# naeher angeschaut? Besonders die neue 3er Version? Mit all den schoenen OOP-Neuheiten? Wie zb. Implizit typisierte Variablen/Arrays, Lambda Expressions und Expression Trees, Extension-Methods, Anonymous Types, und vor allem LINQ?
                                      Ja? Was hat dich dann gestoert?
                                      Nein? Warum urteilst du dann?

                                      Den Focus auf die wesentlichen Fähigkeiten zu legen, wird dabei aber leider oft vergessen.

                                      Was genau meinst du damit? Was ist das Wesentliche und wo wurde es (zb. im Falle von .NET) vergessen? Bitte etwas genauer.

                                      Nur bitte ich Dich um eins: bring auch mal inhaltliches und nicht nur Mobbing gegen andere Forumsteilnehmer.
                                      An mir perlt das ab, gerade von Dir, denn Du machst es zu billig.

                                      Mobbing??

                                      Aber sollte ich es noch öfter registrieren, dass Du weiterhin auch Andere angehst, werde
                                      ich mich für Sanktionen gegen Dich stark machen!

                                      Gut Gelingen, Tom!

                                      MfG,
                                      Sympatisant

                                      -- "If the future isn't bright, at least it is colorful"
                                      1. Hellihello,

                                        als OP wundere ich mich dann doch bzw. tut es mir leid, wenn aus einer sachlichen frage dann solch eine relative schlammschlacht wird, sorry jungs. struppi und texter hatten sich in dem topf-thread wegen ein paar flammbarer aluminiumkrümel auch schon in der woll. "unermesslich dilettantisch" ist definitiv nicht charta-konform. "mobbing"-vorwürfe auch nicht. und: es gibt ja auch noch die lounge oder den chat, zum austragen privater fehden.

                                        und: eine diskussion auf sachlicher ebene über die vor- und nachteile von oop kann doch wirklich auch erhellend sein. und: offenbar unterliegt solch eine beurteilung auch persönlichen vorlieben (sa. diskussionen zu frames oder tabellenmissbrauch).

                                        in dem sinne, einen friedlichen abend wünsche, sallam und shalom oder wie auch immer,

                                        Dank und Gruß,

                                        frankx

                                        ps. paamayim nekudotayim heißt doppelter doppelpunkt, und danil charms schrieb krass komische geschichten

                                        --
                                        tryin to multitain  - Globus = Planet != Welt

                                      2. Hello,

                                        [...] der Schluessel hierfuer liegt jedoch in deinen teils ueberheblichen, teils mit Buzzwords zugespickten Postings [...]

                                        Du hast sicherlich genügend Beispiele für diese Behauptung?

                                        Liebe Grüße aus Syburg bei Dortmund

                                        Tom vom Berg

                                        --
                                        Nur selber lernen macht schlau
                                        http://bergpost.annerschbarrich.de

                                        1. Hai Tom,

                                          [...] der Schluessel hierfuer liegt jedoch in deinen teils
                                          ueberheblichen, teils mit Buzzwords zugespickten Postings [...]

                                          Du hast sicherlich genügend Beispiele für diese Behauptung?

                                          Welch ein Paradebeispiel! Genau dieses Verhalten habe ich an dir kritisert.
                                          Ich zitiere:

                                          Und wenn sich einer mal die Muehe macht, dir etwas naeher zu bringen
                                          respektive verstaendlicher zu machen, dann folgt keine Antwort mehr
                                          von dir; oder du ziehst einfach eine beliebige, meisst schwammig
                                          formulierte Aussage aus dem Potpourris, an der du dich festklammerst,
                                          um nicht eingestehen zu muessen, dass du falsch lagst.

                                          Nun bist du auch mal wieder auf keine der technischen Fragen eingegangen:

                                          * Thema: OOP -> Schleifenkonstruktionen
                                          * Untreschied ASP <-> .NET
                                          * Was genau hast Du mit .NET bereits gemacht, dass du zu so einer
                                            Aussgae gelangst?
                                          * Was hat dir an C# nicht gefallen?
                                          * Thema: Lambda Expressions, Extension-Methods, LINQ etc..
                                          * Was genau meinst du damit? Was ist das Wesentliche und wo wurde es (zb.
                                            im Falle von .NET) vergessen? Bitte etwas genauer.

                                          ..und acuh ein qualitativ gutes Posting wartet immernoch auf deine detaillierte Antwort:
                                          ?t=175998&m=1157846

                                          MfG,
                                          Sympatisant

                                          -- "If the future isn't bright, at least it is colorful"
                                          1. Hello,

                                            ..und acuh ein qualitativ gutes Posting wartet immernoch auf deine detaillierte Antwort:
                                            ?t=175998&m=1157846

                                            Was hast Du damit zu tun? Bisher hast Du nichts zum Thema beigetragen.

                                            Du bist es, der hier als anonymer Stänkerer auftritt. Du bist zu feige, Dich zu offenbaren, greifst ständig Poster mit irgendwelchen hohlen Worthülsensprüchen an, die nichts mit der Sache zu tun haben und besitzt dann auch noch die Unverschämtheit, mir zu unterstellen, ich würde mich nicht zu technischen Fragen äußern?

                                            Grüße aus Syburg bei Dortmund

                                            Tom vom Berg

                                            --
                                            Nur selber lernen macht schlau
                                            http://bergpost.annerschbarrich.de

                                            1. Hai Tom,

                                              Na, wer wird denn hier gleich so aggressiv?

                                              ..und auch ein qualitativ gutes Posting wartet immernoch auf deine detaillierte Antwort:

                                              Was hast Du damit zu tun? Bisher hast Du nichts zum Thema beigetragen.

                                              Zum einen lese ich mit, und zum anderen moechte ich dir dein widerspruechliches Verhalten vor Augen fuehren.
                                              Und zwar, dass du das von mir kritisierte Verhalten bemaengelst, jedoch im gleichen Zug eben genau dieses Verhalten an den Tag legst.

                                              Du bist es, der hier als anonymer Stänkerer auftritt. Du bist zu feige, Dich zu offenbaren [..]

                                              Ich staenkere doch gar nicht. Ich habe mich nur gegen deine Mobbing-Vorwuerfe zur Wehr gesetzt und allgemeine Kritik geuebt. In einem Land der Redefreiheit ist das vollkommen legitim.
                                              Und zum Thema Anonymitaet: Ich weiss nicht was du meinst. Namen sind Namen. Ob es jetzt mein Haus- oder Nickname ist. Was braechte es dir, wuesstest du, dass ich Christian Friedrich heisse und naehe der Boddinstrasse in Neukoelln wohne?

                                              , greifst ständig Poster mit irgendwelchen hohlen Worthülsensprüchen an, die nichts mit der Sache zu tun haben

                                              Na, jetzt kloppst du aber drauf los. Ein bisschen sachlicher wenn ich bitten darf.
                                              Zum einen greife ich nicht staendig Poster an. Das einzige Mal - wenn Du es so auffassen moechtetest (es ist ja dein Recht) - geschieht es in diesem Thread. Und zum anderen nicht "irgendwelche Poster", sondern einzig und allein dich. Und es handelt sich auch nicht um "hohle Worthülsensprüche", sondern um Kritik nebst technischen Fragen. Und Kontextlosigkeit kannst du mir auch nicht vorwerfen, da ich mich ja auf den aktuellen, sowie weitere, von mir explizit genannte, Threads beziehe.

                                              und besitzt dann auch noch die Unverschämtheit, mir zu unterstellen, ich würde mich nicht zu
                                              technischen Fragen äußern?

                                              Aber Tom, genau das tust du ja auch nicht. Weder auf die technischen Fragen, die ich dir gestellt habe,
                                              aeusserst du dich. Noch auf die beiden offen stehenden Postings. Folglich ist das nicht "Unverschaemtheit", sondern einfach nur die Warhheit.

                                              MfG,
                                              Sympatisant

                                              -- "If the future isn't bright, at least it is colorful"
                      2. Hoi!

                        Eine ausführlicher Antwort kommt noch.

                        Nachdem nun zwei Wochen vergangen sind: Wann denn ungefähr?
                        *Duckundweg* ;-)

                        Grüße

                        1. Hello,

                          Eine ausführliche Antwort kommt noch.

                          Nachdem nun zwei Wochen vergangen sind: Wann denn ungefähr?
                          *Duckundweg* ;-)

                          Na, das wird hoffentlich nicht solange dauern, wie die Erfindung dieser Techniken seit Plankalkül ...
                          Ich rechne damit, es in einem 1000stel der Zeit durchfliegen zu können und meine Eindrücke zu sammeln.
                          Dann werde ich anschließend noch vier bis fünf Tage benötigen, es in Worte zu fassen.

                          Liebe Grüße aus Syburg bei Dortmund

                          Tom vom Berg

                          --
                          Nur selber lernen macht schlau
                          http://bergpost.annerschbarrich.de

                          1. Moin!

                            Na, das wird hoffentlich nicht solange dauern, wie die Erfindung dieser Techniken seit Plankalkül ...
                            Ich rechne damit, es in einem 1000stel der Zeit durchfliegen zu können und meine Eindrücke zu sammeln.
                            Dann werde ich anschließend noch vier bis fünf Tage benötigen, es in Worte zu fassen.

                            Nicht, dass der Thread bis dahin aus dem Forum fliegt... :)

                             - Sven Rautenberg

                            -- "Love your nation - respect the others."
                            1. Hello,

                              Nicht, dass der Thread bis dahin aus dem Forum fliegt... :)

                              *grins*

                              Ihr werdet schon dafür sorgen, dass das nicht passiert.

                              Ist aber auch gar nicht so leicht, etwas empirisch vollzogen zu begründen, während man sich nebenbei in drei Sprachen (PHP, Java, C++) in die aktuelle Situation der OOP einarbeitet.
                              Da wird man leicht betriebsblind für das, was man eigentlich sagen wollte.

                              Ich kann bisher schon soviel dazu sagen:

                              Die Grundidee, intensive dynamische Speicherverwaltung und die Verkettung/Verknüpfung von Objekten durch eine Programmierumgebung zu unterstützten, halte ich für wertvoll. Schon immer!

                              Solange die daraus entstehenden Konstrukte den Programmierer nicht daran hindern, Fähigkeiten des OS, auf dem eine Applikation überwiegend laufen soll, zu nutzen, halte ich sie auch für sinnvoll. Die suggerierte vollkommene Abkoppelung vom verwendeten OS landet z.B. bei Java.

                              Werden aber Fähigkeiten des OS durch die Sprache und die darin ausgeformte ooS (Syntax) unterdrückt, werden die sogenannten Vorteile der OOP nach und nach ad Absurdum geführt. Programme werden immer langsamer.

                              Ich denke, dass mein nächster "Untersuchungsbereich" z.B. die Überladung von Operatoren sein könnte. Der Weg ist also noch lang. Nicht jede "objektoriente Sprache" unterstützt dies und der Nutzen ist daher zu hinterfragen. Sind der entstehende Aufwand und die Verwirrung immer größer als der Nutzen? Gäbe es andere, bessere Lösungsansätze?

                              Vieleicht basieren ja auch viele Einschränkungen und  Absurditäten nur auf der "Muttersprache C" und die Verwendung einer anderen Muttersprache als Träger würde alles einfacher machen?

                              Ich werde also auch meine (alten) Compiler für andere Sprachen reaktivieren müssen. Ob ich das hier am Ort kann, weiß ich nicht. Ich habe nur zwei Maschinen und nicht genügend Festplatten dabei. Ein Risiko eingehen, mir mein Hauptarbeitsgerät zu plätten, kann und will ich nicht.

                                (8GB IDE-Platten reichen schon vollkommen, Spenden sind also willkommen)

                              Außerdem steht mir sicher auch noch die Schiene Pascal -> Turbo-Pascal -> Delphi -> ??? bevor, um eine qualifizierte Aussage treffen zu können?
                              Was gibt es außerdem noch an gängigen Sprachen, die NICHT auf C basieren, sondern auf anderen Wegen entstanden sind?

                              Liebe Grüße aus Syburg bei Dortmund

                              Tom vom Berg

                              --
                              Nur selber lernen macht schlau
                              http://bergpost.annerschbarrich.de

                              1. Hallo,

                                Was gibt es außerdem noch an gängigen Sprachen, die NICHT auf C basieren, sondern auf anderen Wegen entstanden sind?

                                Wie wäre es mit

                                 Ada, BASIC, FORTRAN, LISP, Smalltalk?

                                Freundliche Grüße

                                Vinzenz

                                1. Hello,

                                  Was gibt es außerdem noch an gängigen Sprachen, die NICHT auf C basieren, sondern auf anderen Wegen entstanden sind?

                                  Wie wäre es mit

                                  Ada, BASIC, FORTRAN, LISP, Smalltalk?

                                  Mmmh, dass OOP unter Smalltalk quasi erfunden worden ist, habe ich schon mal irgendwo gehört.
                                  Kann mich natürlich auch irren.

                                  Unter Basic ist es zu Visual Basic geworden mit einer Art von OOP.

                                  Wenn ich das richtig in Erinnerung habe, dürfte vermutlich unter Ada noch am ehesten mein Wunsch  nach enger Hardwareunterstützung in Erfüllung gehen. Jedenfalls ist mir die Sprache schon oft im Zusammenhang mit Systemprogrammierung und Echtzeitsystemen über den Weg gelaufen.

                                  Wie sieht es da mit Lisp aus? Das kenne ich eigentlich nur als Begriff in Zusammenhang mit Auto-CAD. Ist das dasselbe oder handelt es sich um ein andere Lisp?

                                  Beherrscht hier jemand alle diese Sprachen und kann deren Brauchbarkeit daher gut vergleichen?
                                  Vielleicht Du, Vinzenz?

                                  Vielleicht wäre es dann auch sinnvoll, die unterschiedlichen Lösungswege für die OOP in den unterschiedlichen Sprachen zu vergleichen und über die dadurch ermittelbaren Unsicherheiten/Unterschiede die Schwachstellen zu identifizieren?

                                  Aber heute habe ich keine Zeit mehr, mir darüber Gedanken zu machen. :-(

                                  Hauptsache, dass das hier nicht noch zum Stack Overflow führt. Wäre doch schade.

                                  Liebe Grüße aus Syburg bei Dortmund

                                  Tom vom Berg

                                  --
                                  Nur selber lernen macht schlau
                                  http://bergpost.annerschbarrich.de

                                  1. Wie sieht es da mit Lisp aus? Das kenne ich eigentlich nur als Begriff in Zusammenhang mit Auto-CAD. Ist das dasselbe oder handelt es sich um ein andere Lisp?

                                    Es gibt eine ganze Reihe von Sprachen, die unter "Lisp" zusammengefasst werden. An den Universitäten wird oft Scheme vermittelt (ein Lisp-Dialekt), produktiv im Einsatz ist wohl eher sowas wie Common Lisp.
                                    Common Lisp ist die ausdrucksstärkste Sprache, die ich je gesehen habe, solltest du dir mal anschauen. Hat übrigens auch ein interessantes OO-System (CLOS).

                                    Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|

                                    -- Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
                                    1. Hello,

                                      Common Lisp ist die ausdrucksstärkste Sprache, die ich je gesehen habe, solltest du dir mal anschauen. Hat übrigens auch ein interessantes OO-System (CLOS).

                                      Jau, kommt auf meinen Zettel. Der ist allerdings im Moment noch ziemlich voll.
                                      [Ich müsste auch langsam mal wieder das Geldverdienen vorbereiten...]

                                      Das ist doch schon wieder Psychoterror ;-))

                                      Liebe Grüße aus Syburg bei Dortmund

                                      Tom vom Berg

                                      --
                                      Nur selber lernen macht schlau
                                      http://bergpost.annerschbarrich.de

                                  2. Hoi.

                                    Hauptsache, dass das hier nicht noch zum Stack Overflow führt. Wäre doch schade.

                                    Ausgehend hiervon ist der bei mir bereits eingetreten:

                                    Vorab nur diese Stellungnahme: [...]

                                    Du bist darin aber leider gar nicht auf mein zentrales Argument eingegangen, dass die Optimierungen, an denen Du so klebst, für die meiste Software vollkommen irrelevant sind.

                                    Viele Grüße,
                                    Christian

                                    Grüße

                              2. Hello,

                                Nicht, dass der Thread bis dahin aus dem Forum fliegt... :)

                                *grins*

                                Ihr werdet schon dafür sorgen, dass das nicht passiert.

                                *puh*, ganz schön anstrengend dies alles. Hat sich doch ziemlich ausgeweitet. Ich schufte täglich, um alles in die Birne reinzukriegen und sammele stetig meine Beobachtungen.

                                Leider muss ich sagen, dass die Pluspunkte von OOP immer wieder erheblich durch Definitionslücken gestört werden, die sich innerhalb des OOP-Rahmens nicht schließen lassen. Man müsste dazu ausbrechen und gerade das ist eben negativ.

                                Es ist einfach oft schlampig entwicklet worden oder "extreme". Ich will zwar nicht behaupten, dass ich das auch gekonnt hätte - da muss ich schon die Achtung vor den Erfindern wahren - aber die Fachleute hätten es meistens besser machen können.

                                Vielleicht treffe ich trotzdem noch auf eine OOP-Sprache nebst APIs und LIBs, die aufbauend auf irgendeiner Architektur einfach das beste herausholt und auch zeigt, dass sie das für alle Plattformen, für die es sie gibt, gleichermaßen tut, ohne zu sagen "das geht mich nichts an, das müssen die Andren liefern"

                                http://99-bottles-of-beer.net/

                                Liebe Grüße aus Syburg bei Dortmund

                                Tom vom Berg

                                --
                                Nur selber lernen macht schlau
                                http://bergpost.annerschbarrich.de

                                1. Hai Tom,

                                  ..das war jetzt mal wieder so eine allgemeine Antwort, ohne ins Detail zu
                                  gehen. Von daher ein paar weiterfuehrende Fragen meinerseits.

                                  Leider muss ich sagen, dass die Pluspunkte von OOP immer wieder
                                  erheblich durch Definitionslücken gestört werden,

                                  Was verstehst Du unter Definitionsluecken?
                                  Der Grundsatz von OOP ist ja eben, dass _alles_ wohldefiniert ist und
                                  bereits auf Compilerebene darauf geachtet wird.

                                  die sich innerhalb des OOP-Rahmens nicht schließen lassen. Man
                                  müsste dazu ausbrechen und gerade das ist eben negativ.

                                  Um es uns verstaendlicher zu machen, wovon Du redest, nennen uns doch
                                  solch einen Fall.

                                  Es ist einfach oft schlampig entwicklet worden oder "extreme".

                                  Schlampig? Was ist fuer dich schlampig entwickelt worden?
                                  Extrem? Was verstehst Du darunter?

                                  Ich will zwar nicht behaupten, dass ich das auch gekonnt hätte - da muss
                                  ich schon die Achtung vor den Erfindern wahren - aber die Fachleute
                                  hätten es meistens besser machen können.

                                  Exakter, was stoert dich und was haette man deiner Meinung nach besser
                                  machen koennen?

                                  Vielleicht treffe ich trotzdem noch auf eine OOP-Sprache nebst APIs und
                                  LIBs, die aufbauend auf irgendeiner Architektur einfach das beste
                                  herausholt

                                  Java? C#? etc..

                                  und auch zeigt, dass sie das für alle Plattformen, für die es
                                  sie gibt, gleichermaßen tut, ohne zu sagen "das geht mich nichts an, das
                                  müssen die Andren liefern"

                                  Stichwort Schichtenarchitektur. Eine Sprache bedient in vielen Faellen
                                  lediglich die Funktionen eines Betriebssystems (API). Von diesem haengt
                                  es oft ab, was moeglich ist und was nicht. Es ist zum Beispiel muessig
                                  darueber zu steiten, warum zB Java 6 keine grundlegende Systemtray-
                                  Unterstuetzung fuer KDE bereit stellt(*).

                                  MfG,
                                  Sympatisant

                                  * obwohl es sich hierbei eher um ein zwiespaeltiges Problem handelt.

                                  -- "If the future isn't bright, at least it is colorful"
                                  1. Hello,

                                    Es ist einfach oft schlampig entwicklet worden oder "extreme".

                                    Schlampig? Was ist fuer dich schlampig entwickelt worden?

                                    Sogar Bjarne Stroutroup würde heute vieles anders machen, wenn er nochmal eine OOP ersinnen würde. Dü könnte, müsste aber noch nicht einmal Elemente von C haben. Sie würde existente Hardware besser unterstützen und vor allem nutzen _innerhalb_ des objektorientierten Rahmens, ohne sich dabei an bestimmte Hardware zu binden.

                                    Einfaches Beispiel: Überlauf abfragen

                                    Extrem? Was verstehst Du darunter?

                                    http://de.wikipedia.org/wiki/Extreme_Programming

                                    Führt in der Praxis gerne zu Fehlstellen bei der Umsetung von Ziele-Deklaration in  Software-Definition.

                                    Liebe Grüße aus Syburg bei Dortmund

                                    Tom vom Berg

                                    --
                                    Nur selber lernen macht schlau
                                    http://bergpost.annerschbarrich.de

                                    1. Moin!

                                      Extrem? Was verstehst Du darunter?

                                      http://de.wikipedia.org/wiki/Extreme_Programming

                                      Führt in der Praxis gerne zu Fehlstellen bei der Umsetung von Ziele-Deklaration in  Software-Definition.

                                      Wieviele Jahre XP-Programmiererfahrung hast du, um zu so einer Aussage zu kommen? Oder zitierst du hier nur irgendwen?

                                       - Sven Rautenberg

                                      -- "Love your nation - respect the others."
                                      1. Hello,

                                        Wieviele Jahre XP-Programmiererfahrung hast du, um zu so einer Aussage zu kommen? Oder zitierst du hier nur irgendwen?

                                        Das hört sich fast so an, wie

                                        "wie kommst Du darauf, einfach eine neue Idee zu haben? Du bist doch erst Fünfzig und daher noch nicht einaml halb so tot wie wir."

                                        *grins*

                                        Es ist interessant für mich festzustellen, dass meine inhaltichen Bedenken hier hauptsächlich durch teschnische Tricks ad Absurdum geführt werden sollen, statt dass man mal über das Pro und Contra diskutiert.

                                        Liebe Grüße aus Syburg bei Dortmund

                                        Tom vom Berg

                                        --
                                        Nur selber lernen macht schlau
                                        http://bergpost.annerschbarrich.de

                                        1. Hai,

                                          von meiner Seite mal ein ernst gemeinter Ratschlag:
                                          Lass' es einfach, Tom, Ehrlich!

                                          Schau dir die gefuehrte Diskussion in diesem Thread an und mach
                                          dir mal ein tatsaechliches Bild von dem, was hier abgelaufen ist.
                                          Ich traue dir durchaus zu, dass auch du es verstehen wirst..
                                          oder ueberschaetze ich dich gar?

                                          MfG,
                                          Sympatisant

                                          -- "If the future isn't bright, at least it is colorful"
                                          1. Hello Sympatisant,

                                            ich wollte mich mal so langsam über den Background der Leute informieren, die ich bezüglich dieses Threads noch nicht kenne. Es ist doch besser, man stellt sich ein wenig auf deren Sprache und Intellekt ein, wenn man seine Gedanken darlegen will.

                                            Die meisten sind ja, bei aller äußerlichen Härte, eigentlich nur an einer vernünftigen Diskussion zum Thema interessiert, auch wenn nachher doch nur das Rad neu erfunden wird ;-)

                                            Mit Dir, lieber Sympatisant, habe ich aber so meine Probleme. Ich konnte im gesamten Forum und auch im Archiv keine drei Postings von Dir finden, in denen Du irgendeinem Frageteller einen fachlichen Rat gibst. So kann ich denn überhaupt nicht einschätzen, wo ich Dich überhaupt abholen muss. Welche Erfahrungen hast Du denn in der (Informations-)Technik bisher überhaupt gesammelt? Erzähl doch bitte einfach mal 'was über Dich. Muss jan nicht viel sein, aber doch soviel, dass ich mir vorstellen kann, was überhaupt Dein Interessensgebiet ist.

                                            Liebe Grüße aus Syburg bei Dortmund

                                            Tom vom Berg

                                            --
                                            Nur selber lernen macht schlau
                                            http://bergpost.annerschbarrich.de

                                            1. Warum willst du irgendwas über ihn wissen? Was bringt das? Beantworte seine Beiträge doch lieber nach fachlichem Inhalt, wenn du meinst, dass sie keinen haben, dann schreibe eben das oder ignoriere sie.
                                              Ich für meinen Teil versuche in den allermeisten Fällen zu ignorieren, wer einen Beitrag geschrieben hat.

                                              Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|

                                              -- Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
                                    2. Hai Tom,

                                      nun redest Du uber XP-Programmierung und Overflows, zitierst dabei noch beliebige Aussagen Fremder und fuehrst das ganze dann auch noch als Argumentation auf mein Posting auf, ohne dabei auch nur annaehernd auf die dort gestellten Fragen einzugehen.

                                      Hier noch einmal das, was ich dich gefragt habe:
                                      - Was genau ist aus deiner Sicht an OOP schlampig implementiert?
                                      - Wo werden "die Pluspunkte von OOP immer wieder erheblich durch Definitionslücken gestört" ?
                                      - Fuer was muesste man "aus dem OOP-Rahmen ausbrechen"?

                                      Und die Aussage, dass Bjarne Stroustrup mitterweile einiges anders machen wuerde, oder die Erwaehnung von Overflows, sind nun mal wirklich keine Antworten auf die Fragen.

                                      Und hier noch mal all die unbeantworteten Fragen aus den vergangenen Postings:
                                      - Was genau hat dich an .NET gestoert?
                                      - Wo wurden die wesentlichen Fähigkeiten von .NET vergessen
                                      - Tema: OOP -> Schleifenkonstruktionen
                                      - Unterschied ASP <-> .NET
                                      - Was hat dir an C# nicht gefallen
                                      - Thema: Lambda Expressions, Extension-Methods, LINQ etc

                                      Ehrlich gesagt schwindet so langsam meine Lust. Es ist irgendwie immer das Gleiche: Du bemaengelst oder behauptest etwas; und wenn man dich naeher dazu fragt, kommen keine Antworten mehr oder irgendwelche nichts mit dem Thema zu tun habende Aussagen.

                                      Beantworte doch einfach mal die Fragen, die dir gestellt werden. That's it!
                                      Oder unterlasse deine Aussagen zu Themen, von denen du keine Ahnung hast (wie es eigentlich jeder hier macht).

                                      Erinnerst Du dich noch daran, dass du mir "Worthülsensprüchen, die nichts mit der Sache zu tun haben" vorgeworfen hast? Schau den dir aktuellen Thread doch mal an! Seit etlichen Postings geht es eigentlich nur darum, dass du dich vor den eigentlichen Antworten drueckst. Und wie ich den weiteren Postings anderer entnehme, habe nicht nur ich dieses Bild.

                                      MfG,
                                      Sympatisant

                                      -- "If the future isn't bright, at least it is colorful"
                                      1. Hai Tom,

                                        nun gut, jetzt sind wieder drei Tage verstrichen, in denen du nicht Antwort gestanden hast. Da du gegenwaertig jedoch wieder im Forum aktiv bist, bedeutet das, dass du einfach nicht faehig bist, die Fragen zu beantworten. Wenn schon nicht dies, dann haettest du zumindest eine abschliessende Erkenntnis auf Christians Posting abgeben koennen. Doch auch hierzu konntest Du dich nicht ueberwinden.

                                        Wie auch immer, fuer mich hat sich die Sache somit erledigt, und ich moechte das ganze dann mit deinen Worten abschliessen:

                                        Schade, dass Du dich nicht wie ein fairer Disputant [..] verhältst.

                                        MfG,
                                        Sympatisant

                                        -- "If the future isn't bright, at least it is colorful"
                                2. Hallo Tom,

                                  Vielleicht treffe ich trotzdem noch auf eine OOP-Sprache nebst APIs und LIBs, die aufbauend auf irgendeiner Architektur einfach das beste herausholt und auch zeigt, dass sie das für alle Plattformen, für die es sie gibt, gleichermaßen tut, ohne zu sagen "das geht mich nichts an, das müssen die Andren liefern"

                                  warum sollte eine Programmiersprache unbedingt alles können wollen. Warum sollte sie eine eierlegende Wollmilchsau sein?

                                  http://99-bottles-of-beer.net/

                                  Was willst Du damit sagen? Du hast ja sicher im Wikipediaartikel zu Ada gelesen, dass sich nach der Einführung von Ada 1983 die Anzahl der im Verantwortungsbereich des US-Verteidigungsministeriums verwendeten Programmiersprachen von über 450 auf 37 im Jahre 1996 verringert habe.

                                  Und was, bitte schön, hat dies mit Deiner uns am 26.08. versprochenen ausführlichen Antwort auf Christians Beitrag (nicht auf irgendwelche inzwischen aufgemachte Nebenschauplätze) zu tun?

                                  Aufgebende Grüße

                                  Vinzenz

                                  1. Hello,

                                    Und was, bitte schön, hat dies mit Deiner uns am 26.08. versprochenen ausführlichen Antwort auf Christians Beitrag (nicht auf irgendwelche inzwischen aufgemachte Nebenschauplätze) zu tun?

                                    Mein Rechtsanwalt hat Pause. Was also nun als "Gegenhaltung" und was als "Mitwirkung" zu werten sein wird, interessiert mich nicht. Mich interessiert alleine der Gedanke, dass OPP nicht perfekt ist, und oft missbraucht wird, bzw. eingesetzt wird, wo es nicht notwendig ist.

                                    OOP hat aber Vorteile gegenüber klassischer Programmierung, leider aber nicht immer!

                                    Diese gar nicht so seltenden Unterscheidungsfälle zu finden und offenzulegen, ist mein Bestreben.

                                    Es macht mir keinen Spaß, mich mit Fanatikern "pro OOP" zu zanken.

                                    Liebe Grüße aus Syburg bei Dortmund

                                    Tom vom Berg

                                    --
                                    Nur selber lernen macht schlau
                                    http://bergpost.annerschbarrich.de

                                    1. Es macht mir keinen Spaß, mich mit Fanatikern "pro OOP" zu zanken.

                                      Hahahaha! Ein besseres Fazit hättest Du wirklich nicht liefern können, ich habe das gleich mal für die Zitatesammlung vorgechlagen. :-)

                                    2. Ein Unseliger,der nur kreist um sich selbst,
                                      Im Leben noch wird er dem Rufe nachsehen
                                      Und doppelt sterbend untergehen,
                                      In gemeinem Staub,von wo er entsprungen-
                                      Ungeehrt,unbeweint und unbesungen.
                                      (Und täglich grüßt das Murmeltier)

                                      Grüße

                                    3. Hallo Tom,

                                      Und was, bitte schön, hat dies mit Deiner uns am 26.08. versprochenen ausführlichen Antwort auf Christians Beitrag (nicht auf irgendwelche inzwischen aufgemachte Nebenschauplätze) zu tun?

                                      Mein Rechtsanwalt hat Pause.

                                      mich interessieren Deine Ausführungen, nicht die Deines Rechtsanwaltes.

                                      Es macht mir keinen Spaß, mich mit Fanatikern "pro OOP" zu zanken.

                                      Weder bin ich Fanatiker "pro OOP" noch möchte ich zanken. Ich warte nur auf Deine Ausführungen.

                                      Sehr geduldige Grüße

                                      Vinzenz

                                      1. Moin!

                                        Es macht mir keinen Spaß, mich mit Fanatikern "pro OOP" zu zanken.

                                        Weder bin ich Fanatiker "pro OOP" noch möchte ich zanken. Ich warte nur auf Deine Ausführungen.

                                        Ich glaube nicht, dass da noch was kommt.

                                         - Sven Rautenberg

                                        -- "Love your nation - respect the others."
                                        1. Hellihello

                                          Es macht mir keinen Spaß, mich mit Fanatikern "pro OOP" zu zanken.

                                          Weder bin ich Fanatiker "pro OOP" noch möchte ich zanken. Ich warte nur auf Deine Ausführungen.

                                          Ich glaube nicht, dass da noch was kommt.

                                          Habe ich denn richtig verstanden, dass es im Grunde darum geht, dass OOP teilweise unperformant ist oder eben verschwenderisch mit Speicherressourcen umgeht oder, um es neutraler zu formulieren, man einiges speicherverbrauchsärmer ohne OOP programmieren könnte? Was im Detail hättest Du, Vinzenz, denn erwartet, was in der Antwort von Tom hätte thematisch vorkommen können - mal abgesehen von diesem ja nicht forenuntypischen Psychoverstrickungen.

                                          Dank und Gruß,

                                          frankx

                                          -- tryin to multitain  - Globus = Planet != Welt
                                          1. Hallo,

                                            Weder bin ich Fanatiker "pro OOP" noch möchte ich zanken. Ich warte nur auf Deine Ausführungen.

                                            Habe ich denn richtig verstanden, dass es im Grunde darum geht, dass OOP teilweise unperformant ist oder eben verschwenderisch mit Speicherressourcen umgeht oder, um es neutraler zu formulieren, man einiges speicherverbrauchsärmer ohne OOP programmieren könnte?

                                            da wäre ich der Ansicht, Du hättest das nicht richtig verstanden :-)

                                            Was im Detail hättest Du, Vinzenz, denn erwartet, was in der Antwort von Tom hätte thematisch vorkommen können

                                            Ich warte(te) nur auf Toms Ausführungen - und habe mir keine Gedanken gemacht, was Tom vielleicht bringen könnte. Wozu auch?

                                            Ich kombiniere Dir statt dessen gern zwei aktuelle Threads, auf die Christians Ausführungen wunderbar passen:

                                                ?t=177830&m=1171823
                                                ?t=177894&m=1172273

                                            Einer davon sollte Dir bekannt vorkommen :-)
                                            Zusammen ergibt sich in etwa das von Christian angeführte Beispiel für aufwendige Mikrooptimierung, die auf lange Sicht vom intelligenteren Ansatz geschlagen wird.

                                            Ach ja, Christians Ausführungen sind sprach- und implementierungsunabhängig. Sie beschränken sich noch nicht einmal auf OOP, siehe Christians ersten Satz. Irgendwelche speziellen konkreten Mängel in bestimmten der vielen existierenden Programmiersprachen (99 bottles of beer) halte ich für irrelevant.

                                            Freundliche Grüße

                                            Vinzenz

                                          2. Moin!

                                            Habe ich denn richtig verstanden, dass es im Grunde darum geht, dass OOP teilweise unperformant ist oder eben verschwenderisch mit Speicherressourcen umgeht oder, um es neutraler zu formulieren, man einiges speicherverbrauchsärmer ohne OOP programmieren könnte?

                                            Es ist doch die Frage, welche Vorteile man sich durch welche Nachteile erkauft.

                                            Gemessen an den heute verbreiteten Computermaschinen mit rasend schneller CPU und megamäßig viel Speicher ist ein eventueller Mehrverbrauch an CPU und RAM, den man sich als Nachteil erkauft, offenbar nicht so schwerwiegend wie der Vorteil, den die OOP an Abstraktion für die Lösung komplexer Probleme bietet.

                                            Toms bisherige Erklärungen in diesem Thread lassen vermuten, dass ihm die Bedeutung dieser OOP-Abstraktionsebene nicht so klar zu sein scheint, oder er ihren Wert deutlich niedriger ansetzt, als die deshalb aufzuwendenden Ressourcen.

                                            Das Warum hat er jedoch bis jetzt nicht beleuchtet.

                                             - Sven Rautenberg

                                            -- "Love your nation - respect the others."
                                            1. Hallo.

                                              Gemessen an den heute verbreiteten Computermaschinen mit rasend schneller CPU und megamäßig viel Speicher ist ein eventueller Mehrverbrauch an CPU und RAM, den man sich als Nachteil erkauft, offenbar nicht so schwerwiegend wie der Vorteil, den die OOP an Abstraktion für die Lösung komplexer Probleme bietet.

                                              Das Eine schließt das Andere auch nicht aus, denn neben den heute verbreiteten Computermaschinen gibt es ja auch noch die sich heute verbreitenden Computermaschinchen.
                                              MfG, at

                                        2. Hai,

                                          Ich glaube nicht, dass da noch was kommt.

                                          Ganz im Gegenteil! Er legt ja jetzt erst richtig los.
                                          ?t=177719&m=1170976

                                          MfG,
                                          Sympatisant

                                          -- "If the future isn't bright, at least it is colorful"
                            2. Hallo,

                              Nicht, dass der Thread bis dahin aus dem Forum fliegt... :)

                              *pump*

                              Tim

                    3. Mahlzeit.

                      Auch wenn es einer sinnfreien Verschwendungen von Bytes gleichkommt, es liegt mir auf dem Herzen:

                      WOW! Großartiger Beitrag von Dir, Christian. Ganz großes Kino!

                      Danke dafür und Beste Grüße
                      Dirk

        2. Hallo Frank,

          Die Iteratoren, als Kern der "spl", sollen ja wohl sowas wie einen standardisierten Zugriff auf eine Datenstruktur haben, unabhängig von ihrer Quelle, oder? Keine "while(get_next_line/result())" mehr, sondern nur "foreach".

          Ja. Ich finde das auch nicht sonderlich schlimm, ein immer wieder verwendetes Muster des Zugriffs zu vereinheitlichen und (wie bei PHP, Python, Ruby *) dafür syntaktischen Zucker anzubieten, um dieses mehr in die Sprache einzubinden. Je weniger jedes Objekt, das auch nur irgendeine Sammlung oder gar einen nicht endenden Strom von Daten darstellt, seine eigene Zugriffsmethoden definieren muss, desto weniger Sonderfälle muss man sich merken.

          * Dort gibt's das ja auch, in Python z.B. im Statement:

            

          for thingy in collectObj:       tuWas()

          ... in Ruby als Methode, der eine Lambda-Funktion übergeben wird:

          collectObj.each do |thingy|       tuewas thingy   end

          In Java wurde das über Methoden vereinheitlicht, C# 3.0 macht derzeit ganz interessantes und erweitertes Zeug mit LINQ. So etwas findet sich in vielen Sprachen, da musst Du keine vermutete Reaktion auf RoR konstruieren. ;)

          Tim

          1. Hellihello Tim,

            Ja. Ich finde das auch nicht sonderlich schlimm, ein immer wieder verwendetes Muster des Zugriffs zu vereinheitlichen und (wie bei PHP, Python, Ruby *) dafür syntaktischen Zucker anzubieten, um dieses mehr in die Sprache einzubinden. Je weniger jedes Objekt, das auch nur irgendeine Sammlung oder gar einen nicht endenden Strom von Daten darstellt, seine eigene Zugriffsmethoden definieren muss, desto weniger Sonderfälle muss man sich merken.

            Fein, dass Du das sagst. Nun dachte ich, es würde nicht nur einen DirectoryIterator und SimpleXMLIterator sondern bestimmt auch einen MySQLResultIterator, fand ich aber nicht, fand nur http://www.santosj.name/programming/php-related/patterns-for-php-iterator/, was ich etwas angepasst habe, weil is_result() nicht auf meine mysqli-resources anzuspringen scheint, und die Anfragen in mysql statt mysqli formuliert warten. Bei beiden Implementierungen bekommt ich aber beim Foreachen als ersten Wert ein bool(true) und erst dann die assoziativen Arrays mit den DB-Eingträgen. Woher aber kommt das "true"?

            // 080826 - quelle: http://www.santosj.name/programming/php-related/patterns-for-php-iterator/ // class Robs_MysqlIterator implements Iterator {     protected $row = null;     protected $query = null;     public function __construct($resource)     {          $this->query = $resource;     }     public function key() { } // Not Implemented     public function current()     {         if($this->row != null) {             return $this->row;         }     }     public function next()     {         $this->row = mysqli_fetch_assoc($this->query);         return $this->row;     }     public function rewind()     {         $this->row = mysqli_data_seek($this->query, 0);         return $this->row;     }     public function valid()     {         if($this->row == false) {             return false;         }         return true;     } }

            Dank und Gruß,

            Robert aka

            frankx

            -- tryin to multitain  - Globus = Planet != Welt
            1. Hallo,

              Fein, dass Du das sagst. Nun dachte ich, es würde nicht nur einen DirectoryIterator und SimpleXMLIterator sondern bestimmt auch einen MySQLResultIterator, fand ich aber nicht,

              und einen

               - DB2ResultIterator
               - dBaseResultIterator
               - FirebirdResultIterator
               - InformixResultIterator
               - MSSQLResultIterator
               - MSAccessResultIterator
               - ODBCResultIterator
               - OracleResultIterator
               - PostgreSQLResultIterator
               - SQLiteResultIterator
                 ...

              die Liste ließe sich wunderbar fortsetzen.
              Warum sollte in einer Standard[!]bibliothek solch spezifischer Kram zu finden sein. Richtig, sowas sollte nicht zu finden sein, ist doch klar.

              Freundliche Grüße

              Vinzenz

              1. Hellihello

                • DB2ResultIterator
                • dBaseResultIterator
                • FirebirdResultIterator
                • InformixResultIterator
                • MSSQLResultIterator
                • MSAccessResultIterator
                • ODBCResultIterator
                • OracleResultIterator
                • PostgreSQLResultIterator
                • SQLiteResultIterator
                     ...

                die Liste ließe sich wunderbar fortsetzen.
                Warum sollte in einer Standard[!]bibliothek solch spezifischer Kram zu finden sein. Richtig, sowas sollte nicht zu finden sein, ist doch klar.

                Jetzt wo dus sagst. Ich hatte gedacht, die msqli_*-Funktionen wären vielleicht sehr häufig genutzt oder so, und deshalb sei das so wichtig wie Directory und XML. Na, wie man sich verdenken kann. Warum die beschriebene Iteratorimplementation als ersten Wert ein "true" ausgibt, weiß Du auch nicht, oder?

                Dank und Gruß,

                frankx

                -- tryin to multitain  - Globus = Planet != Welt
            2. Hellihello

                  public function rewind()     {         $this->row = mysqli_data_seek($this->query, 0);         return $this->row;     }

              offenbar wird die Funktion rewind() vor der ersten Iteration durch ein foreach ausgeführt. Dort aber wird $this->row das Ergebnis der der Funktion mysqli_data_seek zugewiesen. Diese hat den den result-pointer zurückgesetzt, gibt aber im Erfolgsfalle true zurück - was oben fälschlicherweise der Klassenvariable $row zugewiesen wird.

              Ich habe deshalb jetzt:

              class Robs_MysqlIterator implements Iterator {    protected $row = NULL;    protected $resource = NULL;  protected $key = 0;  private function __construct($resource)     {     $this->resource = $resource;     }   public function init($resource)   {   if (get_class($resource) === "mysqli_result") {    $instance = new Robs_MysqlIterator($resource);    return $instance;   } else {    return false;   }   }     public function key() {   return $this->key++;  }     public function current()     {         if($this->row != null) {             return $this->row;         }     }     public function next()     {         $this->row = mysqli_fetch_assoc($this->resource);         return $this->row;     }     public function rewind()     {         mysqli_data_seek($this->resource, 0);         $this->row = mysqli_fetch_assoc($this->resource);         return $this->row;     }     public function valid()     {         if($this->row == false) {             return false;         }         return true;     } }

              Für die public static function init suchte ich nach einem Pattern. Factory und Singleton sind es wohl nicht. Ich wollte die Überprüfung der resource (Parametervalidierung) nicht dem Konstruktor überlassen, was vielleicht auch Blödsinn ist. Immerhin konnte ich mit "new Klassenname" aber kein $this erzeugen, das war im var_dump dann NULL. Ob $instance = new Klassenname() hier besser zu machen geht?

              Dank und Gruß,

              frankx

              -- tryin to multitain  - Globus = Planet != Welt
    4. Hello,

      Ich habe zudem immer noch den Eindruck, dass OOP oft nur betrieben wird, weil sie "chique" ist, und "normale Menschen" sie nicht so leicht verstehen... Alle OOP-Konzepte, die ich bisher kennengelernt habe, sind auch nur Bastelkisten, Java vielleicht gerade mal ausgenommen.

      Wenn ich gewusst hätte, dass diese schon lange von mir als Unzulänglichkeit empfundene Entwicklung der Programmiesprachen so einen Wirbelsturm auslöst, der mich nun natürlich unter den Druck setzt, meine gesammelten Werke durchzuforsten und mich auf einen einigermaßen aktuellen Stand zu bringen in  gebräuchlichen OOP-Sorachen, dann hätte ich mir dass lieber verkniffen... :-)

      Aber nun bin ich auch noch auf http://99-bottles-of-beer.net/ aufmerksam gemacht worden.

      Da sind nun 1227 Programmiersprachen zur Begutachtung aufgetaucht. Ich bestell mir schon mal ein Bier für jede. Das gibts aber erst nach Durchsicht der Sprache. Hoffentlich werden die 62 Kisten nicht alle auf einmal geliefert.

      Liebe Grüße aus Syburg bei Dortmund

      Tom vom Berg

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de

  2. Hellihello

    Hellihello,

    ausgehend von diesen http://forum.de.selfhtml.org/archiv/2008/8/t175534/#m1154285@Hinweisen zur SPL bin ich auf einen [Artikel aus dem PHP architecture magazine von Jan 2005](http://ramikayyali.com/archives/2005/02/25/iterators) gestoßen. Darin unter anderem

    "The SPL extension didn’t get as much buzz as PHP5’s new XML and OOP features, but that didn’t stop it from making it to the final distribution ... .This collection of interfaces and classes ... currently focused on solving one problem—Iterators."

    Immerhin dachte ich, wenn man kapieren will, warum die _Standard_-Bibliothek nur aus Iteratoren besteht (und ein paar Funktionen wie register_autoload() - die aber nischt mit Iteration zu tun hat), könnte man damit ja mal rumexperimentieren. Eine verschachtelte Liste aus dem o.g. zu erstellen habe ich mal versucht, mit alternativerSyntax und HTML-Bausteinen, sowie mit DOMFunktionen. Vielleicht betreibt ja irgendwer sonst außer dedlfix - aber gerne auch wieder dedlfix himself (;-) - noch Recherche auf dem Gebiet und kann irgendwas sinniges dazu beisteuern.

    Es sind nicht nur Iteratoren. Der spl-funktionen sind es auch einige, aber zB. auch die "SplDoublyLinkedList", die eine "fundamentale Datenstruktur" innerhalb PHPs abbildet, welche offenbar Vorteile gegenüber Arrays besitzt (Speicher, Einfügen an bestimmter Position). Mag es sein, dass eine xml-Struktur gepaart mit Dom-Funktionen ebenfalls so eine DoublyLinkedList ist?  Hat jemandedlfix die schonmal benutzt?

    Dank und Gruß,

    frankx

    -- tryin to multitain  - Globus = Planet != Welt
    1. echo $begrüßung;

      Es sind nicht nur Iteratoren. Der spl-funktionen sind es auch einige, aber zB. auch die "SplDoublyLinkedList", die eine "fundamentale Datenstruktur" innerhalb PHPs abbildet, welche offenbar Vorteile gegenüber Arrays besitzt (Speicher, Einfügen an bestimmter Position).

      Ich bezeichne es eher neutral als Eigenschaften, denn ob irgendetwas Vorteil oder Nachteil ist, hängt von der konkreten Aufgabenstellung ab.

      Mag es sein, dass eine xml-Struktur gepaart mit Dom-Funktionen ebenfalls so eine DoublyLinkedList ist?

      Gewisse Ähnlichkeiten kann man erkennen. Vorgänger und Nachfolger haben beide, aber Kinder hat eine Linked List erstmal keine. Vielleicht werden auch Linked Lists für die Teile des DOM-Baums verwendet, wenn man nicht auf andere spezialisiertere Struktur aufsetzt (die ihrerseits wieder Linked Lists zur Speicherung verwenden kann).

      Hat jemandedlfix die schonmal benutzt?

      Ich nicht. Jedenfalls seit Turbo Pascal 4 nicht mehr. Damals hatte ich eine Anwendung, die mit einer Struktur von mehr als 64K Daten umgehen sollte und somit nicht mehr in ein Array ins Datensegment passte. Da hab ich dann auf dem Heap Speicher anfordern und mit irgendeiner Verlinkten Liste arbeiten müssen. Aber heutzutage reichen mir Arrays und verwandte Strukturen. Die kann man bei Bedarf sortieren lassen. Und wenn man eine Reihenfolge braucht, nimmt man ein Sortierkriterium hinzu. Das braucht man ja auch für eine Datenhaltung im DBMS, denn da liegt ja per se alles unsortiert.

      echo "$verabschiedung $name";

      1. Hellihello

        Ich nicht. Jedenfalls seit Turbo Pascal 4 nicht mehr.

        Aha. Ich hatte mir halt mal die SPL unter dem Kriterium Klasse-mit-den-meisten-Funktionen angeschaut, und da stechen halt der DirectoryIterator und die DoublyLinkedList hervor. Das korreliert dann aber scheints nicht zwangsläufig mit einem Brauchbarkeitskriterium. Ich dachte halt, wenn die Mädels und Jungs das schon in die spl aufnehmen und soviel Methoden einprogrammiern, wird es doch sicherlich an der ein oder anderen Stelle "dringend" benötigt oder ist es Programmiern immer wieder vorgekommen, dass das fehlt.

        Dank und Gruß,

        frankx

        -- tryin to multitain  - Globus = Planet != Welt
        1. echo $begrüßung;

          Ich hatte mir halt mal die SPL unter dem Kriterium Klasse-mit-den-meisten-Funktionen angeschaut, und da stechen halt der DirectoryIterator und die DoublyLinkedList hervor. Das korreliert dann aber scheints nicht zwangsläufig mit einem Brauchbarkeitskriterium. Ich dachte halt, wenn die Mädels und Jungs das schon in die spl aufnehmen und soviel Methoden einprogrammiern, wird es doch sicherlich an der ein oder anderen Stelle "dringend" benötigt oder ist es Programmiern immer wieder vorgekommen, dass das fehlt.

          Doppelt verlinkte Listen sind halt ein Klassiker der Programmierung. Und vielleicht gibt es Anwender, die in deren Nachbildung einen Vorteil gegenüber PHPs Arrays sehen. PHP schleppt noch ganz andere Dinge mit sich rum, die nicht (mehr) als "dringend benötigt" einzustufen sind.

          echo "$verabschiedung $name";

  3. Hello Christian,

    Ganz ehrlich: Ich fand das Posting witzig.

    Witzigkeit oder besser Gewitztheit ist doch fast das einzige, was das Leben bunt hält.

    Gut, natürlich macht er sich etwas über Dich lustig.

    Dass mir das nichts ausmacht, weißt Du doch.

    Aber Du gibst ihm auch allen Grund dazu.

    Ich hoffe, dass ich Gründe in Erin erung rufe, um über die Sachlage nachzudenken.

    Denn wie Du in den Wald hineinrufst, so schallt es auch heraus.

    Ich habe hoffentlich nicht in einen düsteren Wald, sondern in eine Menge von kritischen Menschen gerufen:

         Ich habe zudem immer noch den Eindruck,
         dass OOP oft nur betrieben wird, weil
         sie "chique" ist

    Nun bin ich selber neugierig, ob überhaupt 10% der Mitposter ein simples objektorientiertes Modell auf Prozessorebene (Assemblermodule) nachbilden könnten, und damit zu verstehen geben könnten, dass sie den notwendigen Zusammenhang zwischen Deklaration, Implemtentierung und Designunterstützung durch ein komplexes Hilfssystem verstanden haben.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de

    1. *seufz* Deine Reaktion zeigt, dass Du nicht verstanden hast, was ich Dir mitteilen wollte. Ich gehe auf Deine Art, wie Du Dich in Diskussionen verhälst ein, und Du schiebst dann genau das Verhalten hinterher, das ich kritisiert habe. Herzlichen Glückwunsch, Du hast Dich in meinen Augen soeben endgültig als auch nur ansatzweise ernst zu nehmenden Diskussionsteilnehmer disqualifiziert.

      1. Hai,

        Du hast Dich in meinen Augen soeben endgültig als auch nur ansatzweise
        ernst zu nehmenden Diskussionsteilnehmer disqualifiziert.

        So geht es mit an Sicherheit grenzender Wahrscheinlichkeit jedem hier.

        Mir liegt es ja fern, den Tom jetzt hier explizit zu diskreditieren, aber: jetzt mal Hand auf's Herz: Ist das nicht absolut heftig was er hier veranstaltet? Ich wuesste nicht, wann ich in meinem Leben schon mal einer solch dermaßen unreflektierten und diskussionsunfaehigen Person begegnet bin. Es ist echt zum verrueckt werden! Argh!

        Ihr koennt dieses Posting gerne loeschen, aber das musste ich einfach mal loswerden..

        MfG,
        Sympatisant

        -- "If the future isn't bright, at least it is colorful"