Typisierung

Im Kontext mit Datentypen wird bei der Typisierung differenziert in statische und dynamische Typisierung. Bei der statischen Typisierung werden die Typinformationen bei der Übersetzung des Programmcodes durch den Compiler hinzugefügt. Im Gegensatz ergeben sich dynamische Typinformationen einer Variablen erst zur Laufzeit.


Grundlegend für das Verständnis der verschiedenen Arten der Typisierung ist die Unterscheidung der Begriffe Typ, Wert und (Variablen-)Identifikator. Durch einen (Variablen-) Identifikator (kurz: Variable) wird etwas benannt, was manipuliert werden kann. Ein Wert beschreibt aus programmiertechnischer Sicht den aktuellen Inhalt eines Speicherbereiches, der einer Variablen zugewiesen ist.

Programmiersprachen werden entsprechend der Rolle, die die Typisierung dabei spielt, in zwei Klassen unterschieden: statisch und dynamisch getypte Sprachen. Statisch bedeutet hier, dass bereits während der Übersetzung des Programmcodes durch den Compiler bestimmte Typinformationen ausgewertet werden können. Im Gegensatz dazu bedeutet dynamisch hier, dass erst zur Laufzeit des Programms das Laufzeitsystem diese Typinformationen auswertet.

In statisch getypten Programmiersprachen wie beispielsweise PASCAL, MODULA, den Programmiersprachen C und C++, wird ein Typ gerade den Variablen in einer expliziten Deklaration zugewiesen und legt fest, wie der Wert einer Variablen interpretiert und manipuliert werden kann. In dynamisch getypten Programmiersprachen wie LISP, SMALLTALK und Python) ist dies gerade nicht der Fall. Dort werden die Typinformationen nicht mit der Variablendeklaration abgelegt, sondern der Wert einer Variablen enthält seine Typinformationen. Die Gleichsetzung der Variablen mit ihrem Wert (z.B. "Variable ist ein int-Wert") ist hier nicht mehr möglich. Es muss jetzt gedeutet werden: "an einer bestimmten Stelle des Programmablaufes hat die Variable einen int-Wert". Eine Konsequenz ist dabei also, dass Variablen oder Funktionsargumente während der Laufzeit Werte verschiedener Typen aufnehmen können und dann entsprechend der Wertebelegung anders manipuliert werden.

Funktionen können nun so programmiert werden, dass sie abhängig von der Typisierung ihrer Argumente unterschiedliche Aktionen durchführen können (z.B. ist "+" auf int-Argumenten ist anders definiert als auf real-Argumenten und liefert unterschiedliche Werte von Typen als Funktionswerte ab). Solche Variablen, Argumente und Funktionen nennt man polymorph ("vielgestaltig").

Bei den Vorteilen der beiden Typisierungsarten (statisch und dynamisch) stehen Effizienz und Fehlererkennung auf der einen Seite der Flexibilität der Programmentwicklung auf der anderen Seite gegenüber.

Informationen zum Artikel
Deutsch: Typisierung
Englisch:
Veröffentlicht: 25.06.2017
Wörter: 359
Tags: #Datentypen
Links: C++, Compiler, content, Datentyp, Fehlererkennung