Dynamische Typisierung - LinkFang.de





Dynamische Typisierung


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

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

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

Beispiele

Python

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

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

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

Einzelnachweise

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


Kategorien: Programmierung | Datentyp

Quelle: Wikipedia - http://de.wikipedia.org/wiki/Dynamische Typisierung (Vollständige Liste der Autoren des Textes [Versionsgeschichte])    Lizenz: CC-by-sa-3.0

Änderungen: Alle Bilder mit den meisten Bildunterschriften wurden entfernt. Ebenso alle zu nicht-existierenden Artikeln/Kategorien gehenden internen Wikipedia-Links (Bsp. Portal-Links, Redlinks, Bearbeiten-Links). Entfernung von Navigationsframes, Geo & Normdaten, Mediadateien, gesprochene Versionen, z.T. ID&Class-Namen, Style von Div-Containern, Metadaten, Vorlagen, wie lesenwerte Artikel. Ansonsten sind keine Inhaltsänderungen vorgenommen worden. Weiterhin kann es durch die maschinelle Bearbeitung des Inhalts zu Fehlern gerade in der Darstellung kommen. Darum würden wir jeden Besucher unserer Seite darum bitten uns diese Fehler über den Support mittels einer Nachricht mit Link zu melden. Vielen Dank!

Stand der Informationen: August 201& - Wichtiger Hinweis: Da die Inhalte maschinell von Wikipedia übernommen wurden, ist eine manuelle Überprüfung nicht möglich. Somit garantiert LinkFang.de nicht die Richtigkeit und Aktualität der übernommenen Inhalte. Sollten die Informationen mittlerweile fehlerhaft sein, bitten wir Sie darum uns per Support oder E-Mail zu kontaktieren. Wir werden uns dann innerhalb von spätestens 10 Tagen um Ihr Anliegen kümmern. Auch ohne Anliegen erfolgt mindestens alle drei Monate ein Update der gesamten Inhalte.