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.

Abstufungen von Typisierung

Absteigend, nach Strenge der jeweiligen Typisierung sortiert:

Vor- und Nachteile

Vorteile strenger Typisierung sind zum Beispiel

Nachteile sind unter anderem:

Realisierung strenger Typisierung in verschiedenen Programmiersprachen

Siehe auch

Einzelnachweise

  1. Christoph-Probst.com: Informelle Methode und Compilertechniken zur Aufdeckung von Programmierfehlern (Memento vom 20. Januar 2010 im Internet Archive) (PDF)
  2. Data Types - The Rust Programming Language. Abgerufen am 2. November 2018 (englisch). 
  3. PHP: Funktionsparameter, Unterpunkt „Strenge Typisierung“ - Manual. Abgerufen am 20. Dezember 2017. 
  4. Category:Forth - Rosetta Code. Abgerufen am 2. November 2018 (englisch). 
  5. Daniel Larson : Introduction to strongly Typed Data Sets (Memento des Originals vom 25. März 2016 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.csharp-station.com, 25. Januar 2003, abgerufen am 22. März 2016
  6. ETH Oberon White Paper, ETH Zürich, 13. März 2000, abgerufen am 22. März 2016
  7. Massimo Felici, Karama Kanoun, Alberto Pasquini: Computer Safety, Reliability and Security, 18th International Conference, SAFECOMP'99, Toulouse, France, 27. bis 29. September 1999, Proceedings Lecture Notes in Computer Science, Seite 195, Springer, 2003, ISBN 9783540482499
  8. Niklaus Wirth: The Programming Language Oberon, ETH Zürich, 1. Oktober 1990, abgerufen am 22. März 2016