- Statische Typisierung
-
Statische Typisierung (engl. static typing) bezeichnet ein Schema der Typisierung von Programmiersprachen.
Bei der statischen Typisierung wird im Gegensatz zur dynamischen Typisierung der Datentyp von Variablen und anderen Programmbausteinen schon während der Kompilierung festgelegt. Dies kann durch Typinferenz geschehen oder durch explizite Deklaration. Statische Typisierung kann durch Starke Typisierung erweitert werden.
Vorteile:
- Bestimmte Fehler können bereits zur Übersetzungszeit erkannt werden und müssen nicht zur Laufzeit geprüft werden. Damit werden Fehler auch in selten benutzten Programmteilen, die bei Tests oft nicht durchlaufen werden, gefunden.
- Die Effizienz von Programmen wird durch die Reduzierung des Rechenaufwands für Typüberprüfungen zur Laufzeit ebenfalls gesteigert.
- Zahlreiche Optimierungen hängen von den zur Übersetzungszeit vorhandenen Informationen ab. So ermöglicht statische Typisierung zum Beispiel das direkte Einfügen von Maschinencode statt einem Methoden- oder Funktionsaufruf.
Nachteile:
- Teilweise sind die Typen erst zur Laufzeit bekannt, bei Sprachen mit statischer Typisierung bedeutet dies dann meist einen gewissen Aufwand, da das Typsystem "umgangen" werden muss.
- Die Compiler sind aufwendiger, weil dort mehr Aufwand für die Analyse anfällt.
- Statische Typisierung ist weniger flexibel (erschwert z.B. die Erstellung generischer Container, siehe C++-Standardbibliothek).
Beispiele
Nach dieser Definition sind beispielsweise die folgenden Sprachen statisch typisiert:
Sprachen wie PHP und Ruby hingegen sind dynamisch typisiert.
Alternative Definition
Eine alternative Definition des Begriffs statische Typisierung betrachtet Typprüfungen: Eine Sprache ist genau dann statisch typisiert, wenn sie keine dynamischen Typprüfungen, also solche, die zur Laufzeit geschehen, aufweist. Ansonsten nennt man sie dynamisch typisiert.
Nach dieser Definition wäre beispielsweise Java dynamisch typisiert.
Siehe auch
Wikimedia Foundation.