Dynamische Typisierung

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Variant (Datentyp))
Zur Navigation springen Zur Suche springen

Dynamische Typisierung (engl. dynamic typing) bezeichnet ein Schema der Typisierung von Programmiersprachen, bei der Typ-Prüfungen (etwa des Datentyps von Variablen) vorrangig zur Laufzeit eines Programms stattfinden. Im Gegensatz dazu 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.

Beispiele[Bearbeiten | Quelltext bearbeiten]

Python[Bearbeiten | Quelltext 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 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).

Boo[Bearbeiten | Quelltext bearbeiten]

Beispiel von der Projektseite[1]

d as duck

d = 5           // Derzeitig als Integer definiert.
print d
d += 10         // Es kann alles, was ein Integer kann.
print d
d = "Hi there"  // Wird zu einem String gesetzt.
print d
d = d.ToUpper() // Jetzt kann es alles, was ein String kann.
print d

Ausgabe:


5
15
Hi there
HI THERE

Erläuterung des Beispiels[Bearbeiten | Quelltext 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 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 auch[Bearbeiten | Quelltext bearbeiten]

Weblinks[Bearbeiten | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

  1. Boo-Projektseite (Memento vom 3. Februar 2007 im Internet Archive), Stand 19. April 2006, 19.52 Uhr