1unitedpower: Alternative zu eval() für arithmetische Berechnungen

Beitrag lesen

problematische Seite

Es bleibt trotzdem schlechter Stil, wenn die Methoden eines Objekts wissen, in welcher Variablen das Objekt gespeichert ist.

Ist es möglich, dass du die Vor- und Nachteile der statischen und dynamischen Lösung gerade miteinander vertauschst? Der Vorteil der statischen Variante ist ja gerade, dass man überhaupt keine zusätzlichen Annahmen über den Ausführungskontext treffen muss. Natürlich, die Methode muss in diesem Fall die Variable math kennen, aber das tut sie, weil sie in der selben lexikalischen Umgebung liegt. Die Funktion kennt math auf jeden Fall, ob man das nun nutzt oder nicht.

Bei der dynamischen Variante dagegen, hängt die Auswertung der Funktion von viel mehr Einflussfaktoren ab. Zunächst mal zählen auch alle statischen Gültigkeitsregeln dazu, denn die lassen sich nicht deaktivieren, die gelten so oder so. Aber im dynamischen Fall kommt da eben nochmal ein kompletter Laufzeitkontext oben drauf. Das heißt, der er oder die Entwickler(in) muss nun Kopfrechnen und verschiene Kontrollflüsse durchspielen. Ist das synchron oder asynchron? In welcher Reihenfolge werden diese Statements abgespielt? Welchen Werte kann diese oder jene Variable zur Laufzeit annehmen? Zusätzlich zu den statischen Eigenschaften muss man also eine ganze Menge dynamischer Eigenschaften prüfen.

Das klingt sehr theoretisch, aber es ist ein wahrer Augenöffner zu erfahren, welche Auswirkungen das auf das menschliche Gehirn hat: Der Mensch ist von Natur aus sehr begabt bei der Musterekennung, das hilft uns dabei gefährliche Tiere im Wald zu entdecken, essbare von giftigen Beeren zu unterscheiden oder eine Beute zu verfolgen. Aber genau diese Fähigkeit hilft uns auch beim gedanklichen Parsen von Quelltexten und dabei statische Programmeigenschaften in Rekord-Geschwindigkeit zu erfassen.

Wir sind aber von Natur aus unbegabt darin Alternativen gegeneinader abzuwägen. Ein Schachmeister kann vielleicht 8 bis 10 Züge mit allen Alternativen vorausdenken. und genau das ist die Fähigkeit, die wir bräuchten um dynamische Programmeigenschaften zu evaluieren. Wir sind also kognitiver viel stärker belastet, wenn wir Laufzeitkontexte berücksichtigen müssen.

Die Konsequenz daraus ist, dass wir uns die Bedeutung statischer Lösungen zu Programmierprobelmen schneller erschließen können als deren dynamische Pendants. Das zu verdeutlichen war Zweck meines Experiments.

0 52

Alternative zu eval() für arithmetische Berechnungen

Matthias Scharwies
  • javascript
  1. 0
    Gunnar Bittersmann
    1. 1
      Rolf b
      1. 1
        Felix Riesterer
        1. 1
          Gunnar Bittersmann
      2. 0
        Matthias Scharwies
        1. 2
          Rolf b
          • javascript
          • programmiertechnik
          1. 0
            Matthias Scharwies
            1. 0
              Rolf b
              1. 0
                Camping_RIDER
                • humor
                • menschelei
          2. 1
            1unitedpower
            1. 0
              Rolf b
              1. 0
                1unitedpower
                1. 0
                  Rolf b
                  1. 0
                    1unitedpower
        2. 0
          JürgenB
          1. 1
            Christian Kruse
            1. 0
              JürgenB
              1. 0
                Christian Kruse
  2. 0
    Tabellenkalk
    1. 0
      Gunnar Bittersmann
  3. 0
    pl
    1. 0
      Gunnar Bittersmann
    2. 0
      Rolf b
      1. 1
        pl
        • javascript
        • programmiertechnik
        1. 0
          TS
          1. -1
            pl
            1. 0
              TS
              1. 0
                Tabellenkalk
                1. 0
                  TS
              2. 0
                pl
                1. 0
                  TS
                  1. -2
                    pl
                    • javascript
                    • programmiertechnik
                    • zu diesem forum
                    1. 0
                      Gunnar Bittersmann
                      • zu diesem forum
  4. 1
    Matthias Apsel
    1. 0
      Matthias Scharwies
      1. 2
        JürgenB
      2. 0
        Rolf b
  5. 0
    TS
    • javascript
    • programmplanung
    1. 0

      Mathe-Quiz - Aufgabenstellung zusammengefasst

      Matthias Scharwies
      1. 0

        Mathe-Quiz - aufgabenstellung zusammengefasst

        Matthias Apsel
        1. 0
          dedlfix
          1. 0
            Matthias Apsel
          2. 0

            Mathe-Quiz - für welche Schüler?

            Matthias Scharwies
      2. 0

        Mathe-Quiz 0.3 (läuft)

        Matthias Scharwies
        1. 0
          TS
          1. 0
            Gunnar Bittersmann
            1. 0
              Tabellenkalk
              1. 0
                JürgenB
                1. 0
                  Gunnar Bittersmann
                2. 0
                  TS
        2. 0
          Tabellenkalk
          • javascript
          • programmplanung
          • rechnen