Das Kefk Network Wiki befindet sich im Testbetrieb.
Starke Typisierung
Aus Kefk.
Starke Typisierung (engl. strong typing) bezeichnet ein Schema der Typisierung von Programmiersprachen. In der Literatur wird auch von strenger Typisierung gesprochen.
Bei der starken Typisierung bleibt eine einmal durchgeführte Bindung zwischen Variable und Datentyp bestehen, es wird auch (möglichst) keine implizite Typkonvertierung vorgenommen.
Eine nicht stark typisierte Sprache bezeichnet man als schwach typisiert.
Das Konzept der starken Typisierung ist nicht eindeutig definiert. In der Literatur finden sich diverse Regeln, die sich teilweise widersprechen. Versucht man alle bisher in der Literatur aufgestellten Regeln für starke Typisierung auf bekannte Programmiersprachen anzuwenden, hält keine Sprache dieser Überprüfung stand:
Eine Sprache ist stark typisiert, wenn
- Datentypen an Variablennamen anstatt an diskreten Werten geknüpft sind - die passende Terminologie dafür wäre statische Typisierung (static typing) im Gegensatz zur dynamischen Typisierung (dynamic typing);
- sie Typüberprüfungen zur Compile-Zeit enthält;
- Typkonvertierungen verboten sind;
- Typkonvertierungen explizit durchgeführt werden müssen;
- die Sprache keine Mechanismen besitzt, um das Typ-System zu umgehen, etwa type casts (Typumwandlungen) in C);
- es ein komplexes, fein abgestuftes System an Typen mit Sub-Typen gibt;
- der Datentyp eines Objektes fix ist und sich während der gesamten Lebensdauer des Objektes nicht verändern kann (auch diese Eigenschaft wird oftmals statische Typisierung genannt);
- das Typ-System das Laufzeitverhalten eines Programmes garantieren kann.
Vorteile durch starke Typisierung
- Wenn Typkonvertierungen wie integer->float explizit durchgeführt werden müssen, ist der Laufzeitaufwand, der eine solche Konvertierung darstellt, im Programm direkt zu sehen.
- Durch den Verzicht auf implizite Typkonvertierungen werden Mechanismen zum Überladen von Operatoren und Funktionen leichter durchschaubar.
Beispiele
Stark typisierte Sprachen (Keine der genannten Sprachen genügt allen Definitionen):
- Ada
- Java
- C / C++ (zahlreiche implizite Typumwandlungen)
- Pascal (implizite Typumwandlung integer->float)
- Python (keine Bindung zwischen Variable und Datentyp)
- Ruby
- Haskell
Schwach typisierte Sprachen:
Weblinks
| Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Starke_Typisierung, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. |
