Das Kefk Network Wiki befindet sich im Testbetrieb.
Dynamische Typisierung
Aus Kefk.
Dynamischen Typisierung ist die Zuteilung des Typs einer Variablen zur Laufzeit eines Programmes.
Im Gegensatz zur statischen Typisierung erspart dies die händische Typisierung, bringt aber gewisse Laufzeitnachteile mit sich und erschwert die Fehlersuche. So ist es zum Beispiel notwendig, in Tests sämtliche Programmpfade zu durchlaufen, um Typisierungsfehler zu finden die bei statischer Typisierung vom Compiler schon während der Übersetzung gefunden werden.
Vor allem Skriptsprachen verwenden die dynamische Typisierung.
Inhaltsverzeichnis |
Duck Typing
Duck Typing ist eine spezielle Form der dynamischen Typisierung.
Der Begriff „Duck Typing“ wurde Anfang August 2003 von Dave Thomas in der Ruby-Community geprägt. Er geht auf James Whitcomb Rileys Gedicht
„When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.“
| Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Dynamische_Typisierung, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. |
zurück, was übersetzt bedeutet: „Wenn ich einen Vogel sehe, der wie eine Ente läuft, wie eine Ente schwimmt und wie eine Ente schnattert, dann nenne ich diesen Vogel eine Ente.“
Dieser Ausspruch verdeutlicht gut den hinter dieser Technik stehenden Gedanken. Wird eine Variable mit einem Wert belegt, beispielsweise mit einer Gleitkommazahl, dann ist der Datentyp der Variable selbst auch eine Gleitkommazahl und beispielsweise kein String. Es wird vom Compiler anhand der zugewiesenen Werte ermittelt, welchen Datentyp die Variable besitzt.
Beispiel für die Programmiersprache Ruby
class Duck
def sound
puts 'Quak'
end
end
class Cat
def sound
puts 'Miau'
end
end
duck = Duck.new
duck.sound
duck = Cat.new
duck.sound
Ausgabe:
Quak Miau
Beispiel für die Programmiersprache Boo
Beispiel von der Projektseite ([1]), Stand 19. April 2006, 19.52 Uhr
d as duck d = 5 // currently set to an integer. print d d += 10 // It can do everything an integer does. print d d = "Hi there" // sets it to a string. print d d = d.ToUpper() // It can do everything a string does. print d
Ausgabe:
5 15 Hi there HI THERE
Erläuterung des Beispiels
Es wird die Variable d angelegt und ihr wird der Datentyp duck zugewiesen. Dies ist kein richtiger Datentyp, sondern nur eine Art Container, der andere Datentypen annehmen kann. In der zweiten Zeile wird d der Integerwert 5 zugewiesen.
In Zeile 6 wird ihr die Zeichenkette Hi there zugewiesen. In anderen Programmiersprachen wie beispielsweise C# oder C++, würde dies jetzt zu einem Compiler-Fehler führen.
Der Boo-Compiler hingegen erkennt am Datentyp duck, dass sich der Datentyp der Variable d ändern kann.
