Starke Typisierung

Starke Typisierung, auch strenge Typisierung genannt (beide nur teilweise lehnübersetzt aus dem englischen Ausdruck strong typing), ist ein Prinzip bei der Typisierung von Programmiersprachen. In der Fachliteratur finden sich unterschiedlich strenge Definitionen. Man kann aber generell zwischen Sprachen ohne oder mit sehr schwacher Typisierung (z. B. PHP) und solchen mit stärkerer Typisierung (u. a. C++) unterscheiden. Oft hängt Strenge mit statischer Typisierung zusammen und erweitert diese.

Bei dynamischer Typisierung im Rahmen von Referenzvariablen, Vererbung oder Polymorphie – letztere können oft erst zur Laufzeit der entsprechenden Programme überprüft werden –, gibt es sehr große Unterschiede in der Stärke der Typisierung. Programmiersprachen, die bei dynamischen Variablen nur sehr schwach typisiert sind, wie C, erlauben die Zuweisung von beliebigen Adressen an Referenzvariablen. Sehr rigoros entworfene Programmiersprachen erlauben nur streng kompatible Zuweisungen, viele Programmiersprachen tolerieren jedoch aus praktischen Erwägungen implizite Typenumwandlungen ohne oder mit vernachlässigbarem Informationsverlust.

Starke Typisierung wird meist mehr als Vergleich denn als absolute Bezeichnung genutzt: Sprache X ist stärker/strenger typisiert als Sprache Y. Bei solchen Vergleichen spielt sehr oft das Vorhandensein impliziter oder auch expliziter Typumwandlungen eine Rolle; so ist PHP deshalb schwächer typisiert als C, weil PHP fast überall implizit umwandelt, C jedoch nur bei ähnlichen Typen. C++ ist wiederum deshalb stärker typisiert als C, da z. B. implizite Typumwandlungen von void* in beliebige andere Zeiger nicht erlaubt sind. Noch stärker typisiert ist wiederum Object Pascal, das im Gegensatz zu C++ keine impliziten Umwandlungen zwischen Boolean- und Integer-Werten vornimmt. Haskell und Rust erlauben noch nicht einmal implizite Typumwandlungen von Ganz- in Gleitkommazahlen.


Developed by StudentB