Wie unterscheidet sich die Eingabe von Enten vom alten Typ "Variante" und / oder den Schnittstellen?

Ich sehe immer wieder die Redewendung "duck typing" und bin sogar auf ein oder zwei Codebeispiele gestoßen. Ich bin viel zufau beschäftigt meine eigenen Nachforschungen zu machen, kann mir jemand kurz sagen:

der Unterschied zwischen einem 'Ententyp' und einem 'Variantentyp' der alten Schule und Geben Sie ein Beispiel dafür, wo ich es vorziehen könnte, dass duck anstelle von variant eingibst, undBieten Sie ein Beispiel für etwas, das ich @ würhabe zu verwenden, um Ente Typisierung zu erreichen?

Ich will nicht durch Zweifel an der Macht dieses 'neuen' Konstrukts wie ein Geflügel wirken, und ich lehne es auch nicht ab, die Forschung zu betreiben, aber ich mache mir Sorgen über den ganzen Flock-Hype, den ich gesehen habe darüber in letzter Zeit. Es sieht aus wieNei Tippen (auch bekannt als dynamisches Tippen) für mich, sodass ich die Vorteile nicht sofort sehe.

ADDENDUM: Danke für die bisherigen Beispiele. Es scheint mir, dass die Verwendung von so etwas wie 'O-> can (Blah)' einer Reflexionssuche entspricht (was wahrscheinlich nicht billig ist) und / oder ungefähr dem Sprichwort entspricht (O ist IBlah), das der Compiler könnte Sie können nach Ihnen suchen, letzteres hat jedoch den Vorteil, dass Sie meine IBlah-Schnittstelle von Ihrer IBlah-Schnittstelle unterscheiden können, während die beiden anderen dies nicht tun. Zugegeben, viele winzige Interfaces für jede Methode zu haben, würde unsauber werden, aber dann kann man auch nach vielen einzelnen Methoden suchen ...

... also wieder verstehe ich es einfach nicht. Ist es eine fantastische Zeitersparnis oder dasselbe alte Ding in einem brandneuen Sack? Wo ist das Beispiel, dass erfordert Ente eingeben?