Dynamische Typisierung
Van Wikipedia, de gratis encyclopedie
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]- Golo Roden – Programmierkonzepte, Teil 4: Dynamische Typisierung vom 25. Januar 2016 auf heise online
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Boo-Projektseite ( vom 3. Februar 2007 im Internet Archive), Stand 19. April 2006, 19.52 Uhr