Hauptmenü öffnen

Dynamische Typisierung (engl. dynamic typing) bezeichnet ein Schema der Typisierung von Programmiersprachen.

Bei der dynamischen Typisierung finden Typ-Prüfungen (etwa des Datentyps von Variablen) vorrangig zur Laufzeit eines Programms statt. Im Gegensatz wird bei der statischen Typisierung die Typ-Prüfung bereits zum Zeitpunkt der Kompilierung durchgeführt.

Skriptsprachen wie JavaScript, Python und Ruby verwenden die dynamische Typisierung.

BeispieleBearbeiten

PythonBearbeiten

Hier eine interaktive Python-Sitzung:

>>> a = 1                         # a enthält durch Zuweisung eine ganze Zahl
>>> a += 1.0                      # addiert die Gleitkommazahl 1.0 und legt neuen Wert (mit anderem Typ) in a ab
>>> a.upper()                     # Scheitert: a ist keine Zeichenkette
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'float' object has no attribute 'upper'
>>> a                             # gibt den Wert von a aus
2.0
>>> a = "jetzt ist a ein String"
>>> a += 1                        # Scheitert: Inhalt von a ist jetzt ein String
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
>>> a.upper()
'JETZT IST A EIN STRING'

In Python haben Variablen keinen Typ, lediglich die Objekte, auf welche die Variablen referenzieren. Die Fehlermeldung „has no attribute 'upper' “ illustriert, dass der Python-Interpreter nicht unbedingt einen String verlangt, sondern mit einem beliebigen Objekt mit einer Methode upper zufrieden wäre (siehe Duck-Typing).

BooBearbeiten

Beispiel von der Projektseite[1]

 1 d as duck
 2 
 3 d = 5           // Derzeitig als Integer definiert.
 4 print d
 5 d += 10         // Es kann alles, was ein Integer kann.
 6 print d
 7 d = "Hi there"  // Wird zu einem String gesetzt.
 8 print d
 9 d = d.ToUpper() // Jetzt kann es alles, was ein String kann.
10 print d

Ausgabe:


5
15
Hi there
HI THERE

Erläuterung des BeispielsBearbeiten

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 dritten Zeile wird d der Integerwert 5 zugewiesen.

In Zeile 7 wird 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.

Siehe auchBearbeiten

EinzelnachweiseBearbeiten

  1. Boo-Projektseite (Memento des Originals vom 3. Februar 2007 im Internet Archive)   Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/boo.codehaus.org, Stand 19. April 2006, 19.52 Uhr