Dynamische Typisierung

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Dynamische Typisierung (engl. dynamic typing) bezeichnet den Umstand, dass Typprüfungen vorrangig zur Laufzeit eines Programms durchgeführt werden.

Vor allem Skriptsprachen wie z. B. JavaScript, Python und Ruby verwenden die dynamische Typisierung.

Beispiele[Bearbeiten]

Python[Bearbeiten]

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 die die Variablen referenzieren, besitzen einen Typ. 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).

Boo[Bearbeiten]

Beispiel von der Projektseite[1]

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[Bearbeiten]

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.

Siehe auch[Bearbeiten]

Quellen[Bearbeiten]

  1. Boo-Projektseite, Stand 19. April 2006, 19.52 Uhr