Zum Inhalt springen

Diskussion:Dynamische Bindung

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 29. Dezember 2007 um 16:49 Uhr durch 85.177.153.26 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Was hat denn dynamische Bindung mit Polymorphie zu tun? Das sind doch zwei Paar Stiefel: Dynamische Bindung beschreibt, wo eine Variable ihren Wert erhält, Polymorphie ist ein Typkonzept.

- Genau, es ist grob falsch


Sorry, Dynamische Bindung hat was mit Polymorphie zu tun. Ist ein wichtiger Aspekt darin.

  • Es tut mir leid. Informatik ist eine Wissenschaft. Mag sein, dass der Begriff bei Java-Programmierern so verwendet wird, aber ansonsten ist es grob falsch. Was Ihr erklärt, ist weder dynamic binding noch late binding - was trotz des gemeinsamen Wortes binding zwei Paar Schuh sind-, sondern einfach ein Beispiel für ad-hoc Polymorphismus per Vererbung oder Polymorphismus allgemein.
  • Ihr könnt die anderen Begriffe in der englischsprachigen Wikipedia nachsehen [1] oder googlen. Bitte nehmt bald Stellung, damit der Artikel korrigiert werden kann.
Hm, dachte weil wir es sowohl in Java in unserer Vorlesung hatten, als auch Bjarne Stroustrup den Begriff für die späte Bindung in seinem Buch The C++ Programming Language benutzt, müsste da schon was dran sein. Nur... was soll man jetzt tun? Den Artikel in seiner jetzigen Form verschieben und von hier höchstens als Anmerkung drauf verweisen? Dann würde ich aber diejenigen bitten, vorher ihre Vorstellung des "richtigen" dynamischen Bindens hier als brauchbaren Artikel zu hinterlassen ;) --Prometeus 20:52, 3. Feb 2006 (CET)
Das klingt gut. Euer Text enthält ja richtige Information. Der Vorschlag wäre dann, zunächst dynamische Bindung nach Art von Shells zu erklären und unten einen Link "Darunter wird auch ... verstanden" und unter ... Eure Seite zu verlinken. Als Namen für ... schlage ich Dynamic Dispatch vor, bin mir da aber nicht 100% sicher. Was meint Ihr?

Also der Artikel sieht jetzt so richtig schlecht aus. Warum muss man sich immer an der engl. Version orientieren? Da muss auch nicht alles immer richtig sein... Statische und dynamische Bindung haben zentral was mit C++ und Java zu tun.

Statische und dynamische Bindung haben zentral was mit C++ und Java zu tun. Wie oben mehrfach erklärt ist das falsch. Wenn Du konkrete Kritik hast, nenn die doch. Ich werde den Artikel jedenfalls wie mit Benutzer:Prometeus besprochen überarbeiten.

Ihr seid einfach nur peinlich. Der Artikel MUSS Java und C++ zentral beinhalten, andernfalls ist der Artikel ganz einfach falsch. Ihr tragt so nur zu der weiteren Unglaubwürdigkeit der Wikipedia bei...

Statische und dynamische Bindung würds auch ohne Java und C++ geben. Dies sind ja nur Programmiersprachen die dieses Konzept umsetzen.

Was mich ankot** bei der Wikipedia sind diese selbsternannten Experten, die meinen alles besser zu wissen. Da wird nicht konstruktiv diskutiert, sondern nur versucht den eigenen Standpunkt mit allen rhetorischen Mitteln zu verteidigen. Ich kenne dyn. Binden auch aus dem Zusammenhang mit Java und auch so, wie es auf der Seite zur Zeit beschrieben ist. my three cents.

---

Dynamic Binding und Dynamic Dispatch sind zwei vollständig unterschiedliche Dinge. Dynamic Dispatch meint tatsächlich den Methodendispatch zur Laufzeit anhand der Klassen der Argumente. Dynamic Binding hingegen meint eine Bindung in einer 'dynamischen Umgebung' (dynamic environment). Für Variablen bedeutet das, dass es Hierarchien von Umgebungen geben kann und die Bindungen schattiert werden können. Diese Bindungsumgebungen können zur Laufzeit erzeugt werden. Deswegen 'dynamisch'. Variablen können zur Laufzeit neu gebunden werden. Die Bindung einer Variable wird erst zur Laufzeit ermittelt. Das Konzept geht im Bereich der Programmiersprachen mindestens bis auf die erste Lisp-Implementierung Ende der 1950ger Jahre zurück. In den ersten Lisp-Implementationen gab es nur dynamische Bindung. Später wurde mit Scheme und Common Lisp (Ende der 1970ger, Anfang der 1980ger Jahre) die lexikalische (statische) Bindung als Standard eingeführt.

Mit statischer Bindung in Common Lisp:

(let ((fn (let ((a 1))
              (lambda () a))))
   (let ((a 10))
     (funcall fn)))

-> Ergebnis ist 1.

Mit dynamischer Bindung in Common Lisp:

(let ((fn (let ((a 1))
              (declare (special a))
              (lambda ()
                 (declare (special a))
                 a))))
    (let ((a 10))
         (declare (special a))
         (funcall fn)))

 -> Ergebnis ist 10.

In unterem Beispiel wird die Funktion aufgerufen und der Wert der Variable A ermittelt. Da wir es mit dynamischer Bindung zu tun haben, wird nicht die Umgebung der Definition (A = 1), sondern die Laufzeitumgebung (A = 10) benutzt. -RJ